2022. 5. 10. 18:10ㆍdocker
Docker(=/ container)
Container의 핵심 기술
●Namespace : isolation(격리)로써 기본적으로 프로세스를 격리시켜준 핵심 기술
▶ IPC NS : Inter-Process Communication으로 떨어져 있는 프로세스들을 소통하게 한다.
▶ Network NS : Network Namespace
Docker 설치할 VM 구성
~/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 연결 구성
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/ (우분투로 설치할 경우)
Install Docker Engine on Ubuntu
docs.docker.com
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
원래 docker는 기본적으로 root 사용자로 쓸 수 있게 해놓지만 root 사용자가 아닌
기존 사용하던 vagrant 사용자를 docker 설치로 생성된 그룹에 넣어주어 vagrant 사용자로 docker 사용을 가능케 한다.
터미널 환경 구성
zsh 쉘 설치
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
zshrc 쉘 서식 중 oh-my-zsh 설치
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 파일 수정
(set nu:)
73 plugins=(
74 git
75 zsh-autosuggestions
76 zsh-completions
77 )
리소스 재시작
source ~/.zshrc
컨테이너 이미지
(registry/)repository/name:tag
컨테이너 커널(운영체제os)x 호스트의 커널을 이용
리눅스의 컨테이너와 윈도우의 컨테이너는 다름 호환 되지 않는다.
● 리눅스 배포판 이름으로된 이미지들
▶ ubuntu
▶ centos
▶ rocky
▶ debian
▶ alpine
▶ busybox
▶ amazonlinux
▶ oraclelinux
...
-> 이러한 이미지들을 Base Image 라고 한다.
컨테이너의 Lifecycle
create -> start -> (pause) -> (unpause) -> (kill) -> stop -> rm
run ---------->
- run은 앞에 creat와 srart에 과정을 한번에 수행하게 한다.
> application이 종료되면 컨테이너 또한 종료(stop)된다.
● 옵션
▶ -i : STDIN 유지
▶ -t : Terminal 할당
▶ -d : Detach
- -it 옵션은 Shell을 실행하는 이미지에서 대부분 같이 붙어서 사용된다.
(옵션을 안 붙일 경우 사용을 할 수 있는게 없어서 종료된다. )
- -d 옵션은 application이 계속적으로 실행되어야 할 때 사용된다.