首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从docker-in-docker创建docker镜像

如何从docker-in-docker创建docker镜像
EN

Stack Overflow用户
提问于 2021-01-29 03:56:55
回答 1查看 38关注 0票数 0

我正在使用docker:dind创建一些图像。它工作得很好。当我执行docker:dind容器并执行docker imagesdocker ps时,我可以分别看到图像和容器。

但是如果不总是在docker:dind容器中执行,我如何从外部列出图像和容器呢?

(我知道这是可能的,因为我曾经读过一篇关于这方面的文章。但我好像找不到那篇好文章。)

EN

回答 1

Stack Overflow用户

发布于 2021-01-29 04:19:13

Docker插座

Docker使用unix(大多数情况下)套接字与其守护进程通信,因此您需要将此套接字文件挂载到运行的容器中。

Docker套接字通常在/var/run/docker.sock

如果Docker在VM上运行,docker中的docker可能会很难处理。

Docker中的docker

让我们来做一些简单的例子。

1.拉取docker镜像

代码语言:javascript
运行
复制
$ docker pull docker:latest

2.在dockder中启动docker

首先,您需要找到您的unix套接字,并使用-v标志将其挂载到docker容器中。Docker将在执行完传递的命令后执行。那么让我们为1 hour执行sleep

代码语言:javascript
运行
复制
$ docker run -v /var/run/docker.sock:/var/run/docker.sock -d docker:latest sleep 3600
52201aaa3e6ebaaafab0a7323fd621f9f41765bad6363bf4eae43bf06c5825ee

3.让我们shell到启动的容器中

我们可以使用带有-ti标志的exec命令

代码语言:javascript
运行
复制
$ docker exec -ti 52201aaa3e6ebaaafab0a7323fd621f9f41765bad6363bf4eae43bf06c5825ee sh
/ # 

4.尝试从docker容器启动MySQL

代码语言:javascript
运行
复制
/ # 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)

5.验证它是否正常工作

让我们在主机上打开另一个终端选项卡,并验证启动的容器是否正常工作

代码语言:javascript
运行
复制
$ 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。要求是,远程计算机上docker具有侦听TCP套接字的套接字,且允许您与该端点通信。当你在虚拟机中使用docker时,这是控制docker的常用方法,你可以在你本地的笔记本电脑上,你可以在服务器机房的一些服务器上进行开发。

要阅读更多内容,您可以查看如何设置docker守护进程监听TCP套接字,以及如何连接到the official docker documentation中的远程套接字

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65944322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档