【干货】国产Linux中如何将docker容器作为系统服务并设置开机启动

环境信息

银河麒麟高级服务器操作系统V10
CPU 飞腾Phytium,D2000/8 E8C
第一步

使用apt-get命令安装docker-compose

apt-get install docker-compose

使用apt-get安装docker-compose

第二步

编写一个docker-compose.yml文件来定义容器配置:
首先执行以下命令

vim /data/docker-compose.yml

具体配置的内容如下:

version: '3' # 指定 compose 文件的版本
services:    # 定义所有的 service 信息, services 下面的第一级别的 key 即是一个 service 的名称
	knowledge_base: # service名称
		image: knowledge_base_llm/chatchat:v2 # 指定docker镜像,可以是远程仓库镜像或本地镜像
		container_name: knowledge_base # 指定容器名称(等同于 docker run --name 的作用)
		volumes: # 定义容器和宿主机的卷映射关系, 其和 networks 一样可以位于 services 键的二级键和 compose 顶级键, 如果需要跨服务间使用则在顶级键定义, 在 services 中引用
			#- /usr/src:/usr/src # 映射容器内的 /usr/src 到宿主机的 /usr/src
			#- /lib/modules:/lib/modules # 映射容器内的 /lib/mpdules 到宿主机的 /lib/modules
			#- /dev:/dev # 映射容器内的 /dev 到宿主机的 /dev
			- /data:/workspace # 映射容器内的 /workspace 到宿主机的 /data
		ports:  # 建立宿主机和容器之间的端口映射关系, ports 支持两种语法格式
			- "7861:7861" # 容器的 7861 端口和宿主机的 7861 端口建立映射关系
			- "20000:20000"
			- "8501:8501"
		privileged: true # 当使用--privileged=true选项运行容器时,Docker会赋予容器几乎与主机相同的权限
		cap_add: - ALL # --cap-add 和 --cap-drop:增加或删除容器的 Linux 能力,用于控制容器的权限。 似乎privileged为tru cap_add就不用在设置ALL了
		pid: host # 共享宿主机的进程空间(PID)
		working_dir: /workspace/my/Langchain-Chatchat # 指定容器在运行时使用的默认目录
		environment:- LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libGLdispatch.so.0:/usr/local/lib/python3.10/site-packages/scikit_learn.libs/libgomp-d22c30c5.so.1.0.0 # 设置环境变量, environment 的值可以覆盖 env_file 的值 (等同于 docker run --env 的作用)
		command: ["python3", "startup.py", "-a"] # 覆盖容器启动后默认执行的命令, 支持 shell 格式和 [] 格式
		stdin_open: true # 打开标准输入,可以接受外部输入
		tty: true # 模拟一个伪终端
		restart: always # 定义容器重启策略 no 禁止自动重启容器(默认) always 无论如何容器都会重启 on-failure 当出现on-failure 报错时, 容器重新启动。

配置完docker-compose服务后,需要在系统上设置一个systemd服务来运行dockers-compose up-d命令,这里以启动langchain大模型框架为例:
服务配置文件需要放置的目录是:

vim /etc/systemd/system/langchain.service

langchain.service文件的具体内容如下:

[Unit]
Description=Docker Compose for Knowledge Base
After=docker.service
Requires=docker.service

[Service]
Type=simple
Restart=on-failure
User=root # 使用有权限运行Docker Compose的用户名
ExecStart=/usr/bin/docker-compose -f /data/docker-compose.yml up -d
ExecStop=/usr/bin/docker-compose -f /data/docker-compose.yml down

[Install]
WantedBy=default.target # WantedBy`:指定了服务在哪个目标之下启动。在这个示例中,服务会在默认目标(`default.target`)之下启动

至此,服务配置完成,可以重新加载langchain.service 配置并启用服务:

# 重启服务
sudo systemctl daemon-reload
# 设置服务开机自启动
sudo systemctl enable langchain.service
# 启动服务
sudo systemctl start langchain.service
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值