![](/img/trans.png)
[英]How to build a Docker-in-Docker image for Docker EE on Windows?
[英]How to get docker images created from docker-in-docker
我正在使用docker:dind
来创建一些图像。 它工作正常。 当我执行到docker:dind
容器并执行docker images
或docker ps
时,我可以分别看到图像和容器。
但是,如果不总是执行到docker:dind
容器,我如何从外部列出图像和容器?
(我知道这是可能的,因为我读过一篇关于这个的文章。但我似乎找不到那篇好文章。)
Docker 使用 unix(在大多数情况下)套接字与其守护进程通信,因此您需要将此套接字文件挂载到正在运行的容器中。
Docker 套接字通常在/var/run/docker.sock
如果 docker 在 VM 上运行,则 docker 中的 Docker 可能很难。
让我们做一些简单的例子。
$ docker pull docker:latest
首先,您需要找到 unix 套接字并使用-v
标志将其安装到 docker 容器中。 Docker 将在完成执行传递的命令时执行。 所以让我们执行sleep
1 hour
$ docker run -v /var/run/docker.sock:/var/run/docker.sock -d docker:latest sleep 3600
52201aaa3e6ebaaafab0a7323fd621f9f41765bad6363bf4eae43bf06c5825ee
我们可以使用带有-ti
标志的exec
命令
$ docker exec -ti 52201aaa3e6ebaaafab0a7323fd621f9f41765bad6363bf4eae43bf06c5825ee sh
/ #
/ # docker run -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7
2021-01-28 20:17:24+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.32-1debian10 started.
2021-01-28 20:17:24+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2021-01-28 20:17:24+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.32-1debian10 started.
2021-01-28 20:17:24+00:00 [Note] [Entrypoint]: Initializing database files
...
...
...
2021-01-28T20:17:33.146086Z 0 [Note] Server socket created on IP: '::'.
2021-01-28T20:17:33.147569Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2021-01-28T20:17:33.156949Z 0 [Note] Event Scheduler: Loaded 0 events
2021-01-28T20:17:33.157405Z 0 [Note] mysqld: ready for connections.
Version: '5.7.32' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
让我们在主机上打开另一个终端选项卡并验证启动的容器是否正常工作
$ docker ps | grep mysql:5.7
bc90ce617ee4 mysql:5.7 "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp, 33060/tcp trusting_neumann
这就是一切。 您正在 Docker 中运行 Docker。
你也可以在你的电脑上启动docker容器,在另一台机器上控制Docker。 要求是,远程机器上的 docker 有套接字侦听 TCP 套接字,并且您可以与该端点通信。 这是在虚拟机中使用 docker 时控制 docker 的常用方法,您可以在本地笔记本电脑上,也可以在服务器机房的某些服务器上进行开发。
要了解更多信息,您可以在 官方 docker 文档中查看如何设置 docker 守护程序侦听 TCP 套接字以及如何连接到远程套接字
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.