docker打包代码和开机自启动

注意:
1、该流程在linux系统(arm或x86架构)已验证,拉取包时注意是arm架构还是x86架构,arm通常表示为aarch,amd可适用于x86
2、在不关注后台信息的情况下才用开机自启动命令,部署好后需要测试的情况下建议按照非自启动步骤执行,这样才能看到后台信息

一、docker打包
1、拉取Ubuntu 22.04 LTS镜像,下面链接中注意区分架构x86/amd或arm/aarch, 命令中ubuntu:22.04更换对对应地址

查找ubuntu:22.04镜像的地址:
https://docker.aityp.com/i/search?search=ubuntu%EF%BC%9A22.04

docker pull ubuntu:22.04

更改名字

docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ubuntu:22.04 ubuntu:22.04

确认:

docker images | grep ubuntu

2、启动容器(–name指定容器名alg_docker,方便后续操作)

docker run -it --name alg_docker ubuntu:22.04 /bin/bash

3、更新apt包索引

apt update && apt upgrade -y

4、安装wget和ca-certificates(确保HTTPS下载正常)

apt install -y wget ca-certificates

5、下载Miniconda3(对应Linux x86_64架构,版本可根据官网更新)

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh

6、运行安装脚本(-b表示静默安装,-p指定安装路径)

bash miniconda.sh -b -p /opt/miniconda3

/opt/miniconda/envs/env_name/位置确认好,后面自启动命令中会用到
7、初始化conda(让终端识别conda命令)

/opt/miniconda3/bin/conda init bash

8、刷新环境变量(使conda生效)

source ~/.bashrc

9、查看版本信息

conda --version 

10、容器中创建代码目录

mkdir -p /app/code

11、复制代码到容器中
docker cp 本地路径 容器名:容器内路径

docker cp local_code/  alg_docker:/app/code/

列出复制的文件,确认无误:

ls /app/code/ 

12、虚拟环境准备与代码执行验证
【可省略】 conda初始化

source /opt/anaconda3/etc/profile.d/conda.sh

打开代码地址

cd /app/code/local_code/

创建虚拟环境

conda create -n env_name python=3.12

安装所需要的包

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

激活虚拟环境

conda activate env_name

代码执行验证

python api.py

13、打包
(1)提交
格式:docker commit 容器名 新镜像名:标签 alg_docker

docker commit alg_docker alg_docker:v1

(2)tar打包 alg_docker

docker save -o alg_docker_v1.tar alg_docker:v1

二、验证
1、普通tar包导入

docker load -i alg_docker_v1.tar

2、验证是否导入成功

docker images | grep alg_docker

docker images

3、运行容器alg_docker:v1
一般测试:

docker run -it -d -p 8888:8000  alg_docker:v1 /bin/bash

带有–name和–network(后端需要)alg_docker_api 、 alg_docker:v1

docker run -it -d -p 8888:8000  --name alg_docker_api --network tsnet alg_docker:v1 /bin/bash

4、代码执行
进入容器

docker exec -it 7cf5c1dbfc04 /bin/bash
cd /app/code/local_code/

conda create -n env_name python=3.12

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

conda activate env_name

python api.py

5、在终端中进行curl命令验证
三、启动/开机自启动
1、强制删除已存在的容器(无论是否运行)
alg_docker_api 可换为容器id

docker stop alg_docker_api 

docker rm -f alg_docker_api  

2、重新创建并运行

docker run -d --restart always -p 8888:8000 --name alg_docker_api --network tsnet 
alg_docker:v1 /bin/bash -c "cd /app/code/local_code && /opt/miniconda/envs/env_name/bin/uvicorn api:app --host 0.0.0.0 --port 8000"
docker run -d \
  --restart always \
  -p 8888:8000 \
  --name szr_algorithm_api \
  --network tsnet \
  szr_algorithm_docker:v4 \
  /bin/bash -c "cd /app/code/local_code && /opt/miniconda/envs/env_name/bin/uvicorn api:app --host 0.0.0.0 --port 8000"

/opt/miniconda/envs/env_name/bin/虚拟环境需要确认好位置,在安装miniconda时就记录

3、验证
(1)重启docker

systemctl restart docker

(2)终端中curl命令验证自启动是否成功

四、文件修改
1、从容器中复制出来

docker cp [容器id]:/app/code/local_code ~/文件本地地址

2、在容器运行的状态下,修改后复制回容器中,直接覆盖

docker cp ~/文件本地地址 [容器id]:/app/code/local_code 

3、停止容器

docker stop [容器id]

4、开启容器

docker start [容器id]

5、进入容器手动执行命令/或直接执行自启动命令,下面是手动执行命令,自启动命令参考上文相关信息
(1)进入容器

docker exec -it [容器名称或id] /bin/bash

(2)执行代码, api指的是代码名称api.py

cd /app/code/local_code/

conda activate env_name

uvicorn api:app --host 0.0.0.0 --port 8000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值