- 이번 포스팅에서는 도커 컨테이너 안에서 도커를 사용하는 방식을 알아보겠습니다.
실습으로 만들어볼 Docker 컨테이너 구조는,
ubuntu 22.04 OS 환경의 컨테이너 안에 docker 를 설치하겠습니다.
- 먼저, 도커 안의 도커와 도커 밖의 도커를 동일하게 사용하는 방식입니다.
이 방식은, 도커 컨테이너 안에서 도커를 사용할 때, 해당 컨테이너를 실행시키는 주체가 되는 도커를 그대로 사용하는 방식으로, 컨테이너 내부에서 도커 명령어를 사용하면 컨테이너 밖에서 생성한 도커 이미지, 컨테이너 등에 그대로 접근이 가능합니다.
도커를 공유하므로 성능상 우위를 지니겠지만 보안적으로 주의가 필요한 방식입니다.
도커 환경이 세팅되었다는 가정 하에,
windows
docker run --privileged -v //var/run/docker.sock:/var/run/docker.sock -it --name SpringbootSample ubuntu:22.04
mac, linux
docker run --privileged -v /var/run/docker.sock:/var/run/docker.sock -it --name SpringbootSample ubuntu:20.04
위와 같이 입력하여 컨테이너를 실행시켜줍니다.
docker.sock 파일은 도커용 통신 파일입니다.
컨테이너 외부에서 컨테이너를 동작시키고 있는 도커 프로세스와, 도커 컨테이너 내부의 프로세스가 서로 통신하며, 도커 컨테이너 내부에서 컨테이너 외부의 도커를 실행시킬 수 있게 해주는 것이 이것이죠.
지금 위와 같은 상태로 컨테이너 안에 들어가봐야 도커를 사용하지는 못합니다.
컨테이너 내부에서도 도커 명령어를 입력할 수 있도록 도커를 설치해야 합니다.
apt-get -y update
apt-get update && apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common && curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable" && apt-get update && apt-get -y install docker-ce
위와 같이 명령어를 내리면,
ubuntu 컨테이너 안에 도커가 설치되고 세팅된 것입니다.
동작 확인을 위하여,
docker -v
docker images
위와 같이 도커 버전을 확인할 수 있고,
도커 이미지 확인 명령어를 통해 도커 실행이 가능한지와 컨테이너 외부의 도커 외부와 연결되었는지도 확인이 가능합니다.
- 다음으로는 도커 내부에서 도커를 별도로 설치하여 외부 도커와는 별개로 사용되도록 하겠습니다.
docker run --privileged -it --name SpringbootSample ubuntu:22.04
위와 같이 docker.sock 파일을 공유하지 않고 컨테이너를 시작하고,
apt-get update
apt-get install -y docker.io
dockerd &
위와 같이 도커를 설치 후 테스트를 해보면, 외부 도커와는 별개의 새로운 도커가 실행되었음을 확인할 수 있습니다.
- 이상입니다.
'Docker' 카테고리의 다른 글
서버 모니터링 시스템 Docker 로 구성하기(Grafana, Prometheus, Loki, Promtail, Springboot) (4) | 2024.10.06 |
---|