배경:
CI 작성 시 이미지를 작업 실행 환경으로 선언하고, 각 작업은 순수 컨테이너에서 실행됩니다.
때때로 도커 빌드, 도커 푸시 및 기타 작업을 수행하려면 도커 컨테이너 환경이 필요합니다. 공식 Docker 이미지를 살펴보면 docker:latest, docker:dind 및 docker:git의 두 가지 주요 버전이 있음을 알 수 있습니다.
(추천 튜토리얼: docker 튜토리얼)
docker:dind
이 이미지에는 Docker 클라이언트(명령줄 도구)와 Docker 데몬이 포함되어 있습니다.
docker History docker:dind 명령을 통해 docker:dind가 docker:latest를 기반으로 Docker 데몬을 설치했음을 확인했으며 마지막 두 빌드 명령은 다음과 같습니다.
IMAGE CREATED CREATED BY SIZE COMMENT 66dc2d45749a 8 weeks ago /bin/sh -c #(nop) CMD [] 0B <missing> 8 weeks ago /bin/sh -c #(nop) ENTRYPOINT ["dockerd-entr… 0B ...
이미지를 실행할 때 sh CMD 매개변수는 dockerd-entrypoint.sh 명령은 이 매개변수를 수신할 때 Docker 데몬을 시작하지 않습니다. 컨테이너에서 Docker 데몬을 올바르게 시작하고 컨테이너에 들어가려면 단계별로 진행해야 합니다.
$ docker run -d --name dind --privileged docker:dind # 启动容器 $ docker logs -f dind # 查看启动日志 $ docker exec -it dind sh # 进入容器
docker:dind 컨테이너를 시작할 때 --privileged 매개변수를 추가해야 합니다. 그렇지 않으면 Docker 데몬이 오류를 보고합니다. 시작할 때.
docker:latest
이 이미지에는 Docker 클라이언트만 포함되어 있으며 Docker 데몬 지원이 필요합니다. docker:dind를 사용하거나 호스트의 /var/run/docker.sock을 마운트할 수 있습니다.
이 이미지는 시작하는 데 --privileged 매개변수가 필요하지 않습니다.
docker 내역 docker:latest 명령을 통해 CMD 기본값이 sh:
81f5749c9058 3 months ago /bin/sh -c #(nop) CMD ["sh"] 0B <missing> 3 months ago /bin/sh -c #(nop) ENTRYPOINT ["docker-entry… 0B ...
인 것을 확인했습니다. 시작 방법 1: 호스트 양말 파일 마운트
$ docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock docker:latest
시작 방법 2: docker:dind와 협력
Put docker:dind 및 docker:latest 동일한 네트워크를 입력하고 네트워크에 있는 dind 컨테이너의 별칭을 docker로 지정합니다. 최신 컨테이너의 기본 데몬 호스트가 docker이기 때문입니다.
또한 인증서 문제에 주의해야 합니다. Docker 클라이언트의 새 버전에서는 통신 보안을 보장하기 위해 Docker 데몬과 통신하기 위해 TLS 인증서가 필요합니다. 환경 변수 DOCKER_TLS_CERTDIR 인증서를 마운트하고 docker:latest 컨테이너에 제공해야 합니다.
$ docker run --privileged --name some-docker -d \ --network some-network --network-alias docker \ -e DOCKER_TLS_CERTDIR=/certs \ -v some-docker-certs-ca:/certs/ca \ -v some-docker-certs-client:/certs/client \ docker:dind $ docker run --rm --network some-network \ -e DOCKER_TLS_CERTDIR=/certs \ -v some-docker-certs-client:/certs/client:ro \ docker:latest
docker:git
docker:git은 git 명령이 포함된 docker:latest로, CI에서 Git을 사용할 때 편리합니다.
위 내용은 docker:latest와 docker:dind의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!