'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]]