Docker安装记录

准备工作

安装Docker前需要确认电脑已经安装了WSL

下载并安装

官网链接:docker官网

安装后重启电脑,然后在Power Shell里输入以下命令来验证Docker是否成功安装,如果成功安装会显示Docker的版本

1
docker --version

接下来,注册一个Docker Hub账号并登录

然后可以运行一个简单的Docker容器来验证是否成功安装

1
docker run hello-world

如果从服务器成功拉取了hello-world 镜像并运行了容器,会显示Hello from Docker!,说明Docker 安装和运行正常

配置镜像加速(可选)

国内访问Docker Hub的速度可能较慢,可以选择配置一个国内的镜像

Settings→Docker Engine

image-20250322123156274

配置国内源后的代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
  "registry-mirrors":[
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
   ],

  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false
}

目前网上的教程都是给的这几个源,但是我实测是连不上的,还是需要用魔法连到docker官方的源去拉取镜像

Docker常用命令

以下是一些常用的 Docker 命令,涵盖了镜像管理、容器管理、网络管理、数据卷管理等方面:


镜像管理

  1. 拉取镜像

    1
    
    docker pull <image-name>:<tag>

    示例:docker pull ubuntu:latest

  2. 列出本地镜像

    1
    
    docker images
  3. 删除本地镜像

    1
    
    docker rmi <image-id>

    示例:docker rmi ubuntu:latest

  4. 构建镜像

    1
    
    docker build -t <image-name>:<tag> <path-to-dockerfile>

    示例:docker build -t my-app:1.0 .

  5. 推送镜像到仓库

    1
    
    docker push <image-name>:<tag>

    示例:docker push my-app:1.0

  6. 查看镜像历史

    1
    
    docker history <image-name>

容器管理

  1. 运行容器

    1
    
    docker run <options> <image-name>

    示例:docker run -it ubuntu bash

  2. 列出正在运行的容器

    1
    
    docker ps
  3. 列出所有容器(包括已停止的)

    1
    
    docker ps -a
  4. 启动已停止的容器

    1
    
    docker start <container-id>
  5. 停止容器

    1
    
    docker stop <container-id>
  6. 删除容器

    1
    
    docker rm <container-id>
  7. 进入运行中的容器

    1
    
    docker exec -it <container-id> <command>

    示例:docker exec -it my-container bash

  8. 查看容器日志

    1
    
    docker logs <container-id>
  9. 查看容器详细信息

    1
    
    docker inspect <container-id>
  10. 复制文件到容器

    1
    
    docker cp <local-path> <container-id>:<container-path>

    示例:docker cp my-file.txt my-container:/app/

  11. 从容器复制文件到主机

    1
    
    docker cp <container-id>:<container-path> <local-path>

    示例:docker cp my-container:/app/my-file.txt ./


网络管理

  1. 列出网络

    1
    
    docker network ls
  2. 创建网络

    1
    
    docker network create <network-name>
  3. 连接容器到网络

    1
    
    docker network connect <network-name> <container-id>
  4. 断开容器与网络的连接

    1
    
    docker network disconnect <network-name> <container-id>
  5. 删除网络

    1
    
    docker network rm <network-name>

数据卷管理

  1. 列出数据卷

    1
    
    docker volume ls
  2. 创建数据卷

    1
    
    docker volume create <volume-name>
  3. 删除数据卷

    1
    
    docker volume rm <volume-name>
  4. 挂载数据卷到容器

    1
    
    docker run -v <volume-name>:<container-path> <image-name>

    示例:docker run -v my-volume:/data ubuntu

  5. 查看数据卷详细信息

    1
    
    docker volume inspect <volume-name>

Docker Compose

  1. 启动服务

    1
    
    docker-compose up
  2. 后台启动服务

    1
    
    docker-compose up -d
  3. 停止服务

    1
    
    docker-compose down
  4. 查看服务状态

    1
    
    docker-compose ps
  5. 查看服务日志

    1
    
    docker-compose logs

其他常用命令

  1. 查看 Docker 版本

    1
    
    docker --version
  2. 查看 Docker 系统信息

    1
    
    docker info
  3. 清理未使用的镜像、容器、网络和数据卷

    1
    
    docker system prune
  4. 强制清理所有未使用的资源

    1
    
    docker system prune -a
  5. 登录 Docker Hub

    1
    
    docker login
  6. 登出 Docker Hub

    1
    
    docker logout

常用选项

-d:后台运行容器(detached mode)。 • -it:以交互模式运行容器(interactive + TTY)。 • -p:映射端口(<host-port>:<container-port>)。 • -v:挂载数据卷(<host-path>:<container-path>)。 • --name:为容器指定名称。 • --rm:容器退出后自动删除。


示例

  1. 运行一个 Nginx 容器并映射端口:

    1
    
    docker run -d -p 8080:80 --name my-nginx nginx
  2. 使用 Docker Compose 启动一个多容器应用:

    1
    
    docker-compose up -d
  3. 清理未使用的资源:

    1
    
    docker system prune

这些命令涵盖了 Docker 的常见操作场景。根据你的需求,可以灵活组合使用这些命令来管理 Docker 容器和镜像。

Ubuntu环境安装Docker

安装Docker

1
2
3
4
5
#安装前先卸载操作系统默认安装的docker,
sudo apt-get remove docker docker-engine docker.io containerd runc

#安装必要支持
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

添加GPG Key

1
2
3
4
5
#添加 Docker 官方 GPG key (可能国内现在访问会存在问题)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 阿里源(推荐使用阿里的gpg KEY)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

添加apt源

1
2
3
4
5
6
7
#添加 apt 源:
#Docker官方源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


#阿里apt源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

添加后更新源

1
2
3
#更新源
sudo apt update
sudo apt-get update

安装docker

1
2
3
4
5
6
7
8
9
#安装最新版本的Docker
sudo apt install docker-ce docker-ce-cli containerd.io
#等待安装完成

#查看Docker版本
sudo docker version

#查看Docker运行状态
sudo systemctl status docker

安装docker命令补全工具

1
2
3
4
5
sudo apt-get install bash-completion

sudo curl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -o /etc/bash_completion.d/docker.sh

source /etc/bash_completion.d/docker.sh

(可选)允许非Root用户执行docker命令

当我们安装好了Docker之后,有两种方式来执行docker 命令

  • 在docker命令前加上sudo, 比如:sudo docker ps
  • sudo -i 切换至root用户,再执行docker 命令

添加docker用户组

1
sudo groupadd docker

将当前用户添加到用户组

1
sudo usermod -aG docker $USER

使权限生效

1
newgrp docker 

测试

1
2
#查看所有容器
docker ps -a

我们需要编辑 ~/.bashrc文件,并在文件末尾增加如下一行,如果不在.bashrc文件中增加下面这一行命令

1
2
3
4
#如果没有此行命令,你会发现,当你每次打开新的终端
#你都必须先执行一次 “newgrp docker” 命令
#否则当前用户还是不可以执行docker命令
groupadd -f docker

最后更新.bashrc文件

1
source ~/.bashrc

Docker无法拉取镜像问题

1️⃣方法一:最简单的解决方案:梯子开全局模式(TUN模式)

2️⃣方法二:也可以到镜像站点下载镜像:https://docker.aityp.com/

下载镜像后改tag使用

3️⃣方法三:另外,我们可以在docker daemon 配置文件中增加国的可用的 docker hub mirror ,找到你的daemon.json 文件,通常在 /etc/docker/daemon.json 这个位置

在daemon.json 中增加

1
2
3
4
5
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io"
  ]
}  

目前可用的国内docker hub 镜像,https://docker.m.daocloud.io。

0%