从容器外部编辑Docker容器中的文件?

3

我有一个Docker容器,该容器正在运行Weblogic11,因此Weblogic默认在生产模式下运行,所以我想将该生产模式更改为开发模式,为此需要编辑容器内的config.xml文件,我们如何从容器外部编辑该文件?

4个回答

2

当然可以做到。有一个名为mounting的Docker配置。要在容器内挂载文件,请在docker run命令中添加-v参数:

docker run -d -v /path/to/your-file.xml:/path/to/file/inside/container-shoulbe.xml image:version

如果你正在使用docker-compose,那么你的docker-compose.yml文件应该像这样:

...
services:
    web:
        image: xxx:version
        volumes:
            ...
            - /path/to/your-file.xml:/path/to/file/inside/container-shoulbe.xml
...

希望这能帮到你。

1
有一个非常简单的解决方法可以做到这一点。
您想要从正在运行的容器中复制出文件:
docker cp <container_id>:/path/to/file .

你可以用任何你想要的方式来编辑文件,然后只需将它复制回来即可。
docker cp file <container_id>:/path/to/file

可选:如果您希望将文件持久化,只需提交更改即可:

docker commit <container_id> <new_image_name>

1
您可以通过挂载卷来实现此操作。例如:
services:
    web:
        image: your_image:tag
        volumes:
          - app_config:/locaiton_of_config_folder

volumes:
  app_config:

这将创建Docker卷,并将其挂载在/var/lib/docker/volumes/volume_name/_data上,您可以编辑文件。请确保使用sudo,因为文件是由Docker内部的root用户创建的。您可以通过docker volume ls检查卷列表。

-1
使用这个命令进入容器:
docker exec -it container_id bash

然后 vi /path/to/config.xmlnano /path/to/config.xml,.... 如果你想编辑文件。

然后重新启动容器:

docker restart container_id 

2
一旦重新启动容器,所有更改都将丢失。许多Docker镜像非常简洁,根本不包含任何文本编辑器。 - David Maze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接