Docker容器操作
启动容器
docker run -it 镜像名(镜像id) bash
当利用docker run来创建容器时,Docker在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库中下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读可写层
- 从宿主机配置的网桥接口中桥接一个虚拟接口到容器中
- 从地址池配置一个ip地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
后台启动
docker run -d centos:7
-d是后台运行容器,容器运行是否长久,是和docker run指定的命令有关,和-d的参数无关
查看容器
docker container ls -a
或
dokcer ps -a
-a all,全部状态的容器
- CONTAINER ID 容器id
- IMAGE 镜像
- COMMAND 指定运行的命令
- CREATED 创建时间
- STATUS 容器状态
- NAMES 容器名称,默认是随机的
终止容器
docker stop containerId
重新启动容器
docker restart containerId
进入后台容器
docker exec -it containerId bash
删除容器
docker rm containerId
如果是正在运行的容器,需要加上-f的参数,强制删除
清理所有终止状态容器
docker container prune
查看指定容器的详情
docker inspect containerId
数据管理
目录挂载
docker run -dit --name=app1 -v /usr/data:/opt/app centos:7 bash
或
docker run -dit --name=app1 --mount type=bind,source=/usr/data,target=/opt/app centos:7 bash
--mount参数进行挂载,如果目录不存在会保存
-v进行挂载,如果目录不存在,就自动创建
[root@rockylinux8 data]# docker exec -it app1 bash
[root@edb7d44db987 /]# cd opt/app/
[root@edb7d44db987 app]# ls
a
[root@edb7d44db987 app]# cat a
hello container
[root@edb7d44db987 app]# cat <<EOF > f1
> hello linux
> eof
> EOF
[root@edb7d44db987 app]# ls
a f1
[root@edb7d44db987 app]# cat f1
hello linux
eof
[root@edb7d44db987 app]# vi f2
[root@edb7d44db987 app]# ls
a f1 f2
[root@edb7d44db987 app]# cat f2
hello
[root@edb7d44db987 app]# exit
exit
[root@rockylinux8 data]# ls
a f1 f2
查看app1的信息
"Mounts": [{"Type": "bind","Source": "/usr/data","Destination": "/opt/app","Mode": "","RW": true,"Propagation": "rprivate"}],
数据卷挂载
数据卷是一个可供多个容器使用的特殊目录,目录是由docker自动提供的
数据卷可以在容器之间共享和重用
对 数据卷的修改立马生效
对 数据卷的修改,不会影响镜像
数据卷默认一直存在,即使容器被删除
创建数据卷
docker volume create my-vol
查看所有数据卷
docker volume ls
指定数据卷查看详细信息
docker inspect my-vol
启动挂载数据卷的容器
docker run -dit --name=app3 -v my-vol:/opt/app centos:7 bash
[root@dokcer ~]# cd /var/lib/docker/volumes/my-vol/_data/
[root@dokcer _data]# ls
[root@dokcer _data]# vim a
[root@dokcer _data]# docker exec -it app3 bash
[root@037a570c561f /]# cd opt/app/
[root@037a570c561f app]# ls
a
[root@037a570c561f app]# cat a
volume
[root@037a570c561f app]# vi f
[root@037a570c561f app]# ls
a f
[root@037a570c561f app]# cat a
volume
[root@037a570c561f app]# cat f
container
[root@037a570c561f app]# exit
exit
[root@dokcer _data]# ls
a f
[root@dokcer _data]# cat f
container
删除数据卷
docker volume rm my-vol
只能删除无主数据卷
清理无主数据卷
docker volume prune
上一篇文章:Docker架构-CSDN博客https://blog.csdn.net/Z0412_J0103/article/details/143225240下一篇文章: