데이터센터프로그래밍12
12-Docker in Docker
🙂 저번시간에...
- virtualbox를 설치해서
Docker Machine
을 했을 때, 1개는 실행되는데, 2개 이상일 때 버그가 걸린다면? Ram이 부족해서 그런 것이다...- 예를들어, 4GB의 Ram을 가지고 있다면-1.5~2GB, Docker Machine 했을 때-1GB를 사용하고, 또 하나를 추가했을 때 Ram을 다 사용하게 된다.
- 따라서, docker machine create에
--virtualbox-memory "1024"
를 512로 다운시키는 것도 방법이다.- 참고로, 1024(디폴트값) = 1GB이다.
🔴 Docker in Docker (dind)
Docker in Docker
는 권장하지 않지만, SW 환경이 풍부하지 않은 환경에서 개발해야 하는 경우에 사용한다.- Docker 안에서 또다른 Docker를 띄울 수 있도록 오픈소스의 프로젝트이다.
- Linux, MacOS & Windows 위에서 열악한 개발환경을 가지고 있는 사람이 종종 사용한다.
- 예시는 다음과 같다.
🟠 docker-compose.yml (1)
- manager 서비스에 docker image를
dind
로 작성하면,Docker in Docker
로 실행할 수 있다.# docker compose.yml version: "3.7" services: manager: container_name: manager image: docker:18.05.0-ce-dind privileged: true tty: true ports: -8080:80 -9000:9000
🟠 docker-compose.yml (2)
# docker-compose up docker-compose up -d # docker command inside manager docker container exec -it manager \ docker container ls docker container exec -it manager \ docker system df
▶ \을 통해 manager에게 명령하는 줄과 container가 실행하는 줄을 나눠서 두 명령어를 쉽게 확인할 수 있다.
🟠 Install nginx container inside manager container
docker container exec -it manager \ docker run -d -p 8080:80 nginx docker container exec -it manager \ docker container ls
▶ manager 안에서 컨테이너를 띄운후, nginx가 실행되겠금 한다.
🟠 Install curl and check nginx in manager container
docker container exec -it manager \ apk add curl docker container exec -it manager \ curl http://localhost:8080
▶ curl을 통해서 웹사이트에 접속할 수 있다.
🐧 즉, 도커엔진 위에서 docker in docker의 manager를 실행하고, docker in docker의 manager 안에서 nginx를 실행한 것을 확인 할 수 있다.
🟠 이렇게 까지 해야할까??
docker container exec -it manager \ docker container exec -it {DinD container ID} \ /bin/sh
▶ docker container 명령을 사용해서 manager에게 그 안에 docker container로 exec해서 계속해서 컨테이너를 만드는 것... 이것을 해야할까??.. 하지만, 도커를 여러 컴퓨터에서 실행할 때, 사용할 수 있다.
😂 dind는 위의 이유들로 인해 개발자들에게 권장하지 않다는 사실을 알게 되었다.
Author And Source
이 문제에 관하여(데이터센터프로그래밍12), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dkddkkd55/데이터센터프로그래밍12저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)