
Docker容器与Docker Compose部署讲解
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
sudo -i
切换到 root 用户进行操作。
#安装一些必备的软件包
apt update
apt upgrade -y
apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates
加入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 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