Docker Local daemon과 Remote API 같이 사용하기

2020. 3. 27. 22:57OS & Server/Docker

728x90

매번 까먹어서 매번 검색하는 게 너무 힘들어서 이젠 먼저 문서화부터 하는 걸 습관을 들여야 할 것 같습니다.

 

 

Running system

# uname -a
Linux developer 5.3.0-42-generic #34~18.04.1-Ubuntu SMP Fri Feb 28 13:42:26 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.4 LTS
Release:	18.04
Codename:	bionic

# docker -v
Docker version 19.03.8, build afacb8b7f0

 

 

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

/lib/systemd/system/docker.service 파일에는 도커 서비스를 정의한 파일입니다.

운영체제나 버전에 따라 위치가 다를 수 도 있기 때문에, Running System을 참고해주세요!

위 파일을 vim, vi, nano, gedit 등으로 열어서

 

 

# 저의 경우 16번째 라인에 ExecStart가 존재합니다.
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

ExecStart가 존재하는 라인이 있는데

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

기존에 이런식으로 정의되어 있습니다.

-H tcp://0.0.0.0:2375 를 추가해주시면 되는데, 23752376의 경우

포트번호가 많이 알려져 포트 포워딩으로 외부에 노출하는 경우 다른 유저나 공격자에 의해 접근되어 docker를 이용하거나 삭제하는 등의 행위를 유발하여 취약할 수 있으니 이점 유의해서 포트를 융통성 있게 바꿔주시면 됩니다.

 

저는 어차피 외부 포트포워딩을 오픈하지 않고 Pycharm 내에서만 사용할 예정이니 그냥 2376으로만 사용하겠습니다.

 

 

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

위 처럼 추가합니다.

 

 

 

추가한 설정을 적용하기 위해서 daemon을 다시 로드시키고 도커를 재시작하여야 합니다.

sudo systemctl daemon-reload
sudo service docker restart

이제 콘솔(터미널)에서 docker ps -a를 하면 

 

 

 

 

로컬 도커 데몬도 잘 동작하고

 

 

 

Pycharm에서도 잘 연결되는 것을 볼 수 있습니다.

 

OS 업데이트할 때마다 자꾸 풀리는 거 같은데 분명 저번에 서비스로 등록한 거 같은데 왜 자꾸 풀리지...

728x90