Docker 记录
Author: Xin Pan
Date: 2022.10.01
Docker部分常用命令
查询元数据
docker inspect <container_name>
查询容器运行状态
docker stats <container_name>
从容器commit镜像
docker commit -m="commit摘要" -a="commit author" <container_name> <image_name>:<version>
容器数据卷
具名挂载和匿名挂载
-v 容器内路径 # 匿名挂载
-v 卷名:容器内路径 # 具名挂载
-v /宿主机路径:容器内路径 # 指定路径挂载
还可以使用dockerfile处理
dockerfile是这样的
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash
可以看到在下边的容器内,volume01
和volume02
通过匿名挂载的方式挂载进了容器内。
[root@169f0dbb692b /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02
[root@169f0dbb692b /]# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 1.8T 468G 1.3T 27% /
tmpfs 64M 0 64M 0% /dev
tmpfs 32G 0 32G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
/dev/sda2 1.8T 468G 1.3T 27% /volume01 !!!!!!!!!!
tmpfs 32G 0 32G 0% /proc/asound
tmpfs 32G 0 32G 0% /proc/acpi
tmpfs 32G 0 32G 0% /proc/scsi
tmpfs 32G 0 32G 0% /sys/firmware
[root@169f0dbb692b /]# ls -l
total 56
lrwxrwxrwx 1 root root 7 Nov 3 2020 bin -> usr/bin
drwxr-xr-x 5 root root 360 Oct 5 01:50 dev
drwxr-xr-x 1 root root 4096 Oct 5 01:50 etc
drwxr-xr-x 2 root root 4096 Nov 3 2020 home
lrwxrwxrwx 1 root root 7 Nov 3 2020 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Nov 3 2020 lib64 -> usr/lib64
drwx------ 2 root root 4096 Sep 15 2021 lost+found
drwxr-xr-x 2 root root 4096 Nov 3 2020 media
drwxr-xr-x 2 root root 4096 Nov 3 2020 mnt
drwxr-xr-x 2 root root 4096 Nov 3 2020 opt
dr-xr-xr-x 655 root root 0 Oct 5 01:50 proc
dr-xr-x--- 2 root root 4096 Sep 15 2021 root
drwxr-xr-x 11 root root 4096 Sep 15 2021 run
lrwxrwxrwx 1 root root 8 Nov 3 2020 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 Nov 3 2020 srv
dr-xr-xr-x 13 root root 0 Oct 5 01:50 sys
drwxrwxrwt 7 root root 4096 Sep 15 2021 tmp
drwxr-xr-x 12 root root 4096 Sep 15 2021 usr
drwxr-xr-x 20 root root 4096 Sep 15 2021 var
drwxr-xr-x 2 root root 4096 Oct 5 01:50 volume01 !!!!!!!!
drwxr-xr-x 2 root root 4096 Oct 5 01:50 volume02 !!!!!!!!
数据卷容器
如何实现容器间的数据共享,数据卷容器。
通过--volumes-from
实现。
# 通过命令产生容器docker01
docker run -it --name docker01 panxin/centos bash
# 让容器docker02和容器docker01共享数据
docker run -it --name docker02 --volumes-from docker01 panxin/centos bash
# 让容器docker03和容器docker01共享数据
docker run -it --name docker03 --volumes-from docker01 panxin/centos bash
然后进入这三个容器我们可以发现
CONTAINER ID NAMES
8c070a27d70a docker03
fc0c7e9afbc1 docker02
a05c2f45877b docker01
在容器docker02内可以看到,文件共通。
[root@fc0c7e9afbc1 volume01]# ls
docker01 docker02 docker03
在容器docker01内可以看到,文件共通。
[root@a05c2f45877b volume01]# ls
docker01 docker02 docker3
在容器docker03内可以看到,文件共通。
[root@8c070a27d70a volume01]# mv docker3 docker03
[root@8c070a27d70a volume01]# ls
docker01 docker02 docker03
而且有意思对的地方来了。
这个时候即便把docker01 stop 并且rm 掉,这三个文件还在吗? 因为docker02 03 都是volumes-from docker01啊,看到这的朋友请想想这个问题???
其实这三个文件会继续存在。
[root@a05c2f45877b volume01]# ls
docker01 docker02 docker03
[root@a05c2f45877b volume01]# read escape sequence
panxin@ubuntu-gtx3080:/$ docker rm -f a05c
a05c
可以看到docker01 被彻底删除了,但是咱们返回docker02 03 。
[root@fc0c7e9afbc1 volume01]# ls
docker01 docker02 docker03
文件还在这里。
这是因为数据卷容器是备份或者说拷贝文件的而不是共享文件。这样保证了文件的安全。是不是很有意思^_^
。
数据卷容器的生命周期一直持续到没有容器使用为止。