首页主机资讯Debian Docker自动化如何配置

Debian Docker自动化如何配置

时间2026-01-20 16:25:03发布访客分类主机资讯浏览1057
导读:Debian Docker自动化配置 一 目标与总体思路 在 Debian 上把 Docker 的安装、配置、服务自启与容器自启做成可重复、可无人值守的流程,覆盖三类场景: 本机一键安装与初始化;2 多机批量编排(配置管理工具);3 ...

Debian Docker自动化配置

一 目标与总体思路

  • Debian 上把 Docker 的安装、配置、服务自启与容器自启做成可重复、可无人值守的流程,覆盖三类场景:
    1. 本机一键安装与初始化;2) 多机批量编排(配置管理工具);3) 代码变更触发的 CI/CD 自动构建与部署。
  • 关键关注点:安装源与 GPG、服务自启、容器重启策略、可选镜像加速、非 root 使用与权限、可重复脚本化与幂等性。

二 本机一键安装与初始化脚本

  • 使用官方仓库安装(推荐,便于后续升级与维护),脚本具备幂等检查与基础验证:
#!/usr/bin/env bash
set -Eeuo pipefail

# 0) 参数与常量
: "${
DOCKER_GPG_URL:=https://download.docker.com/linux/debian/gpg}
"
: "${
DOCKER_REPO:=https://download.docker.com/linux/debian}
"
: "${
DOCKER_PKG:=docker-ce docker-ce-cli containerd.io}
"
: "${
DOCKER_GROUP:=docker}
    "

# 1) 仅 root 执行
if [ "$(id -u)" -ne 0 ];
     then
  echo "请使用 root 或 sudo 执行此脚本。" >
    &
    2
  exit 1
fi

# 2) 安装依赖
apt-get update -qq
apt-get install -y --no-install-recommends \
  apt-transport-https ca-certificates curl gnupg lsb-release

# 3) 添加 Docker GPG 与 APT 源(幂等)
if [ ! -f /usr/share/keyrings/docker.gpg ];
     then
  curl -fsSL "$DOCKER_GPG_URL" | gpg --dearmor -o /usr/share/keyrings/docker.gpg
fi
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] $DOCKER_REPO $(lsb_release -cs) stable" \
  | tee /etc/apt/sources.list.d/docker.list >
    /dev/null

# 4) 安装 Docker
apt-get update -qq
apt-get install -y --no-install-recommends $DOCKER_PKG

# 5) 开机自启
systemctl enable --now docker

# 6) 可选:配置镜像加速(按需取消注释)
# mkdir -p /etc/docker
# cat >
    /etc/docker/daemon.json <
    <
'EOF'
# {
    
#   "registry-mirrors": ["https://<
    你的加速器地址>
"]
# }
    
# EOF
# systemctl restart docker

# 7) 验证
docker version
docker run --rm hello-world

# 8) 可选:将当前用户加入 docker 组(重新登录后生效)
# if ! getent group "$DOCKER_GROUP" >
    /dev/null;
     then
#   groupadd -r "$DOCKER_GROUP"
# fi
# usermod -aG "$DOCKER_GROUP" "$(logname)"
  • 使用方式:保存为 install_docker.sh,执行 chmod +x install_docker.sh & & ./install_docker.sh。上述流程等价于官方安装步骤:更新索引、安装依赖、导入 GPG、添加仓库、安装 docker-ce、启动并验证 hello-world。

三 批量自动化与配置管理

  • 使用 Ansible 做多机一致化部署(示例 playbook 片段,具备幂等与可复用性):
---
- name: Install and configure Docker on Debian
  hosts: docker_hosts
  become: yes
  vars:
    docker_pkgs:
      - docker-ce
      - docker-ce-cli
      - containerd.io
    docker_gpg: https://download.docker.com/linux/debian/gpg
    docker_repo: https://download.docker.com/linux/debian

  tasks:
    - name: Install prerequisites
      apt:
        name:
          - apt-transport-https
          - ca-certificates
          - curl
          - gnupg
          - lsb-release
        state: present
        update_cache: yes

    - name: Add Docker GPG key
      ansible.builtin.apt_key:
        url: "{
{
 docker_gpg }
}
"
        state: present
        keyring: /usr/share/keyrings/docker.gpg

    - name: Add Docker APT repository
      ansible.builtin.apt_repository:
        repo: "deb [arch={
{
 ansible_architecture }
}
 signed-by=/usr/share/keyrings/docker.gpg] {
{
 docker_repo }
}
 {
{
 ansible_distribution_release }
}
 stable"
        state: present
        filename: docker

    - name: Install Docker packages
      apt:
        name: "{
{
 docker_pkgs }
}
"
        state: present
        update_cache: yes

    - name: Enable and start Docker service
      ansible.builtin.systemd:
        name: docker
        enabled: yes
        state: started

    - name: Add user to docker group
      ansible.builtin.user:
        name: "{
{
 ansible_user }
}
    "
        groups: docker
        append: yes
  • 适用场景:大规模主机初始化、统一配置(如 /etc/docker/daemon.json)、滚动升级与回滚。上述思路与步骤与官方安装流程一致,适合用 Ansible 编排落地。

四 容器自启动与常用自动化场景

  • 容器随系统启动:使用 Docker 的 重启策略,例如 always/on-failure/unless-stopped。示例:
docker rm -f mynginx 2>
/dev/null || true
docker run -d --name mynginx --restart always -p 80:80 nginx:latest
docker ps -a --filter name=mynginx
  • 说明:–restart 策略可确保容器在 崩溃系统重启 后自动拉起,是实现“开机即服务可用”的关键配置。

五 CI/CD 自动构建与部署示例

  • 使用 GitHub Actions 在代码变更时自动构建镜像并部署到 Debian 主机(需提前配置 SSH 免密或 Runner):
name: Build and Deploy Docker
on:
  push:
    branches: [ main ]

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Login to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${
{
 secrets.DOCKERHUB_USER }
}

          password: ${
{
 secrets.DOCKERHUB_TOKEN }
}


      - name: Build and push
        run: |
          docker build -t ${
{
 secrets.DOCKERHUB_USER }
}
/myapp:${
{
 github.sha }
}
 .
          docker push ${
{
 secrets.DOCKERHUB_USER }
}
/myapp:${
{
 github.sha }
}


      - name: Deploy via SSH
        uses: appleboy/ssh-action@v1
        with:
          host: ${
{
 secrets.HOST }
}

          username: ${
{
 secrets.USER }
}

          key: ${
{
 secrets.SSH_KEY }
}

          script: |
            docker pull ${
{
 secrets.DOCKERHUB_USER }
}
/myapp:${
{
 github.sha }
}
    
            docker rm -f myapp 2>
/dev/null || true
            docker run -d --name myapp --restart always -p 80:80 \
              ${
{
 secrets.DOCKERHUB_USER }
}
/myapp:${
{
 github.sha }
}
    
  • 说明:该流程覆盖从 拉取代码 → 构建镜像 → 推送仓库 → 远程部署 的完整链路,适合生产级交付;也可替换为 Jenkins/GitLab CI 等工具实现同样效果。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian Docker自动化如何配置
本文地址: https://pptw.com/jishu/787375.html
Debian Docker脚本如何编写 Apache虚拟主机配置Ubuntu上怎么做

游客 回复需填写必要信息