docker容器内修改内容的方法

奥黛丽·逐爱者
2024-05-23 / 0 评论 / 0 阅读 / 正在检测是否收录...

docker内的文件为什么不能直接编辑
通常是因为在默认情况下Docker容器启动后,容器内的文件系统是以只读方式挂载的。这是为了保证容器的可移植性和隔离性,防止容器内的更改影响到宿主机或其他容器,造成不必要的麻烦和困扰。(既是优点也是缺点)
分享修改方法

方法1:复制

容器当前状态:容器已处于启动状态

操作位置:在宿主机上操作

将容器内的文件复制到外面来,修改后,再复制进去。(注:复制进去后重启容器,不然不生效,就尴尬)

# 复制本地文件到容器(注:查看当前路径位置)            
docker cp  文件名  容器ID:/路径/test.txt    #容器外操作            
# 复制容器内指定的文件到本地当前位置            
docker cp   容器ID:/路径/test.txt  ./文件名     #容器外操作    

方法2:挂载(推荐使用)

容器当前状态:容器处于未启动状态

操作位置:在宿主机上操作

需要在运行之前就做好各种准备

# 创建一个运行的nginx,为下步复制文件到本地做准备            
#步骤1: docker run --name nginx-80 -p 80:80 -d nginx            

# 复制nginx的配置目录到本地            
#步骤2: docker cp nginx-80:/etc/nginx/ /MyDockerData/nginx/conf/            
Successfully copied 3.58kB to /MyDockerData/nginx/conf/cond.d            

# 复制nginx的日志到本地            
#步骤3: docker cp nginx-80:/var/log/nginx  /MyDockerData/nginx/log            
Successfully copied 2.56kB to /MyDockerData/nginx/log            

# 复制网站目录到本地            
#步骤4: docker cp nginx:/usr/share/nginx/html /MyDockerData/nginx/html            
Successfully copied 1.54kB to /MyDockerData/nginx/html            

# 运行容器并挂载目录。格式:<-p 端口映射><-v 路径映射>            
实例:docker run --name nginx -p 80:80 -v $HOME/本地路径:内部路径 -v $HOME/本地路径:内部路径  -d nginx            
#步骤5: docker run --name nginx-8888 \            
-p 8888:80 \            
-v /MyDockerData/nginx/html:/usr/share/nginx/html \            
-v /MyDockerData/nginx/conf:/etc/nginx \            
-v /MyDockerData/nginx/log:/var/log/nginx \            
-d nginx     

方法3:vim

容器当前状态:容器处于运行状态,有网络

操作位置:在容器中操作

进入到容器内,安装编辑工具

# ubuntu操作系统安装方式(要有网)            
apt install vim            
# centos系统安装方式(要有网)            
yum install vim   

方法4:echo

容器当前状态:容器处于运行状态,无网络

操作位置:在容器中操作

如果会使用linux三剑客,就会更便捷

# 向文件中插入文字            
echo "hello world" >> ceshi.txt            
# 替换文本中的字符串:
sed 's/books/BOOKS/' ./test.php            
# 直接编辑文件 选项-i ,会匹配 file 文件中每一行的所有 book 替换为 books:
sed -i 's/book/books/g' 文件名称    

lwijrobi.png

lwijrw9r.png

0

评论 (0)

取消