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