tjtjtjのメモ

自分のためのメモです

Docker in Docker

ちょっと試した。

What is Docker in Docker?

hub.docker.com

Docker内でDockerを実行することは一般的に推奨されませんが、Docker自体の開発など、正当な使用例がいくつかあります。

dind

dind のイメージをrun。privileged は特権モード

$ docker run -it --privileged --name some-docker -d docker:stable-dind

dind のシェルに接続。

$ docker exec -it some-docker sh

dind のシェルに接続。dind内で docker run とかいろいろ試す。

/ # docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

/ # docker run hello-world
:
Hello from Docker!
:

/ # docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        11 months ago       1.84kB

/ # docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
474e499442ad        hello-world         "/hello"            7 minutes ago       Exited (0) 7 minutes ago                       beautiful_perlman
4c897acfba25        hello-world         "/hello"            9 minutes ago       Exited (0) 9 minutes ago                       inspiring_saha

ホスト側からdind内は見えない。

$ docker ps -al
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS               NAMES
a651d64cd588        docker:stable-dind   "dockerd-entrypoint.…"   21 minutes ago      Up 21 minutes       2375-2376/tcp       some-docker