> 운영 및 유지보수 > Docker > docker:latest와 docker:dind의 차이점은 무엇입니까?

docker:latest와 docker:dind의 차이점은 무엇입니까?

王林
풀어 주다: 2020-10-20 17:31:55
앞으로
4672명이 탐색했습니다.

docker:latest와 docker:dind의 차이점은 무엇입니까?

배경:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.im
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿