Link
docker 架构图

安装
Centos 6
安装 epel 库
yum install -y epel-release安装 docker
yum install -y docker-io配置文件的路径
/etc/sysconfig/docker查看版本
docker version启动 docker 服务
service docker startCentos 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.repo3.1 安装最新版
sudo yum install -y docker-ce docker-ce-cli containerd.io3.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 dockerUbuntu
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 bashShellbashShell 是 linux 命令
从容器内拷贝文件到主机上
docker cp 容器id:/容器内路径 目的主机路径查看所有镜像的资源占用情况
docker stats $(docker ps -qa)