'exec'后,将更改应用到docker容器中

我已经成功地使用了一个RUNNINGdocker集装箱

docker exec -i -t 7be21f1544a5 bash

我对一些json文件做了一些修改,并希望将这些修改应用到网上。

我是一个初学者,并试图重启,徒劳无功。 当我使用docker run进行安装时,需要replace哪些string?

有没有在线样本?

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 

你可以运行创build一个Dockefile并运行:

 docker build . 

来自Dockerfile所在的同一个目录。

或者你可以运行:

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

或者(如果你的容器已经在运行)

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

一旦你在壳里,请做出所有你需要的改变。 然后运行:

 docker commit <container-id> myimage:0.1 

你将有一个新的docker图像在本地myimage:0.1 。 如果你想推送到docker仓库(dockerhub或你的私人docker仓库),你可以运行:

 docker push myimage:0.1 

你不想这样做。 在找出需要的东西之后,扔掉正在运行的容器( git rm 7be21f1544a5 ),重复git rm 7be21f1544a5的更改并构build一个新的映像来运行。

有两种方法可以做到这一点:

  • Dockerfile方法

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

假设你在进入容器(yum install perl-HTML-Format)之后使用yum install命令安装了额外的rpm,并更新了一些文件,说明在contianer里面的/opt/test.json(在Docker主机的某个目录中备份这个文件或者在Dockerfile目录下)

上面的命令/步骤可以放在Dockerfile中

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

一旦你更新Dockerfile,创build新的镜像并将其推送到Docker存储库

 docker build -t test_image . docker push test_image:latest 

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

  • Docker提交命令的方法

在对容器进行更改之后,使用以下命令从容器的更改创build新映像并将其推送到联机状态

 docker commit container-id test_image docker push test_image docker commit --help Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]