Docker的常用命令和容器数据卷的使用

本文详细介绍了Docker的基础命令,包括查看版本信息、系统信息、镜像管理(搜索、下载、删除)、容器操作(创建、启动、停止、删除)以及其他实用命令如查看日志和进程信息。重点讲解了如何使用`docker run`创建和启动容器,以及数据卷的使用,包括挂载类型和数据共享。此外,还提到了如何进入和操作容器,以及如何从容器复制文件。内容覆盖了Docker日常操作的各个方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker命令官方帮助文档:https://docs.docker.com/engine/reference/run/ (建议有Docker命令基础再去看)

一、帮助命令

docker version  		#显示docker的版本信息
docker info				#显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help 		#帮助命令

二、镜像命令

docker images				#查看所有本地的主机的镜像

eg:
[root@localhost ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
tomcat                latest    b0e0b0a92cf9   2 weeks ago    680MB
nginx                 latest    87a94228f133   3 weeks ago    133MB
hello-world           latest    feb5d9fea6a5   6 weeks ago    13.3kB

#解释:
REPOSITORY		#镜像的仓库源
TAG				#镜像的标签
IMAGE ID		#镜像的ID
CREATED			#镜像的创建时间
SIZE			#镜像的大小

#可选项(常用)
-a		#列出所有镜像(默认也会列出所有镜像)
-q		#只显示镜像的ID

#了解更多
 docker images --help    
docker search 镜像名				#搜索镜像(建议去docker hub的web页面上搜)

eg:
[root@localhost ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11647     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4433      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   864                  [OK]
.......................
.......................
#可选项(常用)
--filter		#根据提供的条件筛选输出

eg:
[root@localhost ~]# docker search mysql --filter=STARS=3000		#搜索出来的都是STARS大于3000的
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   11647     [OK]       
mariadb   MariaDB Server is a high performing open sou…   4433      [OK]  

#了解更多
 docker search --help    
docker pull 镜像名:tag 			#下载镜像

eg:
[root@localhost ~]# docker pull mysql
Using default tag: latest				#如果不写tag,默认就是latest(最新版)
latest: Pulling from library/mysql
b380bbd43752: Already exists 			#分层下载,docker image的核心,联合文件系统
f23cbf2ecc5d: Pull complete 
30cfc6c29c0a: Pull complete 
b38609286cbe: Pull complete 
8211d9e66cd6: Pull complete 
2313f9eeca4a: Pull complete 
7eb487d00da0: Pull complete 
4d7421c8152e: Pull complete 
77f3d8811a28: Pull complete 
cce755338cba: Pull complete 
69b753046b9f: Pull complete 
b2e64b0ab53c: Pull complete 
Digest: sha256:6d7d4524463fe6e2b893ffc2b89543c81dec7ef82fb2020a1b27606666464d87		#签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest			#真实地址



#等价
docker pull mysql 等价于 docker pull docker.io/library/mysql:latest

#指定版本下载
docker pull mysql:5.7(这个版本我已经在docker hub查过有这个版本,不能随便写)

#了解更多
 docker pull --help    
docker rmi -f 镜像ID     		#删除镜像

docker rmi -f 镜像ID 				#删除指定镜像
docker rmi -f 镜像ID 镜像ID 镜像ID 	#删除多个镜像
docker rmi -f $(docker images -aq)	#删除全部的镜像

三、容器命令

docker ps 			#列出当前正在运行的容器

可选参数(常用):
-a 		#列出正在运行的容器+历史运行过的容器

#了解更多
 docker ps --help    
docker run [可选参数] 镜像ID	启动后进入的目录				#新建容器并启动

#参数说明(常用)
--name="Name" 			#容器名称,如:tomcat01,tomcat02 用来区分容器
-d						#后台方式运行
-it						#使用交互方式运行,进入容器查看内容
-p						#指定容器的端口,默认什么都不写的情况下,(该 P 是大写)随机指定端口
	主机端口:容器端口(常用)		eg:-p 8080:8080
	
启动后进入的目录			eg: /bin/bash 或 /root

eg:
[root@localhost ~]# docker run -it --name="mysql_01" mysql /bin/bash
root@39b60d099519:/# ls
bin   dev                         entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint-initdb.d  etc            lib   media  opt  root  sbin  sys  usr
root@39b60d099519:/# 



#从容器内退回主机
输入 exit   		#容器停止并退出
按下 Ctrl+P+Q	#容器不停止退出


#了解更多
 docker run --help    
docker rm 容器ID					#删除指定的容器,不能删除正在运行的容器,如果要强制删除,则 rm -f
docker rm -f $(docker ps -aq)		#删除所有的容器
docker ps -aq|xargs docker rm 		#删除所有的容器
docker start 容器ID			#启动容器
docker restart 容器ID		#重启容器
docker stop 容器ID			#停止当前正在运行的容器
docker kill 容器ID			#强制停止当前容器

四、其他常用命令

docker logs -tf --tail 数字 容器ID				#显示容器的日志

常用参数:
-tf   		#显示日志
--tail		#要显示的日志条数

eg:
docker logs -tf --tail 10 容器ID


#了解更多
 docker log --help    
docker top 容器ID			#查看容器中进程信息

#了解更多
 docker top --help 
docker inspect 容器ID		#查看镜像的元数据

#了解更多
 docker inspect --help 

我们通常容器都是使用后台方式运行的,后续在进入容器进行一些操作


方式一:			docker exec -it 容器ID 要进入的目录				#进入当前正在运行的容器

eg:
docker exec -it 容器ID /bin/bash



方式二:			docker attach 容器ID						#进入当前正在运行的容器



docker exec			#进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach		#进入容器正在执行的终端,不会启动新的进程


#了解更多
 docker exec --help 
 docker attach --help
docker cp 容器ID:容器内路径 目的主机路径			#从容器内拷贝文件到主机上(不常用,知道就行)

eg:
docker cp 容器ID:/home/test.java /home

docker commit -m="提交的描述信息" -a "作者" 容器ID 新镜像名 tag			#提交容器成为一个新镜像(不常用,知道就行)

五、容器数据卷

什么是容器数据卷技术?

容器之间有一个数据共享技术,就是Docker容器中的数据会同步到本地主机上,在本地主机上的操作的数据同步到Docker容器中,这就是容器数据卷技术
方式一:直接使用命令挂载 -v
docker run -it -v 主机目录:容器内目录

eg:
docker run -it -v /home/ceshi:/home centos /bin/bash

当容器启动后,我们可以通过 docker inspect 容器Id 查看Mounts挂载信息

上面这是指定路径挂载!




匿名挂载:
	-v 容器内路径
eg:docker run -it -v /home centos /bin/bash





具名挂载(推荐使用):
	-v 卷名:容器内路径
eg:docker run -it -v ceshi:/home centos /bin/bash

所有的docker 容器内的卷,没有指定目录的情况下都是在 /var/lib/docker/volumes/... 下



方式二:是使用dockerfile在构建镜像时就挂载,说到dockerfile在说这个





拓展:
通过 ro 和 rw 改变读写权限

ro		#只读
rw		#可读可写

eg:
docker run -it -v ceshi:/home:ro centos /bin/bash
docker run -it -v ceshi:/home:rw centos /bin/bash

只要看到ro就说明这个路径只能通过主机来操作,容器内部是无法操作
多个容器实现数据共享

eg:
docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name myaql_01 mysql

docker run -d -p 3310:3306 --volumes-from myaql_01 -e MYSQL_ROOT_PASSWORD=123456 --name myaql_02 mysql

这个时候,两个mysql实现数据共享
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

‘秋歌:

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值