Docker 是一种容器化技术,可以在服务器上快速搭建容器并在不污染宿主机的情况下运行软件,而不再需要安装配置各种环境。开源 Docker 社区致力于改进这类技术,并免费提供给所有用户,使之获益。
Docker Compose
传统模式下运维人员需要运行 docker run 来启动各种容器,一旦容器过多,就无法一次性记住所有的运行参数和命令,这时候我们可以使用 Docker Compose 来解决这个问题。
Docker Compose 是一个用于在单个主机上定义和运行多个 Docker 容器的工具。它使用 YAML 文件来配置应用程序的服务,然后使用一个命令就可以创建并启动所有服务。使用 Docker Compose 可以大大简化 Docker 容器的管理和部署,特别是对于具有多个互相依赖的容器的复杂应用。

一、Docker 容器介绍

1.1 核心概念

  • 镜像(Image):Docker 镜像是一个只读的模板,包含了运行应用程序所需的所有文件、配置和依赖项,例如操作系统、应用程序代码、库和其他依赖文件。可以将镜像看作是一个软件的 “快照”,它提供了一个一致的环境,确保应用程序在不同的服务器上以相同的方式运行。

  • 容器(Container):容器是镜像的运行实例。可以从一个镜像创建多个容器,每个容器都是独立运行的,相互之间隔离。容器内的应用程序在自己的隔离环境中运行,不会受到其他容器或宿主机上其他程序的影响。

  • 仓库(Repository):用于存储和管理镜像的地方。可以将镜像推送到仓库中,也可以从仓库中拉取镜像到本地使用。

1.2 主要优点

  • 轻量级和高效:容器共享宿主机的操作系统内核,启动速度快,占用资源少,能够在同一台服务器上运行多个容器,提高服务器资源利用率。

  • 可移植性强:由于容器包含了应用程序的所有依赖,因此可以在不同的操作系统和硬件环境中轻松移植和运行,实现了 “一次构建,到处运行”。

  • 易于部署和扩展:可以通过简单的命令或工具快速创建、启动、停止和删除容器,方便进行应用程序的部署和扩展。同时,也可以根据业务需求自动扩展或收缩容器的数量。

  • 隔离性好:容器之间相互隔离,每个容器都有自己独立的文件系统、网络和进程空间,避免了应用程序之间的相互干扰,提高了系统的稳定性和安全性。

1.3 应用场景

  • Web 应用程序部署:将 Web 应用程序及其相关的服务器软件、数据库等依赖项打包到容器中,然后部署到生产环境中,确保应用程序在不同的服务器上具有一致的运行环境。

  • 微服务架构:在微服务架构中,每个微服务可以独立地打包成一个容器,方便进行独立的开发、测试、部署和扩展。容器之间可以通过网络进行通信,实现微服务之间的协作。

  • 持续集成和持续部署(CI/CD):在 CI/CD 流程中,使用 Docker 可以快速创建测试环境和部署环境,确保每次代码提交都能在一致的环境中进行测试和部署,提高软件交付的效率和质量。

  • 开发环境搭建:开发人员可以使用 Docker 创建包含各种开发工具和依赖项的开发环境,避免了在本地机器上安装和配置复杂的开发环境,提高开发效率。

二、Docker 容器部署

  • CPU:4核心
  • 内存:4Mb
  • 系统盘:50Gb
  • 带宽:10Mbps共享
  • IP:1 ipv4
  • 系统:Debian-11
{官方网址, https://docker.github.net.cn/, https://img.sunyuxiang.cn/i/2025/04/08/67f515a13a9d5.webp}

以下操作需要在 root 用户下完成,请使用 sudo -i 切换到 root 用户进行操作。
#安装一些必备的软件包
apt update
apt upgrade -y
apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates

docker_1.webp

加入Docker的GPG公钥和apt源。

#官方镜像
curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
#国内清华源
curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list

docker_2.webp

更新系统后即可安装 Docker CE 和 Docker Compose 插件,安装完成后可使用docker version命令检查是否安装成功。

apt update
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

三、其它内容

如果需要某个特定用户可以用 Docker rootless 模式运行 Docker,那么可以把这个用户也加入 docker 组,比如我们把 username 用户加进去。

apt install docker-ce-rootless-extras
sudo usermod -aG docker username

单独安装Docker Compose

如果某些镜像或命令不兼容,则我们还可以单独安装 Docker Compose,我们可以使用 Docker 官方发布的 Github 直接安装最新版本,安装之后可以使用docker-compose version 命令检查是否安装成功。

curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

修改Docker配置

下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘

cat > /etc/docker/daemon.json << EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}
EOF

重启Docker

systemctl restart docker