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

成像以下情况下,每个人都可以在生产中堆叠

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

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

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

$ 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 

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