docker 使用教程(会持续更新)

61 阅读1分钟

一、win11 docker 安装

1. 启用 WSL2 功能

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

2. 下载并安装 WSL2 内核更新包

从微软官网下载:aka.ms/wsl2kernel

3. 设置 WSL2 为默认版本

wsl --set-default-version 2

4. 下载 Docker Desktop for Windows

官网下载:www.docker.com/products/do…

5. 安装完成后重启电脑

二、centos docker 安装

移除旧版本docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

配置docker yum源

sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装最新 docker

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

三、Ubuntu 安装docker

卸载旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc

安装依赖包

sudo apt-get update
sudo apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

无法定位软件包 lsb-release 解决办法

出现“无法定位软件包 lsb-release”通常是因为软件源未更新或缺少 universe 源。你可以先尝试更新源并安装 lsb-release:

  1. 更新软件源:
sudo apt-get update
  1. 启用 universe 源(如果是 Ubuntu):
sudo add-apt-repository universe
sudo apt-get update
  1. 再次尝试安装 lsb-release:
sudo apt-get install lsb-release

如果还是不行,可以直接用如下命令获取系统代号(替代 lsb-release):

cat /etc/os-release
source /etc/os-release && echo $VERSION_CODENAME

添加Docker官方GPG密钥

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

设置稳定仓库

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装Docker

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动&开机启动docker

systemctl enable docker --now

配置加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://mirrors.tuna.tsinghua.edu.cn",
        "http://mirrors.sohu.com",
        "https://ustc-edu-cn.mirror.aliyuncs.com",
        "https://ccr.ccs.tencentyun.com",
        "https://docker.m.daocloud.io",
        "https://docker.awsl9527.cn"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

四、docker简单命令集

镜像操作

搜索镜像

docker search 镜像名

下载镜像

docker pull 镜像名[:版本号]  # 默认latest

查看已下载所有镜像

docker images
# 或
docker image ls

删除镜像

docker rmi 镜像名[:tag] 或 镜像ID

容器操作

运行一个新容器

docker run 镜像名[:tag]
docker run [参数] 镜像名

查看容器

docker ps           # 正在运行的容器
docker ps -a        # 所有容器

启动已有容器

docker start 容器ID或容器名

停止容器

docker stop 容器ID或容器名

重启容器

docker restart 容器ID或容器名

查看容器资源占用情况

docker stats 容器ID或容器名

查看容器日志

docker logs 容器ID或容器名

删除指定容器(要先stop容器)

docker rm 容器ID或容器名

强制删除指定容器(运行中的也可以删除)

docker rm -f 容器ID或容器名

后台启动容器

docker run -d --name mynginx nginx

后台启动并暴露端口

docker run -d --name mynginx -p 80:80 nginx

进入容器内部

docker exec -it 容器ID或容器名 /bin/bash

提交容器变化打成一个新的镜像

docker commit -m "update index.html" 你的容器名 你自定义的镜像名[:tag]
# 可选参数:-a "作者" -m "提交信息" -p -c

保存镜像为指定文件

docker save -o 你的包名.tar 镜像名[:tag]

删除多个镜像

docker rmi 镜像ID1 镜像ID2 ...

加载镜像

docker load -i tar包路径

登录 docker hub

docker login
# 按提示输入用户名和密码

重新给镜像打标签

docker tag 要上传的镜像[:tag] 用户名/新镜像名[:tag]

推送镜像

docker push 用户名/新镜像名[:tag]

Docker Compose 使用

安装 Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

检查安装

docker-compose --version

其他常用命令

查看所有已停止的容器

docker ps -a -f "status=exited"

删除所有已停止的容器

docker container prune -f

删除未被使用的镜像、网络和数据卷

docker system prune -a -f

五、常见错误

1. 权限问题

你遇到的报错 permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock 是因为当前用户没有权限操作 Docker 服务。

解决方法如下:

  1. 用 sudo 运行 docker 命令(推荐临时用法):
sudo docker pull mysql
  1. 或将当前用户加入 docker 用户组(推荐长期用法):
sudo usermod -aG docker $USER

然后注销或重启,重新登录后即可直接用 docker 命令,无需 sudo。

  1. 检查 Docker 服务是否已启动:
sudo systemctl status docker

如未启动,执行:

sudo systemctl start docker