Docker常用命令

Docker基础命令

查看版本信息

1
2
3
docker version

docker info

帮助命令

1
docker --help

比如我们忘记了 拉取命令 不知道可以带哪些参数,可以这样使用:

1
docker pull --help

Docker镜像命令

查看镜像列表

1
docker images

查看镜像列表

其中,各个字段具体含义:

REPOSITORY:镜像仓库源

TAG:镜像的标签

IMAGE ID:镜像id

CREATED:创建时间

SIZE:大小

1
2
3
4
docker images -a           # 列出本地所有的镜像
docker images -q # 只显示镜像ID
docker images --digests # 显示镜像的摘要信息
docker images --no-trunc # 显示完整的镜像信息

搜索镜像

1
docker search 镜像名

例如:在Docker Hub上查找star数量大于300的tomcat镜像:

1
docker search --filter=stars=300 tomcat

查找镜像

NAME:名称
DESCRIPTION:描述
STARS:点赞,关注度
OFFICIAL:是否官方
AUTOMATED:是否自动构建

拉取镜像

1
2
3
docker pull tomcat	# 从Docker Hub上下载tomcat镜像,默认是最新版本。等价于:
docker pull tomcat:latest
docker pull tomcat:8 # 选择指定版本下载

拉取镜像

如果需要确认是否有需要下载的版本,可以去官网搜索

运行镜像

这一步命令涉及到容器,建议暂时不要运行

1
2
docker run 镜像名
docker run 镜像名:Tag

删除镜像

1
2
3
4
5
6
7
8
# 单个镜像删除,相当于:docker rmi java:latest
docker rmi java
# 强制删除(删除正在运行的镜像,注:以后台方式运行的不能被强制删除)
docker rmi -f java
# 多个镜像删除,不同镜像间以空格间隔
docker rmi -f java tomcat nginx
# 删除本地全部镜像
docker rmi -f $(docker images -q)

保存镜像

将我们的镜像保存为tar压缩文件,这样方便镜像转移和保存,然后,可以在任何一台安装了docker的服务器上加载这个镜像

1
2
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
docker save tomcat -o /myimg.tar

加载镜像

任何装docker的地方加载镜像保存文件,使其恢复为一个镜像

1
2
docker load -i 镜像保存文件位置
docker load -i redis.tar

加载镜像

Docker容器命令

查看命令

1
2
3
4
5
6
7
8
# 查看正在运行的容器
docker ps
# 查看所有容 包括停止的容器
docker ps -a
# -q参数,只显示container id
docker ps -q
# 查看容器详细信息
docker inspect demo1

运行容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 新建并启动容器,参数:-i  以交互模式运行容器;-t  为容器重新分配一个伪输入终端;--name  为容器指定一个名称
docker run -i -t --name mycentos 镜像名称/镜像ID

# 后台启动容器,参数:-d 已守护方式启动容器
docker run -d mycentos

# 启动止容器
docker start 容器id
# 重启容器
docker restart 容器id
# 关闭容器
docker kill 容器id
docker stop 容器id

-t 参数让Docker分配一个伪终端并绑定到容器的标准输入上
-i 参数则让容器的标准输入保持打开。
-c 参数用于给运行的容器分配cpu的shares值
-m 参数用于限制为容器的内存信息,以 B、K、M、G 为单位
-v 参数用于挂载一个volume,可以用多个-v参数同时挂载多个volume
-p 参数用于将容器的端口暴露给宿主机端口 格式:host_port:container_port 或者 host_ip:host_port:container_port
--name 容器名称(别名)
--net 容器使用的网络
-d 创建一个后台运行容器
--restart=always 容器随docker服务启动而启动

停止容器

1
docker stop 容器名/容器ID

重启容器

1
docker restart 容器ID/容器名

启动容器

1
docker start 容器ID/容器名

删除容器

1
2
3
4
5
6
# 删除一个容器
docker rm -f 容器名/容器ID
# 删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
# 删除全部容器
docker rm -f $(docker ps -aq)

容器日志

1
2
3
4
5
6
# 查看redis容器日志,默认参数
docker logs tomcat
# 查看redis容器日志,参数:-f 跟踪日志输出;-t 显示时间戳;--tail 仅列出最新N条容器日志;
docker logs -f -t --tail=20 redis
# 查看容器redis从2021年08月10日后的最新10条日志。
docker logs --since="2021-08-10" --tail=10 redis

容器交互

1
2
docker exec -it 容器id bashShell(/bin/bash)
docker attach 容器id bashShell(/bin/bash)

exec:进入容器后,开启一个新的终端,可以再里面操作;

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

1
2
3
4
# 直接退出  未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭  
exit
# 优雅退出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q

更换容器名

1
docker rename 容器ID/容器名 新容器名

端口映射

每一个 Docker容器都是独立和安全的应用平台(我们可以理解为,每一个docker容器都相当于在我们的服务器上占用资源然后开辟了属于自己的一个空间,也可以理解为服务器)。默认情况下,我们是无法通过宿主机(安装docker的服务器)端口来直接访问容器的,因为docker容器自己开辟空间的端口与宿主机端口没有联系。

如果外部想要访问容器,那必须得让容器中的端口与宿主机的端口建立联系绑定起来,这个正式的概念叫做 容器端口映射。有了端口映射,我们就可以将宿主机端口与容器端口绑定起来,比如:我们建立宿主机的6379端口与容器redis的6379端口绑定起来,那么再访问宿主机ip:6379就可以访问到对应容器了!