在一些地方,当我阅读 Docker 容器时,我发现有些人说他们在重新启动容器时丢失了他们的数据(保存在容器内而不是卷数据的一部分)。
我尝试创建一个简单的 Ubuntu 容器,如下所示:docker run -it ubuntu /bin/bash,并在容器内创建了一些文件,然后重新启动它,但我的数据仍然存在。为什么会这样?为什么我的数据还在那里?这是较新版本的 Docker 中的新内容还是我对某些内容有误解?
Docker run cli 命令有一个这样--storage-opt使用的选项:
docker run --storage-opt size=XYZ ....nginx
Run Code Online (Sandbox Code Playgroud)
XYZ上面指定的“ ”大小是指 CoW 层还是此链接中讨论的基本图像和 CoW 层的总大小?
我有一个jenkins容器正在运行,并希望将它的配置隔离在容器提交中.唯一的问题是docker不会提交已安装卷的更改 - 所以我必须卸载它们.
有没有办法让docker挂载卷并提交目录的更改?
我读到了关于卷绑定的readonly选项.可能有帮助吗?
我像这样启动了一个MongoDB容器:
docker run -d -p 27017:27017 --net=cdt-net --name cdt-mongo mongo
Run Code Online (Sandbox Code Playgroud)
我看到我的MongoDB容器已退出:
0e35cf68a29c mongo "docker-entrypoint.s…" Less than a second ago Exited (1) 3 seconds ago cdt-mongo
Run Code Online (Sandbox Code Playgroud)
我检查了Docker日志,我看到:
$ docker logs 0e35cf68a29c
about to fork child process, waiting until server is ready for connections.
forked process: 21
2018-01-12T23:42:03.413+0000 I CONTROL [main] ***** SERVER RESTARTED *****
2018-01-12T23:42:03.417+0000 I CONTROL [main] ERROR: Cannot write pid file to /tmp/tmp.aLmNg7ilAm: No space left on device
ERROR: child process failed, exited with error number 1
Run Code Online (Sandbox Code Playgroud)
有谁知道这个错误是什么?容器中没有足够的空间?
mongodb docker docker-networking docker-container docker-network
我有以下 systemd 脚本:
[Unit]
Description=Hub docker container
After=docker.service
[Service]
User=root
ExecStart=/home/hub/hub.sh
ExecStop=/bin/docker stop hub
ExecStopPost=/bin/docker rm hub
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
运行命令:systemctl start/stop hub工作正常。我还使用systemctl enable hub创建了符号链接。为什么在我重新启动整个笔记本电脑后我的服务没有启动?我遵循了 docker 指南,以便 Docker 在重新启动时启动,但由于某种原因我的容器没有启动。我是否缺少脚本中的字段?
我正在使用我的 ExecStart,“/home/hub/hub.sh”脚本的命令是:
docker run --net=host --restart=always --name hub -t hub
Run Code Online (Sandbox Code Playgroud)
重新启动后,当我输入 systemctl status hub 时,我得到以下信息:
? hub.service - Hub docker container
Loaded: loaded (/etc/systemd/system/hub.service; enabled; vendor preset: disabled)
Active: inactive (dead)
Run Code Online (Sandbox Code Playgroud) 我是码头工人的新手。
我运行了一个 node-10 图像,并在运行的容器中克隆了一个存储库,运行了使用文件观察器启动服务器的应用程序。我需要访问容器内的代码库,在 Windows 主机上运行的 IDE 中打开它。如果这样做了,那么我也希望在我更改 IDE 中的文件时,这些更改会在容器中引入文件观察器。
任何帮助表示赞赏。谢谢,
我有一个 web api 项目,当我通过 Visual Studio 运行时运行良好,也能够构建图像。但是当我使用命令运行时
docker run -d -t -p 8000:83 8fbf296e2173
Run Code Online (Sandbox Code Playgroud)
显示没有错误,容器将docker ps -a与状态一起列出
Exited (139) 1 second ago
Run Code Online (Sandbox Code Playgroud)
请帮忙解决这个问题
我的 Windows 操作系统上安装了 Docker。有我的 docker-compose.yml 卷文件:
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
Run Code Online (Sandbox Code Playgroud)
我只是无法弄清楚/var/run/docker.sock::/var/run/docker.sockWindows 的路径是如何工作的,因为/var/run/我的 Windows 文件中没有可以找到 docker.sock 的文件。那么这个卷绑定是如何工作的呢?
windows docker docker-compose docker-volume docker-container
在学习入门教程,第 3 部分:部署到 Kubernetes 时,我偶然发现了清单文件部署定义中的 Pod 模板。在 pod 和容器部分都没有指定端口。
这让我想到了我最初的问题:从 docker 容器到 pod 的端口发布是如何工作的?
以下引用听起来像是 kubernetes 在启动后深入了解正在运行的容器,并从侦听 0.0.0.0:PORT 的服务获取端口,并将其映射到 pod 环境(网络命名空间)中的相同端口。
在此处不指定端口不会阻止该端口被公开。任何侦听容器内默认“0.0.0.0”地址的端口都可以从网络访问。来源
如果我的假设朝着正确的方向发展,这对于具有多个容器的 Pod 意味着什么?kubernetes 是否只允许具有内部服务侦听不同端口的容器?或者是否可以将容器内部端口映射到 pod 环境(网络命名空间)中的不同端口?
根据以下引用,我假设从容器到 pod 的端口映射是不可能的。实际上,在具有相同端口的两个容器中指定两个服务并没有太大意义,只是通过紧随其后的映射来更改它们。
在此处公开端口可为系统提供有关容器使用的网络连接的附加信息,但主要是信息性的。来源
更新 2019-10-15
如以下引述所述,默认情况下,docker 容器不会向外界发布任何端口。
默认情况下,当您创建容器时,它不会将其任何端口发布到外部世界。要使端口可用于 Docker 外部的服务或未连接到容器网络的 Docker 容器,请使用 --publish 或 -p 标志。来源
这意味着 kubernetes 必须以某种方式配置在 pod 中运行的 docker 容器,以便将容器的端口发布到 pod。
关于以下引用,kubernetes 是否有可能通过使用--network 主机配置来运行 docker 容器?假设 pod 是 kubernetes 中的 docker 主机。
如果您对容器使用主机网络模式,则该容器的网络堆栈不会与 Docker 主机隔离 [...] 例如,如果您运行绑定到端口 80 的容器并使用主机网络,则该容器的应用程序是在主机 …
我们可以构建一个在该容器中没有任何 shell 的 docker 容器吗?是否可以创建没有外壳的容器?
docker ×10
docker-container ×10
containers ×1
docker-image ×1
dockerfile ×1
kubernetes ×1
linux-kernel ×1
mongodb ×1
node.js ×1
reboot ×1
storage ×1
systemd ×1
windows ×1