Link
docker 架构图
安装
Centos 6
安装 epel 库
yum install -y epel-release
安装 docker
yum install -y docker-io
配置文件的路径
/etc/sysconfig/docker
查看版本
docker version
启动 docker 服务
service docker start
Centos 7
- 卸载旧版本( \表示换行,一个一个卸载即可)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- Install using the repository
sudo yum install -y yum-utils
# 阿里云镜像
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 官方镜像
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.1 安装最新版
sudo yum install -y docker-ce docker-ce-cli containerd.io
3.2 安装其他版本
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
- 启动 docker
sudo systemctl start docker
- hello world
sudo docker run hello-world
- 允许 docker 开机自启
systemctl enable docker
Ubuntu
Document
- 卸载所有冲突软件包
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
- 卸载已安装的 docker
sudo apt-get remove docker docker-engine docker-ce docker.io
sudo apt-get update
- apt-get 可以使用 https 库
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
- 添加 docker 的使用的公钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
- 添加 docker 的远程库
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
- 安装 docker 相关软件包
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
-
验证是否安装成功
sudo docker run hello-world
- 将当前用户加入 docker 用户组
默认情况下,只有 root 用户和 docker 组的用户才能运行 Docker 命令。我们可以将当前用户添加到 docker 组,以避免每次使用 Docker 时都需要使用 sudo。
sudo usermod -aG docker $USER
更新/安装特定版本
- 列出可用版本
apt-cache madison docker-ce | awk '{ print $3 }'
- 选中需要的版本
VERSION_STRING=5:24.0.0-1~ubuntu.22.04~jammy
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
卸载
卸载 Docker Engine、CLI、containerd 和 Docker Compose 包
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷,请执行以下操作:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
镜像加速
如果 docker 启动报错,试试修改 /etc/docker/daemon.json
Error
Job for docker.service failed because the control process exited with error
Tip
$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://3m1kni5g.mirror.aliyuncs.com"]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
腾讯云镜像加速
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
查看帮助文档
docker --help
日志大小
daemon.json 中限制
sudo vim /etc/docker/daemon.json { "log-driver":"json-file", "log-opts": {"max-size":"500m", "max-file":"3"} }
max-size=500m
表示一个容器日志大小上限是 500Mmax-file=3
表示一个容器有三个日志,分别是id+.json
、id+1.json
、id+2.json
重启 docker
#重新加载配置文件 sudo systemctl daemon-reload #重启服务 sudo systemctl restart docker.service
指向原始笔记的链接Tip
Restart Docker for the changes to take effect for newly created containers. Existing containers do not use the new logging configuration.
重启 docker,配置对新创建的容器生效,现有容器不生效
镜像常用命令
查看本地所有镜像
-a
列出本地所有的镜像-q
只显示镜像 ID-qa
列出本地所有镜像的 ID--digests
显示镜像的摘要信息--no-trunc
显示镜像的完整信息
docker images
查询镜像
docker search
查询收藏数大于 30 的 tomcat 镜像
docker search -f stars=30 tomcat
下载/更新镜像
docker pull tomcat:版本号
不写版本号,等价于
docker pull tomcat:latest
下载最新版
删除镜像(唯一镜像名或镜像 ID)
docker rmi hello-world
强制删除
docker rmi -f hello-world
删除多个镜像用空格隔开
删除没有任何容器使用的所有镜像
docker image prune
删除全部镜像
docker rmi -f $(docker images -qa)
给镜像打 tag
docker tag nginx nginx:test
导出镜像
docker save nginx >/tmp/nginx.tar.gz
导入镜像
对于无法访问外网的请情况下会经常使用这种方法导出镜像,然后使用 load 命令导入镜像
docker load </tmp/nginx.tar.gz
容器常用命令
新建并启动容器(启动交互式容器;前台运行)
-i
以交互模式运行容器,通常与-t
同时使用-t
为容器重新分配一个伪输入终端
docker run -it centos
新建并启动容器,并给容器取别名
docker run -it --name mycentos centos
查看正在运行的容器
-l
查看上一个容器-n 2
查看最近两个容器-q
只显示容器 ID--no-trunc
不截断输出-a
查看全部容器
docker ps
启动容器
docker start 容器ID
重启容器
docker restart 容器ID
正常停止容器
docker stop 容器ID
强制停止容器
docker kill 容器ID
删除已停止的容器
docker rm 容器ID
停止并删除容器
docker rm -f 容器ID
强制删除所有容器
docker rm -f ${docker ps -a -q}
# 或
docker ps -a -q | xargs docker rm
停止容器并退出伪输入终端
exit
不停止容器退出伪输入终端,容器后台运行
ctrl + P + Q
启动守护式容器(后台运行)
docker run -d 容器名
容器重命名
docker rename 原容器名称 新容器名称
查看容器日志
-f
跟随最新的日志打印-t
显示日志时间--tail 3
查看最新的 3 条日志
docker logs -ft --tail 3 容器 ID
查看容器内运行的进程
docker top 容器 ID
查看容器内部细节
docker inspect 容器 ID
进入正在运行的容器,并以命令行交互
docker attach 容器 ID
在容器外面执行命令,并获取结果
docker exec -t 容器 ID bashShell
bashShell 是 linux 命令
从容器内拷贝文件到主机上
docker cp 容器id:/容器内路径 目的主机路径
查看所有镜像的资源占用情况
docker stats $(docker ps -qa)