帮助启动类命令
- 启动docker:
systemctl start docker
- 停止docker:
systemctl stop docker
- 重启docker:
systemctl restart docker
- 查看docker状态:
systemctl status docker
- 开机启动:
systemctl enable docker
- 关闭开机启动:
systemctl disable docker
- 查看docker概要信息:
docker info
- 查看docker总体帮助文档:
docker --help
- 查看docker命令帮助文档:
docker 具体命令 --help
镜像命令
- 列出本地主机上的镜像:
docker images [OPTIONS]
- -a : 列出本地所有的镜像(含历史映像层)
- -q : 只显示镜像ID
- --digests : 显示摘要(sha256)
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签版本号
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小 - 搜索镜像:
docker search [OPTIONS] 镜像名
- --limit n : 只列出 n 个镜像,默认 25 个
NAME: 镜像名称
DESCRIPTION: 镜像说明
STARS: 点赞数
OFFICIAL: 是否是官方版
AUTOMATED: 是否是自动构建的 -
下载镜像:
docker pull 镜像名[:TAG]
-
查看镜像详细信息:
docker image inspect 镜像名[:TAG]
- 查看 latest 镜像的实际版本(不是对所有镜像都有效):
docker image inspect 镜像名:latest | grep -i version
- eg: docker image inspect redis:latest | grep -i version
-
查看镜像/容器/数据卷所占的空间:
docker system df
- 删除镜像:
docker rmi [OPTIONS] 镜像名[:TAG]
或docker rmi [OPTIONS] 镜像ID
- 可一次删除多个,多个镜像标识之间用空格隔开
- --no-prune 不移除该镜像的过程镜像(默认移除)
- -f 强制删除
- 删除全部镜像
docker rmi -f $(docker images -qa)
- 删除所有未被使用的镜像
docker image prune -a -f
- 提交容器副本使之成为一个新的镜像:
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
- eg: docker commit -m=”add vim command” -a=”vito” f2929ada89e4 hczhch/ubuntu:1.3.0
- 提交镜像到阿里云:
- https://promotion.aliyun.com/ntms/act/kubernetes.html 登录后进入控制台
- 访问 产品与服务 -> 容器服务 -> 容器镜像服务 -> 实例列表 , 选择个人实例(若没有就先创建个人实例)
- 进入个人实例,创建命令空间(本次演示创建的命名空间为 hczhch)
- 进入个人实例,创建镜像仓库(本次演示创建的仓库名为 ubuntu)
- 进入刚才创建的仓库,按照“操作指南”操作
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
# 登录阿里云Docker Registry
[root@mydockerhost ~]# docker login --username=hcgyl registry.cn-guangzhou.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
# 推送镜像到阿里云
[root@mydockerhost ~]# docker tag 2b29117f2c2b registry.cn-guangzhou.aliyuncs.com/hczhch/ubuntu:1.3.0
[root@mydockerhost ~]# docker push registry.cn-guangzhou.aliyuncs.com/hczhch/ubuntu:1.3.0
The push refers to repository [registry.cn-guangzhou.aliyuncs.com/hczhch/ubuntu]
9558fd789b41: Pushed
9f54eef41275: Pushed
1.3.0: digest: sha256:370f8bd690176036be16f4d4aa002725cea828ca94df39dd4fdb0e380a2cf911 size: 741
# 从阿里云拉取镜像
[root@mydockerhost ~]# docker pull registry.cn-guangzhou.aliyuncs.com/hczhch/ubuntu:1.3.0
1.3.0: Pulling from hczhch/ubuntu
7b1a6ab2e44d: Already exists
1e27b8c32b7d: Already exists
Digest: sha256:370f8bd690176036be16f4d4aa002725cea828ca94df39dd4fdb0e380a2cf911
Status: Downloaded newer image for registry.cn-guangzhou.aliyuncs.com/hczhch/ubuntu:1.3.0
registry.cn-guangzhou.aliyuncs.com/hczhch/ubuntu:1.3.0
[root@mydockerhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-guangzhou.aliyuncs.com/hczhch/ubuntu 1.3.0 2b29117f2c2b 22 hours ago 180MB
ubuntu latest ba6acccedd29 7 months ago 72.8MB
[root@mydockerhost ~]# docker run -it 2b29117f2c2b /bin/bash
- 虚悬镜像:仓库名、标签都是
的镜像,俗称虚悬镜像 dangling image - 查询虚悬镜像:
docker image ls -f dangling=true
- 删除所有虚悬镜像:
docker image prune
- 查询虚悬镜像:
容器命令
- 新建、启动容器:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- --name=容器名 为容器指定一个名称;
- -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
- -i:以交互模式运行容器,通常与 -t 同时使用;
- -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;也即启动交互式容器(前台有伪终端,等待交互);
- -P: 随机端口映射,大写P
- -p: 指定端口映射,小写p
eg:
docker run -it ubuntu /bin/bash
- 列出当前所有正在运行的容器:
docker ps [OPTIONS]
- -a :列出当前所有正在运行的容器+历史上运行过的
- -l :显示最近创建的一个容器。
- -n:显示最近n个创建的容器。
- -q :静默模式,只显示容器编号。
- 退出交互式容器:
exit
退出,容器停止ctrl+p+q
退出,容器不停止 (注意按键顺序)
-
启动已停止运行的容器:
docker start 容器ID或者容器名
-
重启容器:
docker restart 容器ID或者容器名
-
停止容器:
docker stop 容器ID或者容器名
-
强制停止容器:
docker kill 容器ID或容器名
- 删除已停止的容器:
docker rm 容器ID或容器名
- -f 强制删除(即使容器还在运行)
- 删除所有容器(慎用):
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm -f
ps: rmi 是删除镜像; rm 是删除容器
-
查看容器日志:
docker logs 容器ID
-
查看容器内运行的进程:
docker top 容器ID
-
查看容器内部细节:
docker inspect 容器ID
- 进入正在运行的容器并以命令行交互:
docker exec -it 容器ID /bin/bash
docker attach 容器ID
- exec 是在容器中打开新的终端,并且可以启动新的进程用 exit 退出,不会导致容器的停止。
- attach 直接进入容器启动命令的终端,不会启动新的进程用 exit 退出,会导致容器的停止。
- 推荐大家使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。
1
2
3
docker run -d redis:6.0.8
docker exec -it d3c3e157ec7a /bin/bash
redis-cli -p 6379
1
2
docker run -d redis:6.0.8
docker exec -it d3c3e157ec7a redis-cli
-
从容器内拷贝文件到主机上:
docker cp 容器ID:容器内路径 宿主机路径
-
容器导入导出:
- 容器导出为 tar 包:
docker export 容器ID > 文件名.tar
- tar 包导入为镜像:
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
- 使用镜像创建容器:
docker run 镜像用户/镜像名:镜像版本号
或者docker run 镜像ID
- 容器导出为 tar 包: