简介

Docker是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。现记录docker的常用命令,以备查询自用。持续更新中……

Docker安装命令

一键安装命令(低版本)

1
yum install docker -y

安装最新版本命令

1
2
3
4
5
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker

Docker生命周期命令

1
2
3
4
5
6
7
8
9
yum install -y docker    #安装docker
systemctl start docker #启动docker
systemctl status docker #查看docker状态
systemctl stop docker #停止docker
systemctl restart docker #重启docker
systemctl daemon-reload #重载docker配置
docker version #docker版本
docker info #docker系统级信息
yum remove docker

-y参数:出现是否继续安装的选项时默认允许安装

Docler镜像命令

1
2
3
4
5
6
7
8
9
docker images
docker search tomcat
docker pull tomcat[:version]
docker tag flow2000/news:latest flow2000/news:1.0.0
docker rmi tomcat[:version]
docker rmi -f 镜像ID
docker rmi -f 镜像名1:TAG 镜像名2:TAG
docker images -qa
docker rmi -f $(docker images -qa)

Docler容器命令

1
2
3
4
5
6
7
8
9
docker run [options] image [command] [arg...]
docker ps
docker start 容器ID或容器name
docker restart 容器ID或容器name
docker stop 容器ID或容器name
docker kill 容器ID或容器name
docker rm 容器ID或容器name
docker rm -f 容器ID或容器name
docker rm -f $(docker ps -qa)
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
-d: 后台运行容器,并返回容器ID

-i: 以交互式运行容器,通常与-t同时使用

-p: 端口映射,格式为 主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与-i同时使用

-v: 目录挂载,格式为 主机(宿主)目录/文件:容器目录/文件

--name="name": 为容器指定一个名称

--dns 8.8.8.8: 为容器指定一个dns服务器,默认与宿主一致

--dns-search domain:为容器指定一个DNS域名,默认与宿主一致

-h "hostname": 指定容器的hostname

-e arg="value": 设置环境变量

-env-file=[]:从指定文件读入环境变量

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定的cpu运行

-m: 设置容器使用内存最大值

--net="bridge": 指定容器的网络连接类型,支持bridge/host/none/container四种类型

--link=[]:添加链接到另外一个容器

--expose=[]:开放一个端口或一组端口,宿主机使用随机端口映射到开放的端口

Docker网络命令

1
2
3
4
5
6
7
8
9
docker network COMMAND

docker network connect 网络ID或网络name 容器ID或容器name
docker network create 容器ID或容器name
docker network disconnect 容器ID或容器name
docker network inspect 容器ID或容器name
docker network ls
docker network prune 容器ID或容器name
docker network rm 容器ID或容器name

Docker日志命令

1
docker logs -f -t --tail 10 容器ID或容器名称
1
2
3
4
5
6
# 加入时间戳
-t
# 跟随最新的日志打印
-f
# 输出最后几行的日志
--tail 行数

小技巧

更新容器

针对yum install dokcer -y 的用户

1
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -c -R 容器名

Docker常见问题

1、[Linux]File “/bin/yum-config-manager“, line 135 except yum.Errors.RepoError, e:

解决:

yum采用Python作为命令解释器,而我们将Python升级为Python3之后,由于python版本之间兼容性不太好,使得2.X版本与3.0版本之间存在语法不一致问题,CentOS 7自带的yum采用的是python2.7,当系统将python升级到3.7后,出现语法解释错误

需要到指定文件添加2.7版本的注明:

1
vi /usr/bin/yum-config-manager

修改python版本

2、docker镜像无法删除 Error:No such image:xxxxxx

​ 解决:

1
cd /var/lib/docker/image/overlay2/imagedb/content/sha256

进入到docker存储对应镜像的文件夹

找到对应镜像删除即可

3、Error response from daemon: Unknown runtime specified docker-runc Error: failed to start containers: xxxx

原因:当不兼容的版本升级docker并且升级后无法启动docker容器时会出现这种情况

解决:

1
2
grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g
systemctl restart docker

官方文档

docker run | Docker Documentation