Docker 常用命令
简介
Docker 是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上,也可以实现虚拟化。现记录 docker 的常用命令,以备查询自用。持续更新中……
Docker 安装命令
一键安装命令(低版本)
1 | yum install docker -y |
安装最新版本命令
1 | yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine |
Docker 生命周期命令
1 | yum install -y docker #安装docker |
-y
参数:出现是否继续安装的选项时默认允许安装
Docler 镜像命令
1 | docker images |
Docler 容器命令
1 | docker run [options] image [command] [arg...] |
1 | -d: 后台运行容器,并返回容器ID |
Docker 网络命令
1 | docker network COMMAND |
Docker 日志命令
1 | docker logs -f -t --tail 10 容器ID或容器名称 |
1 | # 加入时间戳 |
小技巧
更新容器
针对 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 |
2、docker 镜像无法删除 Error:No such image:xxxxxx
解决:
1 | cd /var/lib/docker/image/overlay2/imagedb/content/sha256 |
找到对应镜像删除即可
3、Error response from daemon: Unknown runtime specified docker-runc Error: failed to start containers: xxxx
原因:当不兼容的版本升级 docker 并且升级后无法启动 docker 容器时会出现这种情况
解决:
1 | grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g |
官方文档
我好久以前写过一篇 docker,之后就一直用的 docker,最近遇到了一些问题,准备重写一篇,发现你又写了我想写的东西,昨天写了一半还没发出来(刚看到你更新了 MongoDB Compass 连接哈哈)
另外补充一点点,我遇到的问题,我用的一个镜像要配七八个环境变量,之后我想做改动
# 方法一,容器外查看
docker inspect <NAME> OR <ID>
# 方法二,容器内查看
docker exec -it ID bash # 进入容器
export # 查看变量
cat /proc/1/environ # 查看变量,原则上可以使用vim但是容器内需要配置vim
光查了,但是怎么改呢?我又发现可以改动 **/var/lib/docker/containers/ID/config.v2.json** 这个配置文件,但是密密麻麻的,不是格式化的 json。
已经尝试啦!若依的部署就是用 docker compose,虽然还没成功😅。真的可以实现我想要的效果。之前用 DockerFile 的时候我一直不知道一个镜像怎么使用多个基础镜像,用多个 FROM 就报错,然后就了解到了 docker compose,可以用它来一键配置多个镜像的互联,产生的镜像虽然是多个,但效果和一个镜像没什么区别。
500 字没打完🙈。又想了想,『docker compose』啊,直接写一个『docker-compose.yml』,然后 docker compose up -d 启动,之后修改只需要 docker compose stop,修改文件重启就行了,而且我发现我安了 docker,看了下 docker compose version 居然有输出,上面那些 docker 容器和镜像命令依旧适用,比如 docker compose ps(当前 compose 的状态)和 docker ps(所有 docker 的状态)都可以输出容器状态,我一直以为这是俩东西…… 所以推荐你也尝试一下『docker compose』,命令和功能上一样的,只是启动上要手写一个配置然后 docker compose up -d,但是重新修改配置真的好方便😀,还可以叠加多个镜像在同一个配置文件里