Docker 的常用命令

Docker 的常用命令

快速查看

port # 查看映射端口对应的容器内部源端口
pause # 暂停容器
ps # 猎户容器列表
pull # 从docker镜像源服务器拉取指定镜像或者库镜像
push # 推送指定镜像或者库镜像至docker源服务器
restart # 重启运行的容器
rm # 移除一个或多个容器
rmi # 移除一个或多个镜像 (无容器使用该镜像才可删除,否则需要删除相关容器才可继续或 -f 强制删除)
run # 创建一个新的容器并运行一个命令
save # 保存一个镜像为一个 tar 包【对应 load】
search # 在 docker hub 中搜索镜像
start # 启动容器
stop # 停止容器
tag # 给源中镜像打标签
top # 查看容器中运行的进程信息
unpause # 取消暂停容器
version # 查看 docker版本号
wait # 截取容器停止时的退出状态值

帮助命令

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

帮助文档的地址:使用 Docker 命令行|Docker 文档

镜像命令

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

[root@rui ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   3 months ago   13.3kB

# 解释
REPOSITORY      镜像的仓库源
TAG				镜像的标签
IMAGE ID			镜像的ID
CREATED			镜像的创建时间
SIZE				镜像的大小
# 可选项
  -a, --all             # 显示所有的镜像
  -q, --quiet           #只显示镜像的id

docker search搜索镜像

[root@rui ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11848     [OK]
mariadb                           MariaDB Server is a high performing open sou…   4521      [OK]


# 可选项 通过搜索来过滤
–filter-STARS=3000 搜索出来的镜像就是STARS大于3000的
[root@rui ~]# docker search mysql --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11848 [OK]
mariadb MariaDB Server is a high performing open sou… 4521 [OK]
[root@rui ~]# docker search mysql --filter=STARS=5000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11848 [OK]

docker pull 下载镜像

# 下载镜像 docker pull 镜像名[:tag]
[root@rui ~]# docker pull mysql
Using default tag: latest				# 如果不写tag ,默认就是latest
latest: Pulling from library/mysql
72a69066d2fe: Pull complete			# 分层下载,docker image的核心 联合文件系统
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest		# 真实地址

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

# 指定版本下载  

[root@rui ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
0ceb82207cd7: Pull complete
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7

docker rmi 删除镜像

[root@rui ~]# docker rmi -f 镜像id  删除指定的镜像
[root@rui ~]# docker rmi -f 镜像id 镜像id  镜像id 删除多个镜像 
[root@rui ~]# docker rmi  -f $(docker images -aq)  删除全部的镜像

容器命令

🛰 说明:我们有了镜像才可以创建容器,Linux ,下载一个centos镜像来测试学习

docker pull centos:7

新建容器并启动

docker run [可选参数] image
# 参数说明
--name=“Name”   容器名字 tomcat01 tomcat02 ,用来区分容器
-d 				后台方式运行
-it				使用交互方式运行,进入容器查看内容
-p					指定容器的端口	-p 8080:8080
	-p ip:主机端口:容器端口
   -p 主机端口:容器端口 (常用)
   -p 容器端口
-P					随机指定端口


测试启动容器并进入容器
[root@rui ~]# docker run -it centos:7 /bin/bash
[root@51ccddde3493 /]# ls 查看容器内部的centos基础版本,很多命令都不完善
anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
退出容器
[root@51ccddde3493 /]# exit
exit

列出所有的运行的容器

# docker ps 命令
	# 列出当前正在运行的容器
-a	# 列出当前正在运行的容器+带出历史运行过得容器
-n=?# 显示最近创建的容器
-q	# 只显示容器的编号


[root@rui ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@rui ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
51ccddde3493 centos:7 "/bin/bash" 10 minutes ago Exited (0) 4 minutes ago dazzling_kalam
3059907cda01 feb5d9fea6a5 "/hello" 2 days ago Exited (0) 2 days ago flamboyant_swanson

退出容器

exit		#直接容器停止并退出
ctrl + p + q # 容器不停止退出

删除容器

docker rm 容器id				#删除指定的容器,不能删除正在运行的容器,如果强制删除 rm  -f 
docker rm -f $(docker ps -aq) #删除所有容器
docker ps -a -q | xargs docker rm # 删除所有容器

启动和停止容器的操作

docker start 1678b91c80f1					# 启动容器
docker restart 1678b91c80f1				# 重启容器
docker stop 1678b91c80f1					# 停止当前正在运行的容器
docker kill 1678b91c80f1					# 强制停止当前容器

常用的其他命令

后台启动容器

# 命令docker run -d 镜像名
[root@rui ~]# docker run -d centos:7

# 问题docker ps, 发现centos 停止l
# 常见的坑:docker 容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自己自动停止
# 安装nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

查看日志

docker logs -f -t --tail 行数 容器,没有日志
# 自己编写一段shell脚本
[root@rui ~]# docker run -d centos:7 /bin/bash -c"while true;do echo kuangshi;sleep 1;done"
[root@rui ~]# docker ps
CONTAINER ID   IMAGE      
1803bdab3c81   centos:7 

# 显示日志
-tf			#显示日志
--tail 行数	#要显示日志的条数
[root@rui ~]# docker logs -tf  1803bdab3c81
[root@rui ~]# docker logs -tf --tail 10 1803bdab3c81

查看容器中进程信息ps

命令 docker top 容器id
[root@rui ~]# docker top acc862808488
UID       PID              PPID               C                 STIME               TTY        root      10766           10748               0                 17:05               pts/0    

查看容器元数据

[root@rui ~]# docker inspect --help

Usage:  docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Return low-level information on Docker objects

Options:
  -f, --format string   Format the output using the given Go template
  -s, --size            Display total file sizes if the type is container
      --type string     Return JSON for specified type

进入当前正在运行的容器

# 我们通常容器都是使用后台方式运行,需要进入容器,修改配置

# 命令
docker exec -it 容器id bashshell

# 测试
[root@rui ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED      STATUS         PORTS     N                                                       AMES
acc862808488   centos:7   "/bin/bash"   2 days ago   Up 3 seconds             s                                                       toic_wozniak
[root@rui ~]# docker exec -it acc862808488 /bin/bash
[root@acc862808488 /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr

# 方式二
docker attach 容器id
# 测试
[root@rui ~]# docker attach acc862808488
[root@acc862808488 /]#
正在执行当前的代码。。
# docker exec		# 进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach 		# 进入容器正在执行的终端,不会启动新的进程

从容器拷贝文件到主机

docker cp 容器id:容器内路径 目标主机路径
# 进入docker容器
[root@rui home]# docker attach 240db4545d1e
[root@240db4545d1e /]# cd /home/
# 创建一个文件
[root@240db4545d1e home]# touch 6.txt
[root@240db4545d1e home]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 29 09:46 6.txt
# 退出容器,把文件拷贝到主机上
[root@rui home]# docker cp 240db4545d1e:/home/6.txt /home/
[root@rui home]# ll
总用量 0
-rw-r--r-- 1 root root 0 12月 29 17:46 6.txt
-rw-r--r-- 1 root root 0 12月 29 17:43 kuangsheng.jar
# 拷贝是一个手动过程 未来我们使用 -V 卷的技术。可以实现
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值