凡是过往,皆为序章

0%

Docker_02

Docker 的常用命令合集。


Docker常用命令

官方给出的概览图,很生动形象,学完下面命令后再看此图很有帮助。

帮助命令

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

还可以查看官方的命令 帮助文档

镜像命令

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

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@kuangshen /]# docker imagesREPOSITORY
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 10 months ago 13.3kB

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

docker search (镜像名字):搜索镜像

1
2
3
4
5
6
7
root@localhost ~]# docker search mysql
NAME DESCRIPTION STARS
mysql MySQL is a widely used, open-source relation… 10196 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3753 [OK]

# 可选项 通过过滤来搜索
--filter=STARS=3000 # 搜索镜像的STARS数大于3000的

docker pull:下载镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 下载镜像 docker pull 镜像名[:tag]
[root@localhost ~] # docker pull mysql
Using default tag: latest # 如果不写 tag,默认是 latest
latest: Pulling from library/mysql
852e50cd189d: Pull complete # 分层下载,docker image的核心 联合文件下载
29969ddb0ffb: Pull complete
a43f41a44c48: Pull complete
5cdd802543a3: Pull complete
b79b040de953: Pull complete
938c64119969: Pull complete
7689ec51a0d9: Pull complete
a880ba7c411f: Pull complete
984f656ec6ca: Pull complete
9f497bce458a: Pull complete
b9940f97694b: Pull complete
2f069358dc96: Pull complete
Digest: sha256:4bb2e81a40e9d0d59bd8e3dc2ba5e1f2197696f6de39a91e90798dd27299b093 # 唯一签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latestdocker.io/library/mysql:latest # 真实地址

# 以下两个命令相互等价
docker pull mysql
docker pull docker.io/library/mysql:latest

# 指定版本下载,可在docker hub上查阅版本信息
docker pull mysql:5.7

docker rmi:删除镜像(rm image)

1
2
3
docker rmi -f 镜像id # 删除指定id的镜像
docker rmi -f 镜像id 镜像id ... # 删除多个镜像
docker rmi -f $(docker images -aq) # 删除全部镜像

容器命令

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

1
docker pull centos

新建容器并启动

1
2
3
4
5
6
7
8
9
10
11
12
docker run [可选参数] image(镜像名字)

# 参数说明
--name="Name" # 容器名字 tomcat1 tomcat2,用来区分容器
-d # 后台方式运行
-it # 使用交互方式运行,进入容器查看内容
-p # 指定容器的端口
-p 主机端口:容器端口(常用)
-p ip:主机端口:容器端口
-p 容器端口
容器端口
-P # 随机指定端口

退出当前容器

1
2
3
exit					# 停止容器并退出

快捷键:Ctrl + P + Q # 容器不停止并退出

测试:启动并进入容器centos

1
2
3
4
5
6
7
8
9
[root@localhost ~]# docker run -it centos /bin/bash
[root@1a52b837b77a /]# ls # 查看容器内的centos,基础版本,很多命令不完善
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr

# 退出当前容器
[root@1a52b837b77a /]# exit
exit
[root@localhost ~]#

列出所有运行容器

docker ps 命令

1
2
3
4
5
docker ps # 列出当前正在运行的容器 (exit退出容器,容器不再运行)
参数:
-a # 列出 当前正在运行的容器 + 历史运行过的容器
-n=? # 显示最近创建的容器个数
-q # 只显示容器的编号

删除容器

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

启动和停止容器

1
2
3
4
docker start 容器id		# 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker ki11 容器id # 强制停止当前容器

常用其他重要命令

以上命令是玩 docker 的基本命令,但这还远远不够。

后台启动容器

命令 : docker run -d 镜像名

问题:启动后,docker ps 发现该容器被自动停掉。

原因:docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止

​ 安装nginx镜像,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

查看日志

命令:docker logs

1
2
3
4
5
6
7
8
# 自己编写一段shell脚本
docker run -d centos /bin/bash -c "while true;do echo dongao;sleep 1;done"

docker ps # 查看创建的正在运行的容器
CONTAINER ID IMAGE
6e703303ac9a centos

docker logs -tf --tail 10 6e703303ac9a # 查看该id的前10条日志

查看容器中进程信息

命令 docker top 容器id

查看镜像的元数据

命令 docker inspect 容器id

包含非常多的容器的基本信息,很多信息值得探讨,在以后学习中会提及到。

进入当前正在运行的容器

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

方式一:命令 docker exec -it 容器id bashShell

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e703303ac9a centos "/bin/bash -c 'while…" 17 minutes ago Up 17 minutes condescending_vaughan
[root@localhost ~]# docker exec -it 6e703303ac9a /bin/bash
[root@6e703303ac9a /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 07:11 ? 00:00:00 /bin/bash -c while true;do echo dongao;sleep 1;done
root 1086 0 0 07:29 pts/0 00:00:00 /bin/bash
root 1110 1 0 07:29 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root 1111 1086 0 07:29 pts/0 00:00:00 ps -ef

方式二docker attach 容器id

1
2
[root@localhost ~]# docker attach 6e703303ac9a
正在执行当前的代码...

docker execdocker attach 的 区别

docker exec:进入容器并开启一个新的终端,可以在里面操作(常用)

docker attach:进入容器正在执行的终端,不会启动新的进程。

从容器内拷贝文件到主机上

命令 :docker cp 容器id:容器内路径 主机的目的路径

1
[root@localhost ~]# docker cp d737d4129453:/home/dongao.java /home

所有命令(查阅)

~感谢你请我吃糖果~
-------------本文结束,感谢您的阅读,欢迎评论留言!-------------