一、启动类命令
启动docker
systemctl start docker
停止Docker
systemctl stop docker
重启Docker
systemctl restart docker
查看docker状态
systemctl status docker
设置docker开机自启
systemctl enable docker
二、帮助类命令
查看docker概要信息
docker info
查看docker总体帮助文档
docker --help
查看docker命令帮助文档
docker 具体命令 --help
三、镜像命令
列出本地主机上的镜像
docker images
常用参数说明:
- -a:列出本地所有的镜像(含历史映像层)
- -q:只显示镜像ID
各个选项说明:
REPOSITORY: 表示镜像的仓库源
TAG: 镜像的标签版本号
IMAGE ID:镜像ID
CREATED: 镜像创建时间
SIZE: 镜像大小
同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你是使用 ubuntu, docker 将默认使用 ubuntu:latest 镜像
在远程仓库中搜索镜像
docker search 镜像名称
PS:默认是从docker hub(https://hub.docker.com)中搜索,因配置了阿里云镜像,这里是在阿里云镜像仓库搜索。
参数说明:
- -f:过滤
- --limit:只列出N个镜像,默认前25个。例如:docker search --limit 5 rdisc
下载docker镜像
docker pull 镜像名称[:tag]
PS:没有加TAG就是下载最新版,“docker pull 镜像名称”相当于“docker pull 镜像名称:latest”
查看镜像/容器/数据
docker system df
删除docker镜像
docker rmi 镜像名称/镜像ID
docker rmi -f 镜像名称/镜像ID # 强制删除
docker rmi 镜像名1:TAG 镜像名2 镜像名3 #一次性删除多个镜像
docker rmi -f $(docker images -qa) # 强制删除所有镜像
删除单个镜像
docker rmi 镜像名称/镜像ID
删除全部镜像
docker rmi -f $(docker images -qa)
虚悬镜像理解
解释:仓库名、标签都是<none>的镜像,俗称虚悬镜像dangling images
四、容器命令
有镜像才能创建容器,这是根本前提。为了方便理解,这里使用ubuntu镜像。
新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明(常用) : 有些是一个减号,有些是两个减号
- --name="容器新名字" 为容器指定一个名称;
- -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;也即启动交互式容器(前台有伪终端,等待交互);
- -P:随机端口映射,大写P
- -p: 指定端口映射,小写p
参数 | 说明 |
-p hostPort:containerPort | 端口映射:例如 |
-p ip:hostPort:containerPort | 配置监听地址:例如 |
-p ip::containerPort | 随机分配端口:例如 |
-p hostPort:containerPort:udp | 指定协议 -p 8080:80:tcp |
-p 81:80 -p 443:443 | 指定多个端口映射 |
启动交互式容器
使用镜像ubuntu:latest以交互式启动一个容器,在容器内执行/bin/bash命令
docker run -it ubuntu /bin/bash
- -i 交互式操作
- -t 分配一个伪输入终端 tty
- 镜像名称:ubuntu
- shell交互的接口:/bin/bash(或者bash)
不指定名字的交互式容器
docker run -it ubuntu /bin/bash
指定名字的交互式容器
docker run -it --name=myu1 ubuntu /bin/bash
查看运行的两个容器,没有指定名字的容器自定义生成了名字
退出交互式终端
- 直接输入exit即可退回宿主机,退出后,容器停止运行
- 使用快捷方式ctrl+p+q,退出后,容器依然运行
启动守护式容器
在大部分场景下,我们希望docker容器服务时是在后台运行的,可以通过 -d
指定容器的后台运行模式。
docker run -d 容器ID/容器名称
注意事项
使用镜像ubuntu:latest以后台模式启动一个容器。
docker run -d ubuntu
问题: 然后docker ps -a 进行查看,会发现容器已经退出。
docker run -d ubuntu
docker ps
重要说明: Docker容器后台运行,就必须有一个前台进程。
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail) ,就会自动退出。这个是docker的机制问题,比如web容器,以nginx为例,正常情况下,配置启动服务只需要启动响应的service即可。例如service nginx start,但是这样做nginx为后台进程模式运行,就导致docker前台没有运行的应用,这样的容器后台启动后,会立即自杀,因为它觉得没事可做了。所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,别中断。
redis前台后台启动演示case
前台交互式启动
docker run -it redis:6.0.8
后台守护式启动
docker run -d redis:6.0.8
列出正在运行的容器
docker ps [OPTIONS]
[OPTIONS]:
- -a:列出当前所有正在运行的容器+历史上运行过的容器
- -l :显示最近创建的容器
- -n :显示最近n个创建的容器
- -q:静默模式,只显示容器编号
退出容器
通过run进入容器
- 直接输入exit即可退回宿主机,退出后,容器停止运行
- 使用快捷方式ctrl+p+q,退出后,容器依然运行
启动已经停止的容器
docker start 容器ID或容器名称
重启容器
docker restart 容器ID或容器名称
停止容器
docker stop 容器ID或容器名称
强制停止容器
docker kill 容器ID或容器名称
删除容器
删除已经停止的容器
docker rm 容器ID或容器名称
强制删除正在运行的容器
docker rm -f 容器ID或容器名称
一次删除多个容器实例
docker rm -f $(docker ps -aq)
# 或者
docker ps -aq | xargs docker rm
PS:生产环境不要使用这条命令,危险危险危险
查看容器日志
docker logs 容器ID或容器名称
查看容器内运行的进程
docker top 容器ID或容器名称
查看容器内部细节
docker inspect 容器ID或容器名称
进入正在运行的容器并以命令行交互
docker exec -it 容器ID/容器名称 /bin/bash
或者
docker attach 容器ID
exec和attach的区别
exec
是在容器中打开新的终端,并且可以启动新的进程,用exit
退出,不会导致容器的停止。
attach
直接进入容器启动命令的终端,不会启动新的进程,用exit
退出,会导致容器的停止。
推荐大家使用docker exec命令,因为退出容器终端,不会导致容器的停止。
如果有多个终端,都对同一个容器执行了 docker attach
,就会出现类似投屏显示的效果。一个终端中输入输出的内容,在其他终端上也会同步的显示。
从容器内拷贝文件到主机上
容器——>主机
docker cp 容器ID:容器内路径 目的主机路径
导入和导出容器
export
:导出容器的内容流作为一个tar归档文件(对应import
命令)import
:从tar包中的内容创建一个新的文件系统再导入为镜像(对应export
命令)
导出
导出容器成为一个tar包(可以理解为对一个容器进行完整打包)
docker export 容器ID > 文件名.tar
例如:docker export 9e4cc4412666 > abc.tar
导入
导入tar包成为一个镜像(可以理解为将完整打包的容器生成为镜像)
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
例如:cat abc.tar | docker import - fanhe1/ubuntu:3.7
PS:镜像用户、镜像名、镜像版本号均可自定义