在'exec'之后将更改应用于docker容器

时间:2015-10-02 19:55:39

标签: docker

我已成功使用

进入RUNNING docker容器

docker exec -i -t 7be21f1544a5 bash

我对一些json文件进行了一些更改,并希望将这些更改应用于在线反映。

我是初学者并试图重新启动,徒劳无功。使用docker run挂载时我需要替换哪些字符串?

有在线样本吗?

CONTAINER ID: 7be21f1544a5
IMAGE: gater/web
COMMAND: "/bin/sh -c 'nginx'"
CREATED: 4 weeks ago
STATUS: Up 44 minutes
PORTS: 443/tcp, 172.16.0.1:10010->80/tcp
NAMES: web

3 个答案:

答案 0 :(得分:4)

您可以运行创建Dockefile并运行:

docker build . 

来自Dockerfile所在的同一目录。

或者你可以运行:

docker run -i -t <docker-image> bash

或(如果您的容器已在运行)

docker exec -i -t <container-id> bash

一旦你进入shell,你就可以做出所有改变。然后运行:

docker commit <container-id> myimage:0.1

您将在本地myimage:0.1拥有一个新的泊坞窗图片。如果要推送到docker存储库(dockerhub或私有docker repo),可以运行:

docker push myimage:0.1

答案 1 :(得分:2)

有两种方法可以做到:

  • Dockerfile方法

您需要知道在执行Docker容器后对Docker容器所做的更改以及映像的Dockerfile。

假设您在进入容器后使用yum install命令安装了额外的rpm(yum install perl-HTML-Format)并在contianer中更新了一些文件/ etc / test.json(在Docker主机中备份此文件)在某些目录或目录中存在Dockerfile)

您可以将以上命令/步骤放在Dockerfile中作为

RUN  yum install perl-HTML-Format
COPY /docker-host-dir/updated-test.json  /opt/test.json

更新Dockerfile后,创建新映像并将其推送到Docker存储库

docker build -t test_image .
docker push test_image:latest

您可以保存更新的Dockerfile以备将来使用。

  • Docker提交命令方法

对容器进行更改后,使用以下命令从容器更改中创建新图像并将其推送到网上

docker commit container-id test_image
docker push test_image

docker commit --help  
Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

答案 2 :(得分:0)

你不想这样做。找出所需内容后,丢弃正在运行的容器(git rm 7be21f1544a5),重复Dockerfilebuild中的更改以运行新图像。