Docker 원격 구성

Docker 원격 구성

목표

Mac 에서 Docker 관련 커맨드(ex.docker ps)를 실행하면 Local 상의 Docker가 아닌 원격 서버의 Docker 가 실행되게끔 설정하고자 함

원격 Docker 설정

Docker 데몬 수정/추가

sudo /etc/docker/daemon.json
{
  "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}

재시작

sudo systemctl restart docker

테스트

curl http://192.168.0.5:2375/containers/json

에러발생 시

Docker 실행 플래그와 /etc/docker/daemon.json 설정 충돌


following directives are specified both as a flag and in the configuration file: hosts: (from flag: [fd://], from file: [tcp://0.0.0.0:2375 unix:///var/run/docker.sock])
Feb 17 04:57:31 ubuntu systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Feb 17 04:57:31 ubuntu systemd[1]: docker.service: Failed with result 'exit-code'.
Feb 17 04:57:31 ubuntu systemd[1]: Failed to start docker.service - Docker Application Container Engine.
Feb 17 04:57:33 ubuntu systemd[1]: docker.service: Scheduled restart job, restart counter is at 3.
Feb 17 04:57:33 ubuntu systemd[1]: docker.service: Start request repeated too quickly.
Feb 17 04:57:33 ubuntu systemd[1]: docker.service: Failed with result 'exit-code'.
Feb 17 04:57:33 ubuntu systemd[1]: Failed to start docker.service - Docker Application Container Engine.

Docker 서비스 파일 수정

sudo vim /usr/lib/systemd/system/docker.service

AS-IS

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

으음...

-H fd:// : Systemd 소켓 활성화 모드

Docker가 systemd의 소켓 액티베이션(Socket Activation) 기능을 사용하여 실행됨

/lib/systemd/system/docker.socket 파일에서 소켓을 정의하고 관리함

보안상 안전하며, systemd가 필요한 경우에만 Docker를 시작하도록 할 수 있음

TO-BE (-H fd:// 제거)

ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock

음..

Docker가 Containerd(container runtime)를 통해 컨테이너를 실행하도록 설정


적용

sudo systemctl daemon-reload
sudo systemctl restart docker

Mac 설정

환경변수 설정

export DOCKER_HOST=tcp://192.168.0.5:2375

환경변수 영구 적용

vim ~/.zshrc
export DOCKER_HOST=tcp://192.168.0.5:2375

++

사용하는 쉘 확인

echo $SHELL