docker -v host_file:container_file
docker在把宿主机上的文件挂载到容器上之后。
理论上,修改了宿主机上的文件之后,会自动同步到容器中。但是实际上,却不是,这是因为Linux系统内部不使用文件名,而是使用inode号码识别文件。对于系统来说文件名只是inode号码便于识别的不同的文件。
在linux中vi or vim 编辑文件之后,文件对应的 inode值就会发生改变哦。所以文件需要重新挂载到容器中,或者指令reload一下
查看文件的inode指令:
ls -i file # 直接返回带个
或者
stat file
具体示例如下:
root@eb5d85b29a05:/usr/local/apache2/logs# stat httpd.pid
File: httpd.pid
Size: 2 Blocks: 8 IO Block: 4096 regular file
Device: a5h/165d Inode: 2234760 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-05-10 10:19:55.908906000 +0000
Modify: 2021-05-10 10:19:55.908906000 +0000
Change: 2021-05-10 10:19:55.908906000 +0000
Birth: -
root@eb5d85b29a05:/usr/local/apache2/logs# ls -i httpd.pid
2234760 httpd.pid
docker run -it -d -p 80:80 --name datahttpd -v /data/:/usr/local/apache2/htdocs/ httpd
-i 交互
-t 控制台
-d 后台运行
-p 本机端口:映射为本docker映像的端口
--name 为docker容器起的名称
-v 本机路径:映射为本docker映像的路径
docker镜像移除操作:
rootdeMacBook-Pro:Desktop roothuang$ docker images httpd
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd 2.4 45561c1ef88a 7 days ago 138MB
httpd 2.4.47 45561c1ef88a 7 days ago 138MB
httpd latest 45561c1ef88a 7 days ago 138MB
rootdeMacBook-Pro:Desktop roothuang$ docker rmi httpd:2.4.47
Untagged: httpd:2.4.47
rootdeMacBook-Pro:Desktop roothuang$ docker images httpd
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd 2.4 45561c1ef88a 7 days ago 138MB
httpd latest 45561c1ef88a 7 days ago 138MB
rootdeMacBook-Pro:Desktop roothuang$
另外还可以通过inode来查找对应文件,比如:
[root@hostserver data]# find ./* -inum 541898404
./flink.jar
网友评论