1.基础命令

Docker三个重要概念:仓库(Repository)、镜像(image)和 容器(Container)
Docker指令的基本用法:
docker +命令关键字(COMMAND)+一系列的参数
例子:docker run —name MyWordPress —link db:mysql -p 8080:80 -d wordpress

帮助命令

  1. docker version #显示docker 版本信息
  2. docker info #显示 docker 系统信息 包括镜像和容器数
  3. docker --help #帮助

镜像命令

docker tar

docker tar     # 修改标签
docker   tar   tomcat:v1.0   192.168.88.10:5000/tomcat:v1.0

docker image

1 # 列出本地主机上的镜像
2 [root@kuangshen ~]# docker images
3 REPOSITORY TAG IMAGE ID CREATED
SIZE
4 hello-world latest bf756fb1ae65 4 months ago
13.3kB
5
6 # 解释
7 REPOSITORY 镜像的仓库源
8 TAG 镜像的标签
9 IMAGE ID 镜像的ID
10 CREATED 镜像创建时间
11 SIZE 镜像大小
12
13 # 同一个仓库源可以有多个 TAG,代表这个仓库源的不同版本,我们使用REPOSITORY:TAG 定义不同
的镜像,如果你不定义镜像的标签版本,docker将默认使用 lastest 镜像!
14
15 # 可选项
16 -a: 列出本地所有镜像
17 -q: 只显示镜像id
18 —digests: 显示镜像的摘要信息

docker search

1 # 搜索镜像
2 [root@kuangshen ~]# docker search mysql
3 NAME DESCRIPTION STARS
OFFICIAL
4 mysql MySQL is a widely used, open-source relation… 9484
[OK]
5
6 # docker search 某个镜像的名称 对应DockerHub仓库中的镜像
7
8 # 可选项
9 —filter=stars=50 : 列出收藏数不小于指定值的镜像。

docker pull

1 # 搜索镜像
2 [root@kuangshen ~]# docker search mysql
3 NAME DESCRIPTION STARS
OFFICIAL
4 mysql MySQL is a widely used, open-source relation… 9484
[OK]
5
6 # docker search 某个镜像的名称 对应DockerHub仓库中的镜像
7
8 # 可选项
9 —filter=stars=50 : 列出收藏数不小于指定值的镜像。
14 82a1cc65c182: Pull complete
15 a0a6b01efa55: Pull complete
16 bca5ce71f9ea: Pull complete
17 Digest:
sha256:61a2a33f4b8b4bc93b7b6b9e65e64044aaec594809f818aeffbff69a893d1944 #
签名
18 Status: Downloaded newer image for mysql:latest
19 docker.io/library/mysql:latest # 真实位置
20
21 # 指定版本下载
22 [root@kuangshen ~]# docker pull mysql:5.7
23 ….

docker rmi

1 # 删除镜像
2 docker rmi -f 镜像id # 删除单个
3 docker rmi -f 镜像名:tag 镜像名:tag # 删除多个
4 docker rmi -f $(docker images -qa) # 删除全部


容器命令

创建容器并运行 docker run

1 # 命令
2 docker run [OPTIONS] IMAGE [COMMAND][ARG…]
3
4 # 常用参数说明
5 —name=”Name” # 给容器指定一个名字
6 -d # 后台方式运行容器,并返回容器的id!
7 -i # 以交互模式运行容器,通过和 -t 一起使用
8 -t # 给容器重新分配一个终端,通常和 -i 一起使用
9 -P # 随机端口映射(大写)
10 -p # 指定端口映射(小结),一般可以有四种写法
11 ip:hostPort:containerPort
12 ip::containerPort
13 hostPort:containerPort (常用)
14 containerPort
15
16 # 测试
17 [root@kuangshen ~]# docker images
18 REPOSITORY TAG IMAGE ID CREATED
SIZE
19 centos latest 470671670cac 3 months ago
237MB
20
21 # 使用centos进行用交互模式启动容器,在容器内执行/bin/bash命令!
22 [root@kuangshen ~]# docker run -it centos /bin/bash
23 [root@dc8f24dd06d0 /]# ls # 注意地址,已经切换到容器内部了!
24 bin etc lib lost+found mnt proc run srv tmp var
25 dev home lib64 media opt root sbin sys usr

列出所有运行的容器 docker ps

1 # 命令
2 docker ps [OPTIONS]
3
4 # 常用参数说明
5 -a # 列出当前所有正在运行的容器 + 历史运行过的容器
6 -l # 显示最近创建的容器
7 -n=? # 显示最近n个创建的容器
8 -q # 静默模式,只显示容器编号。

退出容器

1 exit # 容器停止退出
2 ctrl+P+Q # 容器不停止退出

启动 停止容器 docker start|restart|stop|kill

1 docker start (容器id or 容器名) 启动容器
2 docker restart (容器id or 容器名) 重启容器
3 docker stop (容器id or 容器名) 停止容器
4 docker kill (容器id or 容器名) 强制停止容器

删除容器 docker rm

1 docker rm 容器id # 删除指定容器
2 docker rm -f $(docker ps -a -q) # 删除所有容器
3 docker ps -a -q|xargs docker rm # 删除所有容器

其它常用命令

后台启动容器

1 # 命令
2 docker run -d 容器名
3
4 # 例子
5 docker run -d centos # 启动centos,使用后台方式启动
6
7 # 问题: 使用docker ps 查看,发现容器已经退出了!
8 # 解释:Docker容器后台运行,就必须有一个前台进程,容器运行的命令如果不是那些一直挂起的命
令,就会自动退出。
9 # 比如,你运行了nginx服务,但是docker前台没有运行应用,这种情况下,容器启动后,会立即自
杀,因为他觉得没有程序了,所以最好的情况是,将你的应用使用前台进程的方式运行启动。

查看日志 docker logs

1 # 命令
2 docker logs -f -t —tail 容器id
3
4 # 例子:我们启动 centos,并编写一段脚本来测试玩玩!最后查看日志
5 [root@kuangshen ~]# docker run -d centos /bin/sh -c “while true;do echo
kuangshen;sleep 1;done”
6
7 [root@kuangshen ~]# docker ps
8 CONTAINER ID IMAGE
9 c8530dbbe3b4 centos
10
11 # -t 显示时间戳
12 # -f 打印最新的日志
13 # —tail 数字 显示多少条!
14 [root@kuangshen ~]# docker logs -tf —tail 10 c8530dbbe3b4
15 2020-05-11T08:46:40.656901941Z kuangshen
16 2020-05-11T08:46:41.658765018Z kuangshen
17 2020-05-11T08:46:42.661015375Z kuangshen
18 2020-05-11T08:46:43.662865628Z kuangshen
19 2020-05-11T08:46:44.664571547Z kuangshen
20 2020-05-11T08:46:45.666718583Z kuangshen
21 2020-05-11T08:46:46.668556725Z kuangshen
22 2020-05-11T08:46:47.670424699Z kuangshen
23 2020-05-11T08:46:48.672324512Z kuangshen
24 2020-05-11T08:46:49.674092766Z kuangshen

查看容器中运行的进程信息 docker top

1 # 命令
2 docker top 容器id
3
4 # 测试
5 [root@kuangshen ~]# docker top c8530dbbe3b4
6 UID PID PPID C STIME TTY TIME CMD
7 root 27437 27421 0 16:43 ? 00:00:00 /bin/sh -c ….

查看容器/镜像得元数据 docker inspect

1 # 命令
2 docker inspect 容器id
3
4 # 测试
5 [root@kuangshen ~]# docker inspect c8530dbbe3b4
6 [
7 {
8 # 完整的id,有意思啊,这里上面的容器id,就是截取的这个id前几位!
9 “Id”:
“c8530dbbe3b44a0c873f2566442df6543ed653c1319753e34b400efa05f77cf8”,
10 “Created”: “2020-05-11T08:43:45.096892382Z”,
11 “Path”: “/bin/sh”,
12 “Args”: [
13 “-c”,
14 “while true;do echo kuangshen;sleep 1;done”
15 ],
16 # 状态
17 “State”: {
18 “Status”: “running”,
19 “Running”: true,
20 “Paused”: false,
21 “Restarting”: false,
22 “OOMKilled”: false,
23 “Dead”: false,
24 “Pid”: 27437,
25 “ExitCode”: 0,
26 “Error”: “”,
27 “StartedAt”: “2020-05-11T08:43:45.324474622Z”,
28 “FinishedAt”: “0001-01-01T00:00:00Z”
29 },
30 // ………..
31

进入正在运行中的容器 docker exec|attach

1 # 命令1
2 docker exec -it 容器id bashShell
3
4 # 测试1
5 [root@kuangshen ~]# docker ps
6 CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
7 c8530dbbe3b4 centos “/bin/sh -c ‘while t…” 12 minutes
ago Up 12 minutes happy_chaum
8 [root@kuangshen ~]# docker exec -it c8530dbbe3b4 /bin/bash
9 [root@c8530dbbe3b4 /]# ps -ef
10 UID PID PPID C STIME TTY TIME CMD
11 root 1 0 0 08:43 ? 00:00:00 /bin/sh -c while true;do
echo kuangshen;sleep
12 root 751 0 0 08:56 pts/0 00:00:00 /bin/bash
13 root 769 1 0 08:56 ? 00:00:00 /usr/bin/coreutils —
coreutils-prog-shebang=s
14 root 770 751 0 08:56 pts/0 00:00:00 ps -ef
15
16 # 命令2
17 docker attach 容器id
18
19 # 测试2
20 [root@kuangshen ~]# docker exec -it c8530dbbe3b4 /bin/bash
21 [root@c8530dbbe3b4 /]# ps -ef
22 UID PID PPID C STIME TTY TIME CMD
23 root 1 0 0 08:43 ? 00:00:00 /bin/sh -c while true;do
echo kuangshen;sleep
24 root 856 0 0 08:57 pts/0 00:00:00 /bin/bash
25 root 874 1 0 08:57 ? 00:00:00 /usr/bin/coreutils —
coreutils-prog-shebang=s
26 root 875 856 0 08:57 pts/0 00:00:00 ps -ef
27
28 # 区别
29 # exec 是在容器中打开新的终端,并且可以启动新的进程
30 # attach 直接进入容器启动命令的终端,不会启动新的进程

从容器拷贝文件到主机上 docker cp

1 # 命令
2 docker cp 容器id:容器内路径 目的主机路径
3
4 # 测试
5 # 容器内执行,创建一个文件测试
6 [root@c8530dbbe3b4 /]# cd /home
7 [root@c8530dbbe3b4 home]# touch f1
8 [root@c8530dbbe3b4 home]# ls
9 f1
10 [root@c8530dbbe3b4 home]# exit
11 exit
12
13 # linux复制查看,是否复制成功
14 [root@kuangshen ~]# docker cp c8530dbbe3b4:/home/f1 /home
15 [root@kuangshen ~]# cd /home
16 [root@kuangshen home]# ls
17 f1

小结

image.jpeg

总结

image.jpeg
image.jpeg
image.jpeg
image.jpeg
image.jpeg
id号默认是128位 我们的系统只显示16位
image.jpeg

run 延申

只能在run 后加入
image.jpeg
例子 :
删除全部容器
docker rm -f $( docker - a -q )
后边列出 id 号 前边删除