如何从Docker Swarm中运行的Docker容器创建和下载映像

时间:2016-09-01 10:13:35

标签: docker docker-swarm

成像以下场景每个人都可以在生产中堆叠:

  • 我们正在运行Elastic search作为docker容器,索引一些 我们希望每3个月备份一次数据
  • 意味着我们需要 从正在运行的容器中创建docker镜像并将其上传到注册表。

Haven没有找到任何线索如何在文档中做到这一点。

2 个答案:

答案 0 :(得分:1)

使用swarm业务流程,可以重新启动服务内部的各个容器/任务(例如,如果节点发生故障或应用程序崩溃)。对于持久数据,我使用外部卷并直接备份该卷。如果你想在swarm中执行此操作,可以通过查找特定容器并使用标准命令提交它来提交它创建的容器:

$ docker service create --name test-commit busybox /bin/sh -c 'while true; do ls / >/tmp/ls.`date +%T`.log; sleep 30; done'
2vbnf5s39vs0jfc53at3ko1cg

$ docker service ls
ID            NAME         REPLICAS  IMAGE    COMMAND
2vbnf5s39vs0  test-commit  1/1       busybox  /bin/sh -c while true; do ls / >/tmp/ls.`date +%T`.log; sleep 30; done

$ docker service ps test-commit
ID                         NAME           IMAGE    NODE              DESIRED STATE  CURRENT STATE          ERROR
eu28da042s9tdwlddzk6adkan  test-commit.1  busybox  docker-demo  Running        Running 9 seconds ago

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
545e7fe6f5bd        busybox:latest      "/bin/sh -c 'while tr"   28 seconds ago      Up 26 seconds                                test-commit.1.eu28da042s9tdwlddzk6adkan

$ docker diff test-commit.1.eu28da042s9tdwlddzk6adkan
C /tmp
A /tmp/ls.12:02:13.log
A /tmp/ls.12:02:43.log

$ docker commit test-commit.1.eu28da042s9tdwlddzk6adkan
 test-commit:1
sha256:2255b476b307b69cf20afbc7c46fae43f05c92a70f1525aa5d745c26a406dc90

$ docker images | grep test-commit
test-commit                           1                   2255b476b307        9 seconds ago       1.093 MB

答案 1 :(得分:0)

您可以使用docker commit将容器转换为图像。 但我建议不要在这种情况下这样做。最好为您的数据使用某种卷,然后单独备份。