Dockerfile(构建初始镜像)
# python:3.8-slim-buster为精简版的python
FROM python:3.8-slim-buster
# 1059为组的id,newgroup为组名,1088为用户的id,newuser为新用户
RUN groupadd -g 1059 newgroup && \useradd -g -u 1088 -g newgroup -m newuser
USER newuser
RUN mkdir -p /home/wltx
COPY --chown=1088:1059 . /home/wltx
WORKDIR /home/wltx
# 全局安装python
USER root
RUN pip install --upgrade pip\pip install --root-user-action=ignore --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi simple --trusted-host mirrors.aliyun.com
创建镜像,并压缩导出
# 与dockerfile在同一个目录执行,创建镜像
docker build -t xxx:1.0 .
# 导出镜像
docker save -o xxx.tar xxx:1.0
# 压缩
tar -czxf xxx.tar.gz xxx.tar
另一个服务器加载上述镜像
# 解压镜像压缩文件
tar -zxvf xxx.tar.gz
# 加载镜像
docker load -i xxx.tar
docker images
dockerfile2(其他服务器,以这个镜像为基础构建新镜像)
FROM XXX:1.O
# 创建另一个新用户,这个新用户的用户id和组id与部署服务器的用户id和组id相同
RUN groupadd -g 111 zb_zh &&\useradd -g zb_zh -u 222 -m zb_zh
COPY --chown=222:111 config.py /home/wltx/config.py
RUN chown 222:111 /home/wltx
创建镜像2.0
docker build -t xxx:2.0 .
在新服务器上面启动镜像
#! /bin/bash
job_name=ZTB11
image_name=xxxx:1.0
PY_SCRIPT=start.py
user=$(id -u ${USER}):$(id -g ${USER})
WORK_DIR=$(cd $(dirname &0);pwd)
REMOTE_DIR=/home/wltxdocker run -rm -u $user -it -d\-v /home/xxx/.ssh/rsa_id:/homw/xxx/.ssh/rsa_id\-v $WORK_DIR/tmp:$REMOTE_DIR/tmp\-v $WORK_DIR/logs:$REMOTE_DIR/logs\-v /etc/localtime:/etc/localtime\$image_name python $REMOTE_DIR/$PY_SCRIPT
其中 -rm 参数是测试时候使用—退出容器后,对容器进行清理
-d 参数为部署的时候后台运行
映射目录前,需要保证本地服务器有这个目录,否则docker会自动帮创建归属root的目录