docker - 使用CoreOS和Fleet发行具有数据量的镜像启动问题

标签 docker coreos

我一直在尝试使用FleetCtl启动docker镜像,一个是数据卷镜像,另一个是使用--volumes-from选项启动的Nginx镜像。 Nginx镜像将不会继续在CoreOs服务器上运行,但是如果我转到服务器并键入命令docker start,镜像将启动并运行。是否存在使用Fleet启动使用数据卷的Docker镜像的镜像?

卷的Docker文件:

FROM busybox
MAINTAINER Zombie Possum

VOLUME  ["/usr/share/nginx/html", "/usr/share/nginx/conf"]

COPY dist /usr/share/nginx/html
COPY dist_nginx.conf /usr/share/nginx/conf/dist_nginx.conf

CMD ["/usr/bin/true"]

卷nginxData.service的机队文件:
[Unit]
Description=Data Container
Requires=docker.service
After=docker.service

[Service]
TimeoutStartSec=0
KillMode=none
User=core
WorkingDirectory=/home/core
EnvironmentFile=/etc/environment
ExecStartPre=-/usr/bin/docker kill DATA_NGINX
ExecStartPre=-/usr/bin/docker rm DATA_NGINX
ExecStartPre=-/usr/bin/docker pull private_repo/data_nginx:latest
ExecStart=/usr/bin/docker run --name DATA_NGINX private_repo/data_nginx:latest
ExecStop=/usr/bin/docker stop DATA_NGINX

nginx.service的机队文件:
[Unit]
Description=Nginx Container
Requires=docker.service
After=docker.service

[Service]
TimeoutStartSec=0
KillMode=none
User=core
WorkingDirectory=/home/core
EnvironmentFile=/etc/environment
ExecStartPre=-/usr/bin/docker kill NGINX
ExecStartPre=-/usr/bin/docker rm NGINX
ExecStartPre=-/usr/bin/docker pull private_repo/nginx:latest
ExecStart=/usr/bin/docker run  -rm -p 80:80 --name NGINX --volumes-from DATA_NGINX private_repo/nginx:latest
ExecStop=/usr/bin/docker stop NGINX

[X-Fleet]
MachineOf=nginxData.service

舰队司令部:
fleetctl submit nginxData.service
fleetctl submit nginx.service
fleetctl start nginxData.service
fleetctl start nginx.service

最佳答案

您提供的Dockerfile在我的Docker主机上运行时发生错误(未使用Fleet);也许当车队确实检测到该错误时,它会为您删除该容器,而在Docker主机上,尽管有该错误,该容器仍处于停止状态。

这是错误:

$ docker build --force-rm -t so-26469566 .
$ docker run --name DATA_NGINX so-26469566
exec: "/usr/bin/true": stat /usr/bin/true: no such file or directory2014/10/20 16:59:54 Error response from daemon: Cannot start container 767562758b9f30097a5ed16b98fe818d9c9574bb82b1cfd502bc3403e97d5b0
e: exec: "/usr/bin/true": stat /usr/bin/true: no such file or directory
make: *** [run] Error 1

在您的Dockerfile中尝试以下CMD语句,看看它是否确实改变了Fleet的行为。
CMD ["/bin/true"]

关于docker - 使用CoreOS和Fleet发行具有数据量的镜像启动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26469566/

相关文章:

docker - 从图像中删除卷

java - docker 中的 Spring/Hibernate 应用程序不会删除列

docker - 如何在不增加存储空间的情况下复制具有overlayfs目录结构的数据*原样*的/var/lib/docker

linux - 如何在 CoreOS 上更改 docker work_dir

macos - docker 登录失败 -> x509 : certificate signed by unknown authority . 。 "crypto/rsa: verification error"

python - docker : "Unknown instruction: VIRTUALENV'

python-3.x - 如何在 Debian Buster 上安装 pandas 和 numpy?

amazon-web-services - Elastic Beanstalk上的HTTPS(Docker多容器)

Kubernetes RBAC - 禁止尝试授予额外权限

kubernetes - kubectl获取componentStatus显示额外的etcd实例