docker container(ubuntu)에서 docker 사용하는 법 - 호스트 docker 소켓을 컨테이너에 연결

Lucas.Choi·2024년 9월 30일

ubuntu 서버

목록 보기
4/5

Docker는 일반적으로 호스트 시스템에서 실행되기 때문에, container 내에서 docker를 실행하려면 호스트의 docker 소켓을 컨테이너에 연결해서 사용해야 한다. 이를 통해 호스트 docker 데몬을 직접 컨트롤할 수 있게 된다.

<우분투 컨테이너 실행>
container를 run 할 때, -v /var/run/docker.sock:/var/run/docker.sock 옵션을 추가해줘야 한다. 이는 호스트의 docker 소켓을 컨테이너에 마운트 하여, 컨테이너 내부에서 호스트의 docker 데몬을 사용할 수 있게 해 준다.

하지만... 이미 우분투 컨테이너는 실행되어 있고, commit 하여 container를 백업한 후, 이를 다시 옵션을 추가하여 run 시켜주는 방법이 있는데 번거롭고 귀찮?아서 다른 방법을 사용하기로 했다.

직접 container의 json 파일을 수정해 주는 것!!!!

# vim /var/lib/docker/containers/[앞부분이 CONTAINER ID를 포함하는 hash 값(탭 사용하면 편함)]/hostconfig.json

그러면 수행이... 안 된다....

알아보니 docker는 실행 중인 컨테이너에서 볼륨을 추가하거나 변경하는 기능이 없다고 한다. 그래서 hostconfig.json을 수동으로 수정하는 것을 docker 데몬에 의해 무시되거나 덮어 써질 수 있다.

결국 선택한 방법은 기존 컨테이너의 파일 시스템을 유지한 채로 docker 소켓을 마운트 해서 새로운 컨테이너를 실행하는 것이다.

  1. 마운트 하려는 컨테이너를 종료한다.
# docker stop [컨테이너명]
  1. 현재 컨테이너의 상태을 확인해 본다.
# docker ps -a
// 여기서 소켓을 마운트 하려는 CONTAINER_ID를 확인한다.
  1. 해당 컨테이너를 이미지로 저장한다.
# docker commit [CONTAINER_ID] [저장하고자 하는 이미지 명]

3-1. 기존 컨테이너를 없애고 수행하자니 불안한데, 기존의 컨테이너명을 동일하게 사용하고 싶어서 컨테이너명을 변경해 주었다.

# docker rename [컨테이너명] [바꾸고자 하는 컨테이너명]
  1. docker container를 실행한다.(기존의 설정에 추가)
# docker run -dit -p xxx22:22 -p xxx80:80 -p xx443:443 -v [도커 볼륨]:[컨테이너 내의 마운트할 경로] -v /var/run/docker.sock:/var/run/docker.sock --name [컨테이너명] [저장했던 이미지명]

// 다음은 기존 설정이다.
# docker run -dit -p xxx22:22 -p xxx80:80 -p xx443:443 -v [도커 볼륨]:[컨테이너 내의 마운트할 경로] --name [컨테이너명] ubuntu:22.04
  1. 컨테이너에 접속해서 docker를 설치한다.
# apt-get install -y docker.io
  1. 마지막으로 도커가 정상적으로 설치가 되었는지 확인한다.
# docker --version

도커 버전을 확인할 수 있으면 이제 docker를 사용할 수 있다!!

0개의 댓글