被Docker折磨了好久,现在记录一下。用Mac做先按着教程下一个桌面版的MacOS Docker 安装,每次操作的时候必须启动才可以,要不就报没连接的错误。
Docker_Python_传参
文件目录
目录如下图设置,在demo文件夹下,有两个文件和一个文件夹,Dockerfile就是指我们生成Docker时的设置文件,requirements.txt是指python环境下所需要的包,src文件夹是指代码,来一个一个看。
Dockerfile
Dockerfile 文件这么写,具体参数看这Docker Dockerfile
# 就是大环境
FROM python:3.9
# 工作目录
WORKDIR ./docker_predict_S
# 从本来的路径拷贝到容器指定路径,这么写最省事
ADD . .
# 运行下加载环境的
RUN pip install -r requirements.txt
# 环境变量,就相当于我们可以传参的参数
ENV SS=''
# 这个就是完成后执行命令行
ENTRYPOINT python ./src/pp.py --string $SS
requirements.txt
这里放一些加载包,加不加后面的版本号都行
certifi==2022.5.18.1
pandas==1.4.2
用下面这一行就可以导出环境依赖
pip freeze > requirements.txt
代码文件夹
在里面可以写自己的文件,也可以调用资源,但是路径得变成./src/...
就好了,我的运行文件pp.py这样写。
import argparse
parser = argparse.ArgumentParser(description='manual to this script')
parser.add_argument('--string', type=str, default='123123')
args = parser.parse_args()
if __name__ == '__main__':
print(args.string)
Docker命令行
好了,重头戏来了,先cd 到文件夹内部,当然需要把Docker这个程序运行起来。
现在执行docker images
是什么都没有的。
装载建包
sudo docker build -t demo:v1 .
demo:v1
是名字和版本,想弄啥弄,后面还有个 . 要注意,命令行截图如下。
经历了漫长的等待,docker images
也有镜像出现,OK了。
运行一下
因为是EVN的参数,所以要写在前面,用-e
的方式,一般传个端口号什么的,方便。
sudo docker run -e SS='22' demo:v1
运行截图
导出
先把刚运行的容器关闭下,全关了镜像状态就是不用了,再导出。
导出的命令
docker save -o demo.tar demo:v1
文件夹就有了
我们再把docker里之前的镜像删掉,用这个导入的来看看。
docker rmi 镜像id
截图如下
导入
docker load -i demo.tar
加载检查有了
运行下,有结果了,就酱。