Kylin V10 离线安装docker和docker-compose

1. 简介

docker 是轻量级容器化工具,可将应用及依赖打包为独立容器,实现跨环境一致运行。相比虚拟机,容器启动更快、资源占用更低,支持镜像分层复用,简化部署流程。

docker-compose 用于编排多容器应用。通过 YAML 文件定义服务(如 网站前后端、数据库)、网络及依赖关系,一条命令(docker-compose up)即可启停整套服务,避免手动管理多个容器。

2. 下载安装包

  • 下载docker的二进制程序包,地址:https://download.docker.com/linux/static/stable/,根据CPU架构选择aarch64/还是x86_64/,当前的最新版本压缩包名称为:docker-28.1.1.tgz

  • 下载docker-compose的二进制程序包,地址:https://github.com/docker/compose/releases,根据CPU架构选择docker-compose-linux-aarch64或是docker-compose-linux-x86_64

3. docker安装

docker-28.0.1.tgz文件下载到本地目录。

# 解压
tar -xvzf docker-28.1.1.tgz docker/
# 移动解压出来的二进制文件到 /usr/bin 目录中 runc文件可替换
mv docker/* /usr/bin/

为docker添加启动选项:

# 新增docker.service文件
vim /usr/lib/systemd/system/docker.service
# 按下面的内容填写
----
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
----
# 增加执行权限
chmod +x /usr/lib/systemd/system/docker.service
# 重新加载系统控制器
systemctl daemon-reload
# 启动服务
systemctl start docker
# 设置开机自启动
systemctl enable docker

确认docker已安装成功:

# 查看docker版本
docker version
----
Client:
 Version:           28.1.1
 API version:       1.49
 Go version:        go1.23.8
 Git commit:        4eba377
 Built:             Fri Apr 18 09:51:06 2025
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community # 注意只有服务端成功启动后才会显示
 Engine:
  Version:          28.1.1
  API version:      1.49 (minimum version 1.24)
  Go version:       go1.23.8
  Git commit:       01f442b
  Built:            Fri Apr 18 09:52:21 2025
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.7.27
  GitCommit:        05044ec0a9a75232cad458027ca83437aae3f4da
 runc:
  Version:          1.2.6
  GitCommit:        v1.2.6-0-ge89a299
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
----

4. docker-compose安装

docker-compose-linux-x86_64文件下载到本地目录。

# 复制二进制文件到 /usr/bin 目录中
cp docker-compose-linux-x86_64  /usr/bin/docker-compose
# 增加执行权限
chmod +x /usr/bin/docker-compose

确认docker-compose已安装成功:

# 查看docker-compose版本
docker-compose version
----
Docker Compose version v2.36.2
----

5. docker-compose基本使用

  • 编写好docker-compose.yml配置文件
  • 创建逻辑卷目录,并赋予足够权限
  • 在配置文件目录执行docker-compose -p project_name up -dproject_name为指定的命名空间,防止多个项目冲突

网页前后端开发docker-compose.yml配置参考(需根据自身镜像和项目需求调整):

services:
  mysql:
    image: mysql:8.0 # 推荐使用版本号
    container_name: xxx_mysql # 指定容器名称(避免冲突)
    restart: always # 自动重启
    environment:
      MYSQL_ROOT_PASSWORD: "your_passwd" # root密码(必须)
      MYSQL_DATABASE: "db_name" # 容器初始化时创建的数据库(自定义)
      # MYSQL_USER: "username" # 创建普通用户(可选)
      # MYSQL_PASSWORD: "password" # 普通用户密码(可选)
      TZ: Asia/Shanghai # 时区设置(重要日志时间对齐)
    command: 
      - --character-set-server=utf8mb4 # 调整字符集
      - --collation-server=utf8mb4_unicode_ci # 调整排序规则
      - --default-authentication-plugin=mysql_native_password # 使用兼容的密码插件
    volumes:
      # 核心数据持久化
      - ./volumes/mysql/data:/var/lib/mysql # 数据库文件存储位置(必须持久化)
      # 备份文件持久化
      - ./volumes/mysql/backup:/home/backup # 自定义备份文件存储路径(可选)
      # 日志文件持久化
      - ./volumes/mysql/logs:/var/log/mysql # 包含error.log/slow.log等(可选)
      # 配置文件持久化
      # - ./volumes/mysql/conf:/etc/mysql/conf.d # 自定义配置文件目录(可选)
      # 初始化脚本目录
      # - ./volumes/mysql/init:/docker-entrypoint-initdb.d # 初始化SQL脚本(可选)
    ports:
      - "3306:3306" # 映射标准mysql端口(避免冲突)

  redis:
    image: redis:7.4-alpine # 推荐使用版本号
    container_name: xxx_redis # 指定容器名称(避免冲突)
    restart: always # 自动重启
    environment:
      - TZ=Asia/Shanghai # 时区设置
      - REDIS_PASSWORD=your_passwd # 设置访问密码(可选)
    volumes:
      # 数据持久化目录(包含RDB快照和AOF文件)(建议持久化)
      - ./volumes/redis/data:/data
      # 自定义配置文件目录(可选)
      # - ./volumes/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
      # 日志目录(需在配置中启用日志文件)(可选)
      # - ./volumes/redis/logs:/var/log/redis
    ports:
      - "6379:6379" # 映射标准redis端口(避免冲突)

  nginx:
    image: nginx:stable-alpine # 推荐使用版本号
    container_name: xxx_nginx # 指定容器名称(避免冲突)
    restart: always # 自动重启
    environment:
      TZ: Asia/Shanghai # 时区设置
    volumes:
      # 核心配置文件
      - ./volumes/nginx/conf/nginx.conf:/etc/nginx/nginx.conf # 主配置文件(必须持久化)
      - ./volumes/nginx/conf/conf.d:/etc/nginx/conf.d # 子配置文件目录(必须持久化)
      - ./volumes/nginx/conf/snippets:/etc/nginx/snippets # 通用配置片段(建议持久化)
      # 网站内容
      - ./volumes/nginx/html:/usr/share/nginx/html # 静态网站根目录(必须持久化)
      # 日志文件
      - ./volumes/nginx/logs:/var/log/nginx # 访问日志和错误日志(可选)
      # SSL证书
      # - ./volumes/nginx/ssl:/etc/nginx/ssl # SSL证书存储目录(可选)
      # 其他资源
      # - ./volumes/nginx/tmp:/var/cache/nginx # 缓存临时文件(可选)
    ports:
      - "80:80" # HTTP端口
      # - "443:443" # HTTPS端口
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐