我花了一些时间与Vagrant& CoreOS和Docker,还有很多值得学习的东西......
我在开发环境中工作并且不断 UP 和 DESTROY 操作所以我不想每次都下载docker镜像 ..这需要太多时间,图像很重。
好吧,我把最常用的图像拉出来并保存起来。
core@core-01 ~ $ docker save ubuntu:latest > /home/core/share/ubuntu.tar
core@core-01 ~ $ docker save mysql > /home/core/share/mysql.tar
core@core-01 ~ $ docker save wordpress:latest > /home/core/share/wordpress.tar
如果需要,我会再次加载它们。
core@core-03 ~ $ docker load -i=/home/core/share/wordpress.tar
core@core-04 ~ $ docker load -i=/home/core/share/mysql.tar
但是当我尝试构建群集时,我遇到了问题。
我有两个简单的服务数据库和web
database.1.service
[Unit]
Description=Run database_1
After=docker.service
Requires=docker.service
[Service]
Restart=always
RestartSec=10s
ExecStartPre=/usr/bin/docker ps -a -q | xargs docker rm
ExecStart=/usr/bin/docker run --rm --name database_1 -e "MYSQL_DATABASE=demo" -e "MYSQL_ROOT_PASSWORD=password" -p 3306:3306 mysql
ExecStartPost=/usr/bin/docker ps -a -q | xargs docker rm
ExecStop=/usr/bin/docker kill database_1
ExecStopPost=/usr/bin/docker ps -a -q | xargs docker rm
[Install]
WantedBy=local.target
web.1.service
[Unit]
Description=Run web_1
After=database.1.service
Requires=database.1.service
[Service]
Restart=always
RestartSec=10s
ExecStartPre=/usr/bin/docker ps -a -q | xargs docker rm
ExecStart=/usr/bin/docker run --rm --name web_1 --link database_1:database_1 -e "DB_USER=root" -e "DB_PASSWORD=password" -p 80:80 wordpress
ExecStartPost=/usr/bin/docker ps -a -q | xargs docker rm
ExecStop=/usr/bin/docker kill web_1
ExecStopPost=/usr/bin/docker ps -a -q | xargs docker rm
[Install]
WantedBy=local.target
如何在服务启动之前加载mysql映像(/home/core/share/mysql.tar)。 如果服务启动,则再次下载图像。
$ fleetctl start database.1.service
$ fleetctl start web.1.service
我可以按如下方式加载图像吗?
ExecStartPre=/usr/bin/docker load -i=/home/core/share/mysql.tar
如何创建开发环境以使无需连接互联网?
答案 0 :(得分:1)
我认为你可能过于复杂了。您不必明确要求保存和/或重复使用图像。
根据CoreOS文档
虽然这仍然需要互联网连接以进行初始图像下载,但容器的后续启动应该重复使用缓存的图像。
如果您需要更多控制,可能需要考虑在CoreOS群集中维护私有Docker注册表。我发现这样做的最好方法是使用Deis,它附带了许多好东西,包括集群范围的容错文件系统和私有Docker注册表作为标准。