[Cloud] Docker ๊ฐœ์š”

MeltingOlafยท2022๋…„ 5์›” 9์ผ

[Cloud]

๋ชฉ๋ก ๋ณด๊ธฐ
5/25

โญ๏ธ ๋„์ปค

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹ ์†ํ•˜๊ฒŒ ๊ตฌ์ถ•, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ”Œ๋žซํผ

Container

  • ํ˜ธ์ŠคํŠธ OS ์ƒ์— ๋…ผ๋ฆฌ์ ์ธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ์„ ํ•˜๋‚˜๋กœ ๋ชจ์•„, ๋ณ„๋„์˜ ์„œ๋ฒ„์ธ๊ฒƒ ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ
  • ํ˜ธ์ŠคํŠธ OS์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌ์‹œํ‚ค๊ณ , ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉ

Container ํ•ต์‹ฌ ๊ธฐ์ˆ 

  • Cgroup: Control Group(๋ฆฌ์†Œ์Šค ์–‘)
  • Namespace: Isolation
    - IPC NS: IPC
    - PID NS: Process
    - Network NS: Network
    - UID NS: User/Group
    - Mount NS: Mount Point
    - UTS NS: Hostname
  • Layered Filesystem

Docker = Docker Engine

Docker CE: Community Edition
Docker EE: Enterprise Edition

Vagrant ํ™˜๊ฒฝ ๊ตฌ์„ฑ

`~/vagrant/container/Vagrantfile

Vagrant.configure("2") do |config|
	# Define VM
	config.vm.define "docker" do |centos|
		centos.vm.box = "ubuntu/focal64"
		centos.vm.hostname = "docker"
		centos.vm.network "private_network", ip: "192.168.100.100"
		centos.vm.provider "virtualbox" do |vb|
			vb.name = "docker"
			vb.cpus = 2
			vb.memory = 4096
		end
	end
end

~/.ssh/config

Host docker
    HostName 192.168.100.100
    User vagrant
    IdentityFile C:\Users\Playdata\vagrant\container\.vagrant\machines\docker\virtualbox\private_key

Docker Engine ์„ค์น˜

https://docs.docker.com/engine/install/ubuntu/

$ sudo apt update
$ sudo apt install ca-certificates curl gnupg lsb-release

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  • docker-ce: Docker Engine
  • docker-ce-cli: docker command
  • containerd.io: Container Runtime Interface
  • docker-compose-plugin: Docker Compose
$ sudo usermod -aG docker vagrant

ํ„ฐ๋ฏธ๋„ ํ™˜๊ฒฝ ๊ตฌ์„ฑ

sudo apt install zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

~/.zshrc

...
ZSH_THEME="agnoster"
...

https://github.com/powerline/fonts

source ~/.zshrc
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions

~/.zshrc

 73 plugins=(
 74         git
 75         zsh-autosuggestions
 76         zsh-completions
 77 )
source ~/.zshrc

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€

(registry/)repository/name:tag

Lifecycle

create -> start -> (pause) -> (unpause) -> (kill) -> stop -> rm
run ---------->

application์ด ์ข…๋ฃŒ ์ปจํ…Œ์ด๋„ˆ๋„ ์ข…๋ฃŒ(stop)

  • -i: STDIN ์œ ์ง€
  • -t: Terminal ํ• ๋‹น
  • -d: Detach

-it ์˜ต์…˜์€ Shell์„ ์‹คํ–‰ํ•˜๋Š” ์ด๋ฏธ์ง€์—์„œ ์‚ฌ์šฉ: centos, ubuntu ...
-d ์˜ต์…˜ application์ด ๊ณ„์†์ ์œผ๋กœ ์‹คํ–‰๋˜์–ดํ– ํ•  ๋•Œ: httpd ...

๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ ์ด๋ฆ„์œผ๋กœ๋œ ์ด๋ฏธ์ง€

  • ubuntu
  • centos
  • rocky
  • debian
  • alpine
  • busybox
  • amazonlinux
  • oraclelinux
  • ...
    -> Base Image
profile
How R U Today :)

0๊ฐœ์˜ ๋Œ“๊ธ€