03-Docker常用命令

帮助命令

1
2
3
4
5
6
# 版本信息
docker version
# 系统信息
docker info
# 命令大全
docker 命令 --help

命令帮助文档地址:https://docs.docker.com/engine/reference/commandline
镜像搜索地址:https://hub.docker.com/

镜像命令

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

1
2
3
4
5
6
7
docker images
# 解释
REPOSITORY: 镜像的仓库源
TAG: 镜像的标签
IMAGE ID: 镜像的ID
CREATED: 镜像的创建时间
SIZE: 镜像的大小

docker search 搜索镜像

1
2
3
4
5
# 搜索MySQL镜像
docker search mysql

# 过滤收藏数大于3000的starts
docker search mysql -f=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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 下载最新版MySQL
docker pull mysql

# 指定下载版本
docker pull mysql:[tag]

# 解释
docker pull mysql
Using default tag: latest # tag缺失,默认最新版
latest: Pulling from library/mysql
bb79b6b2107f: Pull complete # 分层下载
49e22f6fb9f7: Pull complete
842b1255668c: Pull complete
9f48d1f43000: Pull complete
c693f0615bce: Pull complete
8a621b9dbed2: Pull complete
0807d32aef13: Pull complete
a56aca0feb17: Pull complete
de9d45fd0f07: Pull complete
1d68a49161cc: Pull complete
d16d318b774e: Pull complete
49e112c55976: Pull complete
Digest: sha256:8c17271df53ee3b843d6e16d46cff13f22c9c04d6982eb15a9a47bd5c9ac7e2d
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

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

# 指定版本下载(版本需要明确出现在docker hub中)
docker pull mysql:5.7
5.7: Pulling from library/mysql
bb79b6b2107f: Already exists
49e22f6fb9f7: Already exists
842b1255668c: Already exists
9f48d1f43000: Already exists
c693f0615bce: Already exists
8a621b9dbed2: Already exists
0807d32aef13: Already exists # 前7个已存在,不需要重新下载
f15d42f48bd9: Pull complete # UnionFS 联合文件系统
098ceecc0c8d: Pull complete
b6fead9737bc: Pull complete
351d223d3d76: Pull complete
Digest: sha256:4d2b34e99c14edb99cdd95ddad4d9aa7ea3f2c4405ff0c3509a29dc40bcb10ef
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

docker rmi 删除镜像

1
2
3
4
# docker rmi -f 镜像id1 镜像id2 镜像id3
# 删除所有镜像 docker rmi -f $(docker images -aq),其中$(传递的参数)

docker rmi db2b37ec618

容器命令

说明:在拥有镜像的前期下才可以创建容器,这里使用centos镜像。

下载centos
docker pull centos

新建容器并启动
docker run [可选参数] image
参数说明

1
2
3
4
5
6
7
8
9
--name="Name"   容器名 tomcat01 tomcat02,用来区分容器
-d 后台方式运行
-it 交互方式运行,可进入容器查看内容
-p 小写p指定容器的端口
-p 主机端口:容器端口
-p 容器端口
-p ip:主机端口:容器端口
容器端口
-P 随机指定容器端口

启动并进入容器

1
2
docker run -it centos /bin/bash
[root@17423af695a2 /]#

查看根目录结构,基本版centos(很多命令不完善)

1
2
[root@17423af695a2 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var

查看所有运行的容器

1
2
3
4
5
6
7
docker ps [可选参数]

## 参数说明
缺省 显示当前正在运行的容器
-a 显示当前正在运行+历史运行过的容器
-n=? 显示最近创建的n个容器
-q 仅显示容器id

退出容器

1
2
exit                    # 直接退出并停止容器
【快捷键】Ctrl + P + Q # 不停止容器退出

删除容器

1
2
3
4
5
6
# 删除指定容器,不可删除正在运行的容器,强制删除 rm -f
docker rm 容器id
# 强制删除所有容器
docker rm -f $(docker ps -aq)
# 管道符方式删除所有容器
docker ps -aq | xagrs docker rm -f

启动和停止容器

1
2
3
4
5
6
7
8
# 启动
docker start 容器id
# 重启
docker restart 容器id
# 停止
docker stop 容器id
# 杀死
docker kill 容器id

常用其他命令

后台启动容器

1
2
3
4
5
# 命令 docker run -d 镜像名
docker run -d centos

# 问题docker ps 发现centos停止
# 坑:docker容器使用后台运行,必须要有一个前台进程。docker发现没有引用,就会自动停止

查看日志命令

1
2
3
4
5
docker logs [可选参数] 容器id
# 显示日志
-tf
# 指定日志条数
--tail=number

查看进程信息

1
docker top 容器id

查看容器原数据

1
2
# 容器的环境变量、配置信息等等
docker inspect 容器id

进入当前正在运行的容器

1
2
3
4
5
6
# 通常容器以后台的方式运行,此时可通过一下命令进入该挂起的容器
## 方式一(进入后开启一个新的terminal))
docker exec -it 容器id /bin/bash

## 方式二(进入正在执行的终端,不会启动新的进程)
docker attach 容器id

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

1
2
3
4
5
6
# 从容器到主机
docker cp 容器id:源地址 目的地址
# 从主机到容器
docker cp 源地址 容器id:目的地址
# 拷贝文件不需要容器正在运行
# 当前拷贝文件为手动操作,后期可以通过 -v 卷技术自动同步
码哥 wechat
欢迎关注个人订阅号:「码上行动GO」