Docker 설치 및 설정
Mac, Windows 주의사항
Docker Desktop 이 조건부 유료가 되었음
맥의 경우 Docker Desktop을 설치를 해도 Appication에서는 Docker라고 나와서 Docker Desktop을 설치하지 않았다고 착각할 수도 있음.
To Uninstall: Docker 프로그램 실행 후 버그모양 아이콘에서 삭제를 하면 됨
Click On Docker Icon
Select Preferences
Select Bug Icon for the Troubleshoot menu (Bomb Icon in older Docker UI)
Select Uninstall
Ubuntu에 docker 설치
아래 문서 참고해 설치하면 됨.
Set up the repository
Install Docker Engine
sudo apt-get update
sudo apt-get install -y \
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=amd64 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-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
grep -q docker /etc/group || sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
#docker run hello-world
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
Ubuntu 에 docker 설치하고 후속작업
루트가 아닌 사용자로 Docker 관리 : docker
그룹 을 만들고 사용자를 추가
부팅 시 시작하도록 Docker 구성
Docker 데몬이 연결을 수신하는 위치 구성 : 원격 호스트에서 접속을 허용할 경우 설정하면 됨.
Docker 로깅 드라이브
기본은 json-file. 이전 버전의 Docker와 Docker가 Kubernetes의 런타임으로 사용되는 상황에서 이전 버전과의 호환성을 유지하기 위해 json 파일 로깅 드라이버(로그 회전 없음)를 기본값으로 유지합니다. 이 경우 로그로테이션을 수행하지 않으므로 디스크 공간이 꽉 차는 것을 방지하려면 local log-driver 사용할 것을 권장하고 있음.
옵션 | 설명 | 예시 값 |
---|---|---|
| 롤링되기 전의 최대 로그 크기입니다. 양의 정수 플러스 측정 단위를 나타내는 수식 ( |
|
| 존재할 수 있는 최대 로그 파일 수입니다. 로그를 롤링하여 초과 파일이 생성되면 가장 오래된 파일이 제거됩니다. 양의 정수입니다. 기본값은 5입니다. |
|
| 회전된 로그 파일의 압축을 토글합니다. 기본적으로 활성화되어 있습니다. |
|
새로 생성된 컨테이너에 변경 사항을 적용하려면 Docker를 다시 시작합니다. 기존 컨테이너는 새 로깅 구성을 사용하지 않습니다. Daemon 기본 설정파일은 /etc/docker/daemon.json
$ cat /etc/docker/daemon.json
{
"log-driver": "local",
"log-opts": {
"max-size": "10m"
}
}
$ sudo systemctl restart docker
$ docker info --format '{{.LoggingDriver}}'
Mac에 Docker 설치
먼저 brew를 사용해 Docker Client를 설치해줍니다. 기존에는 cask를 사용했었지만 현재 deprecated되어 그냥 brew로 설치하면 됩니다.
$ brew install docker
이렇게 하면 Docker Client만 설치된 것이기 때문에 실제 사용 시 서버에 연결할 수 없다는 에러가 발생합니다. Docker 데몬의 경우 Linux 커널의 기능을 사용하기 때문에 MacOS에서는 Client만 가지고 사용할 수 없습니다.
$ docker run hello-world
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
하지만 docker-machine을 통해 VM을 생성하면 연결가능합니다.
$ brew install docker-machine
VM을 생성해야 하므로 virtualbox가 설치되어있지 않다면 설치해야합니다.
$ brew install virtualbox
docker-machine 설치 후 docker-machine 을 시작하라는 메시지가 나온다. 메시지대로 따라한다.
To start docker-machine:
brew services start docker-machine
Or, if you don't want/need a background service you can just run:
/usr/local/opt/docker-machine/bin/docker-machine start default
==> Summary
/usr/local/Cellar/docker-machine/0.16.2: 12 files, 27.6MB
둘 다 설치가 됐으면 docker-machine을 생성합니다.
$ docker-machine create --driver virtualbox <name>
그 다음 환경변수를 설정합니다.
$ eval $(docker-machine env <name>)
Docker server가 VM으로 실행되고 있으므로 Docker를 통해 서버를 띄울 경우 docker-machine ls로 서버 정보를 확인 후 서버에 접근해야합니다.
# nginx container로 port 8888:80 매핑을 했을 경우
$ curl localhost:8888
curl: (7) Failed to connect to localhost port 8888: Connection refused
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Running tcp://192.168.99.100:2376 v19.03.12
$ curl 192.168.99.100:8888
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...