我已成功使用
进入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
答案 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)
有两种方法可以做到:
您需要知道在执行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 commit container-id test_image
docker push test_image
docker commit --help
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
答案 2 :(得分:0)
你不想这样做。找出所需内容后,丢弃正在运行的容器(git rm 7be21f1544a5
),重复Dockerfile和build中的更改以运行新图像。