1、帮助启动类命令
1.1、启动docker服务
#启动dockersystemctl start docker#docker hello-world 测试docker run hello-world#查看docker进程信息ps -ef | grep docker
1.2、停止docker服务
#停止dockersystemctl stop docker

Warning: Stopping docker.service, but it can still be activated by:docker.socket
这句话的意思是docker服务已经停止,通过 ps -ef | grep docker 可以看出,但是仍然可以被docker指令激活,这里的意思是 docker在关闭状态下被访问自动唤醒机制,即这时再执行任意docker命令会直接启动。
注:如果不希望docker被docker指令唤醒,可以执行在 systemctl stop docker 后在执行
systemctl stop docker.socket
#停止dockersystemctl stop dockersystemctl stop docker.socket
1.3、重启docker
#重启dockersystemctl restart docker
1.4、查看docker状态
#查看docker状态systemctl status docker
1.5、查看docker状态
#开机启动systemctl enable docker
1.6、查看docker概要信息
#查看docker概要信息docker info
1.7、查看docker帮助文档
#查看docker帮助文档docker --help#查看docker命令帮助文档docker 具体命令 --help
2、镜像命令
2.1、查看本地镜像
docker images

REPOSITORY:镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个TAG版本,代表这个仓库源的不同版本,使用REPOSITORY:TAG来定义不同的镜像。如果不指定镜像的版本标签默认使用latest(最新版)标签。
2.2、查询镜像
docker search 镜像名称#例:docker search redis#部分镜像太多可以使用options来限制docker search --limit 5 redis

NAME:镜像名称
DESCRIPTION:镜像描述(说明)
STARS:点赞数量
OFFICIAL:是否是官方
AUTOMATED:是否是自动构建的
2.3、拉取镜像(下载镜像)
说明:一般拉取最多点赞及官方的镜像
#拉取镜像 不写TAG时默认下载latest最新版docker pull 镜像名称#拉取镜像指定版本docker pull 镜像名称[:TAG]#例:docker pull redis:6.0.8
2.4、查询镜像/容器/数据卷所占空间
docker system df
2.5、删除镜像
#删除一个docker rmi -f 镜像ID#删除全部(慎用!!!!)docker rmi -f $(docker images -qa)
3、容器命令
本文使用ubuntu,因为ubuntu比较小,centos也可以
3.1、拉取ubuntu镜像
docker pull ubuntu
3.2、新建、启动容器
docker run [OPTIONS] IMAGE [COMMAND][ARG...]
OPTIONS说明(常用):
1、—name=”容器新名字” 为容器指定一个名称。
2、-d:后台运行容器并返回容器ID,即启动守护式容器(后台运行)。
3、-i:以交互模式运行容器,通常与 -t 同时使用。
4、-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
即启动交互式容器(前端有伪终端,等待交互);
5、-P:随机端口映射,大写P。
6、-p:指定端口映射,小写P、
| 参数 | 说明 |
|---|---|
| -p hostPort:containerPort | 端口映射 -p 8080:80 |
| -p ip:hostPort:containerPort | 配置监听地址 -p 10.0.0.100:8080:80 |
| -p ip::containerPort | 随机分配端口 -p 10.0.0.100::80 |
| -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:终端
ubuntu:使用ubuntu镜像
/bin/bash:放在镜像名后的是命令,这里希望有交互式Shell,所以使用/bin/bash
退出终端,输入exit;
3.3、列出所有运行中的容器
docker ps [OPTIONS]

OPTIONS说明(常用)
-a:列出当前所有正在运行的容器+历史上运行过的
-l:显示最近创建的容器
-n:显示最近n个创建的容器。
-q:静默模式,只显示容器编号。
#指定名称运行ubuntu容器docker run -it --name=zhangsanubuntu ubuntu bash
3.4、退出容器
1、exit ;run进去容器,exit退出,容器停止
exit;

2、ctrl+p+q;run进去容器,ctrl+p+q退出,容器不停止
3.5、启动已经停止的容器
docker start 容器id
3.6、重启容器
docker restart 容器id
3.7、停止容器
docker stop 容器id
3.8、强制停止容器
docker kill 容器id
3.9、删除已停止容器
先停止再删除
docker rm 容器ID

3.10、后台守护式启动容器
前面 -it启动 是交互式启动,该启动方式缺点为关闭交互ctrl+c;或者其他误操作很容易退出容器,像mysql或者redis之类的容器需要一直开启的就不适用。需要适用后台守护式启动。
1、启动ubuntu
docker run -d ubuntu

这里发现以 守护式启动ubuntu时,发现并没有运行中的容器,是因为启动后立即退出了,这是docker机制的问题。
1、docker容器后台运行时,必须有一个前台进程, 如果没有容器认为空闲,就会自行退出。
2、 容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出。
解决方案:
1、以前台交互运行
docker run -it ubuntu /bin/bash
2、使用-dit运行
docker run -dit ubuntu

2、启动redis
docker run -d redis:6.0.8

3.11、查看容器日志
docker logs 容器ID
3.12、查看容器内运行的进程
docker top 容器ID
3.13、查看容器内部细节
docker inspect 容器ID
3.14、进入正在运行的容器并以命令行交互
1、第一种
docker exec -it 容器ID /bin/bash
2、第二种
docker attach 容器ID
两种方式区别
1、attch 直接进入容器启动命令的终端,不会启动新的进程
用exit退出,会导致容器的停止。
2、exec是在容器中打开新的终端,并且可以启动行的进程
用exit退出,不会导致容器的停止。
推荐使用exec命令
3.15、从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径#docker cp 348544169e45:/tmp/move.text /tmp/
3.16、导入和导出容器
1、导出
export 导出容器的内容留作为一个tar归档文件[对应import命令]
docker export 容器ID > 文件名.tar# docker export 348544169e45 > /data/testImage.tar
2、导入
import从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号#cat testImage.tar | docker import - zhangsan/ubuntu:1.1.1



