Docker环境

Docker安装

docker是依赖Linux Kernel基于golang开发的虚拟容器运行环境。

由于docker依赖Linux Kernel运行,所以如果你的开发环境是非Linux环境,建议使用Vmware安装Linux 虚拟机搭建开发环境。

windows下安装Docker可以使用Docker官方提供的DockerToolbox工具,参见:windows下安装Docker

以下环境搭建是以centos7为例来搭建的,其他比如ubuntu等请使用Linux发行版对应的包安装器来安装,并且关闭系统selinux

  • docker环境安装
wget -O  install.sh  https://get.docker.com/ \
&& sh install.sh --mirror Aliyun \
&& yum install -y -q docker-ce \
&& systemctl enable docker
yum install https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.4.3-3.1.el8.x86_64.rpm --allowerasing
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce 
systemctl start docker

ubuntu安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

centos8安装

yum install https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.4.3-3.1.el8.x86_64.rpm --allowerasing

sudo yum install docker-ce docker-ce-cli containerd.io
  • docker-compose安装

docker-compose是docker的容器编排工具 发布地址:https://github.com/docker/compose/releases

curl -L "mirror.ghproxy.com/https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose

centos7离线安装方案

wget https://hudongtang-test.oss-cn-zhangjiakou.aliyuncs.com/tmp/docker-27.5.1.tgz
# 解压包
tar -zxvf docker-27.5.1.tgz

# 将Docker二进制文件复制到系统可执行目录(/usr/bin)
cp docker/* /usr/bin/

# 验证文件是否复制成功
ls /usr/bin/docker*  # 应输出docker、docker-cli、dockerd等文件

# 创建systemd服务文件
vi /etc/systemd/system/docker.service

将以下内容粘贴到文件中(适配 CentOS 7 的 systemd 配置):
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
# 执行Docker守护进程的命令
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# 让Docker进程在后台运行
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
# 崩溃后自动重启
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target


# 重新加载systemd配置(让新的docker.service生效)
systemctl daemon-reload

# 启动Docker服务
systemctl start docker

# 设置开机自启
systemctl enable docker

# 验证Docker是否正常运行
## 1. 查看Docker状态(应显示active (running))
systemctl status docker
  • 配置阿里云加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
 "registry-mirrors" : [
    "https://registry.docker-cn.com",
    "https://o6l7cf5e.mirror.aliyuncs.com",
    "https://docker.fxxk.dedyn.io"
  ]}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • docker常用命令
docker kill $(docker ps -a -q) 杀死所有正在运行的容器
docker rm $(docker ps -a -q) 删除所有已经停止的容器
docker rmi $(docker images -q) 删除所有镜像
docker ps 查看正在运行的容器
docker images 查看已下载的所有镜像
docker info 查看配置信息
  • docker-compose 常用命令
docker-compose up -d [container name] 启动所有容器或者某个容器
docker-compose stop [container name] 停止所有容器或者某个容器
docker-compose down [container name] 删除所有容器或者某个容器
docker-compose build [container name] 构建所有容器或者某个容器
docker-compose exec {container name} sh 进入某个容器的ssh

环境搭建

  • 启动docker镜像
cd /www/docker
cp env-example .env
docker-compose up -d nginx

开发环境可选择启动MySQL redis 等

镜像说明

  • 容器说明

镜像内包括容器:

  1. workspace(项目操作容器,设置crontab、前端资源编译、执行PHP-cli命令等进入此容器操作)
  2. nginx(nginx容器,宿主机http端口 80 81 等端口映射至此容器)
  3. php-fpm (
  4. mysql
  5. redis (redis容器)
  6. php-worker(队列监听容器)
APPLICATION=../www #PHP执行根目录

使用curl升级到最新版

  # curl -fsSL https://get.docker.com/ | sh

重启Docker

  # systemctl restart docker

设置Docker开机自启

  # systemctl enable docker

查看Docker版本信息

  # docker version

网段修改 https://www.jianshu.com/p/d87619a655b3

安装脚本

#!/bin/bash
# 功能:华为云CentOS 7环境下一键安装Docker 27.5.1+镜像源配置+docker-compose(绕开yum依赖冲突)
# 作者:编程助手
# 注意:需以root用户执行该脚本

# 开启严格模式,遇到错误立即退出
set -euo pipefail

# 定义颜色输出(增强可读性)
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # 重置颜色

# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
    echo -e "${RED}错误:请使用root用户执行该脚本!${NC}"
    exit 1
fi

# 定义Docker和docker-compose相关地址
DOCKER_TGZ_URL="https://hudongtang-test.oss-cn-zhangjiakou.aliyuncs.com/tmp/docker-27.5.1.tgz"
DOCKER_COMPOSE_URL="https://hudongtang-test.oss-cn-zhangjiakou.aliyuncs.com/tmp/docker-compose-linux-x86_64"
TMP_DIR="/tmp/docker-install"

# 步骤1:创建临时目录并下载Docker二进制包
echo -e "${YELLOW}===== 1/8 准备下载Docker二进制包 =====${NC}"
# 先清理旧的临时目录(避免损坏的包残留)
rm -rf "${TMP_DIR}"
mkdir -p "${TMP_DIR}" && cd "${TMP_DIR}"

# 检查基础工具(wget、tar、curl)是否安装
if ! command -v wget &> /dev/null; then
    echo -e "${YELLOW}检测到wget未安装,正在自动安装...${NC}"
    yum install -y wget > /dev/null 2>&1
    echo -e "${GREEN}wget安装完成${NC}"
fi

if ! command -v tar &> /dev/null; then
    echo -e "${YELLOW}检测到tar未安装,正在自动安装...${NC}"
    yum install -y tar > /dev/null 2>&1
    echo -e "${GREEN}tar安装完成${NC}"
fi

if ! command -v curl &> /dev/null; then
    echo -e "${YELLOW}检测到curl未安装,正在自动安装...${NC}"
    yum install -y curl > /dev/null 2>&1
    echo -e "${GREEN}curl安装完成${NC}"
fi

# 强制重新下载(避免损坏的包)
echo -e "${YELLOW}正在下载Docker 27.5.1二进制包...${NC}"
wget "${DOCKER_TGZ_URL}" -O docker-27.5.1.tgz
if [ $? -ne 0 ]; then
    echo -e "${RED}错误:Docker安装包下载失败,请检查URL是否有效!${NC}"
    exit 1
fi
echo -e "${GREEN}Docker安装包下载完成${NC}"

# 步骤2:解压Docker包(取消输出重定向,显示错误)
echo -e "${YELLOW}===== 2/8 解压Docker二进制包 =====${NC}"
tar -zxvf docker-27.5.1.tgz
# 显式检查解压是否成功
if [ ! -d "docker" ]; then
    echo -e "${RED}错误:Docker包解压失败!可能是安装包损坏或下载不完整${NC}"
    exit 1
fi
echo -e "${GREEN}Docker包解压完成${NC}"

# 步骤3:复制Docker二进制文件到系统目录
echo -e "${YELLOW}===== 3/8 复制Docker二进制文件到/usr/bin =====${NC}"
cp -f docker/* /usr/bin/
# 验证复制结果
if ls /usr/bin/docker* &> /dev/null; then
    echo -e "${GREEN}Docker二进制文件复制成功${NC}"
else
    echo -e "${RED}错误:Docker二进制文件复制失败!${NC}"
    exit 1
fi

# 步骤4:创建Docker systemd服务文件
echo -e "${YELLOW}===== 4/8 创建Docker systemd服务文件 =====${NC}"
cat > /etc/systemd/system/docker.service << 'EOF'
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
# 执行Docker守护进程的命令
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# 让Docker进程在后台运行
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
# 崩溃后自动重启
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

# 验证服务文件是否创建成功
if [ -f "/etc/systemd/system/docker.service" ]; then
    echo -e "${GREEN}Docker systemd服务文件创建成功${NC}"
else
    echo -e "${RED}错误:Docker服务文件创建失败!${NC}"
    exit 1
fi

# 步骤5:启动Docker服务并设置开机自启
echo -e "${YELLOW}===== 5/8 启动Docker服务并设置开机自启 =====${NC}"
systemctl daemon-reload
systemctl start docker
systemctl enable docker > /dev/null 2>&1

# 步骤6:配置Docker镜像加速源
echo -e "${YELLOW}===== 6/8 配置Docker镜像加速源 =====${NC}"
# 创建/etc/docker目录(确保目录存在)
mkdir -p /etc/docker
# 写入daemon.json配置文件
tee /etc/docker/daemon.json <<-'EOF'
{
 "registry-mirrors" : [
    "https://registry.docker-cn.com",
    "https://o6l7cf5e.mirror.aliyuncs.com",
    "https://docker.fxxk.dedyn.io"
  ]
}
EOF
# 重新加载配置并重启Docker使镜像源生效
systemctl daemon-reload
systemctl restart docker
echo -e "${GREEN}Docker镜像加速源配置完成,已重启Docker服务${NC}"

# 步骤7:安装docker-compose(新增核心步骤)
echo -e "${YELLOW}===== 7/8 下载并安装docker-compose =====${NC}"
# 下载docker-compose二进制文件到/usr/bin
echo -e "${YELLOW}正在下载docker-compose...${NC}"
curl -L "${DOCKER_COMPOSE_URL}" -o /usr/bin/docker-compose
# 验证下载是否成功
if [ ! -f "/usr/bin/docker-compose" ]; then
    echo -e "${RED}错误:docker-compose下载失败,请检查URL是否有效!${NC}"
    exit 1
fi
# 赋予可执行权限
chmod +x /usr/bin/docker-compose
# 验证权限是否添加成功
if [ -x "/usr/bin/docker-compose" ]; then
    echo -e "${GREEN}docker-compose安装并赋予执行权限成功${NC}"
else
    echo -e "${RED}错误:docker-compose执行权限设置失败!${NC}"
    exit 1
fi

# 步骤8:验证所有组件安装结果
echo -e "${YELLOW}===== 8/8 验证Docker+docker-compose安装状态 =====${NC}"
# 检查Docker服务状态
if systemctl is-active --quiet docker; then
    echo -e "${GREEN}✅ Docker服务已成功启动(含镜像源配置)${NC}"
else
    echo -e "${RED}❌ Docker服务启动失败!${NC}"
    exit 1
fi

# 输出Docker版本信息
echo -e "${GREEN}✅ Docker版本信息:${NC}"
docker --version

# 输出docker-compose版本信息
echo -e "${GREEN}✅ docker-compose版本信息:${NC}"
docker-compose --version

# 输出镜像源配置验证
echo -e "${GREEN}✅ Docker镜像源配置内容:${NC}"
cat /etc/docker/daemon.json

# 清理临时目录
rm -rf "${TMP_DIR}"
echo -e "\n${GREEN}===== Docker 27.5.1 + 镜像源 + docker-compose 安装完成!=====${NC}"
echo -e "${YELLOW}可执行 docker run hello-world 测试Docker,docker-compose -v 验证docker-compose${NC}"
最后修改:2026 年 01 月 14 日 03 : 07 PM
如果觉得我的文章对你有用,请随意赞赏