被Docker折磨了好久,现在记录一下。用Mac做先按着教程下一个桌面版的MacOS Docker 安装,每次操作的时候必须启动才可以,要不就报没连接的错误。
- 文件目录
- Dockerfile
- requirements.txt
- 代码文件夹
- Docker命令行
- 装载建包
- 运行一下
- 导出
- 导入
目录如下图设置,在demo文件夹下,有两个文件和一个文件夹,Dockerfile就是指我们生成Docker时的设置文件,requirements.txt是指python环境下所需要的包,src文件夹是指代码,来一个一个看。
DockerfileDockerfile 文件这么写,具体参数看这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 $SSrequirements.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
加载检查有了
运行下,有结果了,就酱。



