无网络CentOS8服务器安装Docker的Ansible脚本需求
离线CentOS8服务器安装Docker的Ansible脚本方案
一、先在联网的CentOS8机器上准备离线资源
在有网络的测试机器上执行以下命令,下载所有需要的安装包和配置文件:
- 安装yumdownloader(如果未安装):
yum install -y yum-utils
- 创建存放离线包的目录:
mkdir -p /tmp/docker-packages
- 下载yum-utils及其全部依赖包:
yumdownloader --resolve --destdir=/tmp/docker-packages yum-utils
- 添加Docker官方源并下载Docker相关组件包:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yumdownloader --resolve --destdir=/tmp/docker-packages docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 下载Docker repo配置文件:
curl https://download.docker.com/linux/centos/docker-ce.repo -o /tmp/docker-packages/docker-ce.repo
- 打包所有资源:
tar -czf /tmp/docker-packages.tar.gz -C /tmp docker-packages
将生成的docker-packages.tar.gz传到Ansible控制节点的指定目录,比如/opt/offline-resources/。
二、离线环境的Ansible部署脚本
以下是适配离线场景的playbook,注意替换变量中的路径为你实际的路径:
--- - hosts: your_offline_servers # 替换为你的离线服务器组名或IP become: true vars: docker_package_dir: "/opt/docker-packages" # 目标服务器上的离线包存储目录 control_node_package_path: "/opt/offline-resources/docker-packages.tar.gz" # 控制节点上的压缩包路径 local_repo_file: "/etc/yum.repos.d/docker-local.repo" tasks: # 卸载旧版本Docker(如果存在) - name: 清理旧版Docker组件 yum: name: - docker - docker-client - docker-client-latest - docker-common - docker-latest - docker-latest-logrotate - docker-logrotate - docker-engine state: absent autoremove: yes # 创建离线包存放目录 - name: 创建离线包存储目录 file: path: "{{ docker_package_dir }}" state: directory mode: '0755' # 上传离线包到目标服务器 - name: 上传Docker离线压缩包 copy: src: "{{ control_node_package_path }}" dest: "{{ docker_package_dir }}/" mode: '0644' # 解压离线包 - name: 解压离线包文件 unarchive: src: "{{ docker_package_dir }}/docker-packages.tar.gz" dest: "{{ docker_package_dir }}" remote_src: yes # 配置本地YUM源 - name: 写入Docker本地源配置 copy: content: | [docker-local] name=Docker Local Repository baseurl=file://{{ docker_package_dir }}/docker-packages gpgcheck=0 enabled=1 dest: "{{ local_repo_file }}" mode: '0644' # 离线安装yum-utils - name: 安装yum-utils工具 yum: name: "{{ docker_package_dir }}/docker-packages/yum-utils-*.rpm" state: present disable_gpg_check: yes # 离线安装Docker核心组件 - name: 安装Docker相关包 yum: name: - "{{ docker_package_dir }}/docker-packages/docker-ce-*.rpm" - "{{ docker_package_dir }}/docker-packages/docker-ce-cli-*.rpm" - "{{ docker_package_dir }}/docker-packages/containerd.io-*.rpm" - "{{ docker_package_dir }}/docker-packages/docker-buildx-plugin-*.rpm" - "{{ docker_package_dir }}/docker-packages/docker-compose-plugin-*.rpm" state: present disable_gpg_check: yes # 启动并设置Docker开机自启 - name: 启动Docker服务并配置开机自启 service: name: docker state: started enabled: yes
三、注意事项
- 确保联网机器和离线机器的CentOS8版本完全一致,避免出现包依赖不兼容问题。
- 执行
yumdownloader时必须加--resolve参数,自动下载所有依赖包,否则离线安装会报错缺少依赖。 - 如果目标服务器有其他Docker相关repo配置,建议暂时禁用,避免安装时优先尝试网络源。
内容的提问来源于stack exchange,提问作者TinA
相关产品推荐
相关产品推荐

