docker制作python项目镜像
docker制作python项目镜像
本文内容:讲述如何将自己开发的一个python项目,打包成docker镜像。
制作docker镜像主要有两种方法:
1、先用docker pull 命令拉取一个基础镜像,然后通过docker commit 命令在此镜像基础上制作新镜像。
2、通过dockerfile制作
第一种方法:
准备工作:已安装docker的linux系统。docker安装请参考:Ubuntu 16.04安装Docker
1、拉取基础镜像:
(1)用docker search 命令先查找有哪些镜像:
(2)用docker pull 拉取其中一个:
然后就可以用docker images命令查看到这个拉取的镜像了。
2、运行该基础镜像:
docker run -idt 镜像名:tag号
用docker ps 查看镜像运行状态:
可以看到该镜像已经运行起来了,名字叫”lucid_lalande“。容器ID是d2cc36fbcb1a。
3、进入该镜像运行起来的容器环境:
docker exec -it 容器ID /bin/bash
可以看到已经以交互式方式进入了容器中。
4、在容器内部进行相关修改
创建一个文件夹,用来存放python项目代码
5、退出容器终端,将宿主机文件拷贝到刚刚新建的容器目录中
退出容器终端:
将宿主机文件拷贝到容器中:
docker cp 宿主机项目文件存放目录 容器ID:容器中存放项目文件的目录
注意文件名中不要带空格,否则会报错。
6、将容器保存为新镜像
先用docker ps 查看容器运行状态:
该容器ID和容器名都可以看到。
然后用docker commit命令将容器保存为新镜像。
docker commit 容器名 新镜像名:版本号
这时用docker images命令,可以看到新创建的镜像了。
至此,我们自己python项目的镜像就创建好了。
下面看看怎么将镜像打包成tar包,以及如何使用镜像tar包。
1、将新镜像打包成tar包
用docker save命令:
docker save -o ***.tar 镜像名:TAG
docker save保存的镜像,默认保存在当前路径。用ll命令可以看到打包好的tar包。
2、使用镜像tar包
拿到tar包后,我们应该怎么使用呢?
用docker load命令:
docker load -i tar包名
加载tar包后,用docker images命令可以看到,名为feature_selection.tar的tar包,已经被加载成镜像了。然后我们就可以像使用普通镜像一样来使用它了。
参考:docker commit命令创建新的镜像https://www.cnblogs.com/Dev0ps/p/9969783.html
总结一下:
docker常用命令:
***************************制作镜像常用命令:***************************1、运行镜像 docker run -idt 镜像名:tag号 或 docker run -it 镜像名:tag号 /bin/bash
-i: 交互式操作
-d :指定容器的运行模式,让容器在后台运行。默认不会进入容器,想要进入容器需要使用docker exec
-t: 终端
/bin/bash:命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash** 加端口映射: docker run -p 16800:5000 -idt 镜像名:tag号
(容器中的5000端口映射成宿主机的16800端口)
端口映射后,外部访问容器中服务地址:宿主机IP:16800** 将宿主机文件挂载到容器中:
docker run -it -v /test:/soft 镜像名:tag号 /bin/bash
-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录** 设置容器编码格式
docker run -it -e PYTHONIOENCODING=UTF-8 -v /test:/soft 镜像名:tag号 /bin/bash
-e参数设置shell的默认编码方式为 utf-8,在编译python代码的时候才不会报如下错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-12** 以特权模式运行容器:docker run -d --name pb --privileged=true 镜像名:id /usr/sbin/init进入容器:docker exec -it pb /bin/bash以特权模式运行容器后,可以在容器内使用service等后台服务。2、进入容器 docker exec -it 容器ID /bin/bash3、宿主机文件拷贝到容器 docker cp 宿主机项目文件存放目录 容器ID:容器中存放项目文件的目录
可直接在运行镜像时通过-v参数将宿主机文件挂载到容器。容器文件拷贝到宿主机: docker cp 容器ID:容器中存放项目文件的目录 宿主机项目文件存放目录4、将容器保存为新镜像 docker commit 容器名 新镜像名:版本号5、将新镜像打包成tar包(默认保存到当前路径) docker save -o ***.tar 镜像名:TAG6、加载tar包 docker load -i xxx.tar*************************其他常用命令:*************************
1、查看容器的资源使用情况 docker top container_id
docker inspect2、删除镜像 docker rmi IMAGE ID
(如果镜像正在被某个容器使用,则会报错,这时只需先删除容器就好了)3、删除容器 docker rm 容器ID4、启动容器 docker start 容器ID停止容器 docker stop 容器ID5、更名 docker tag dl-4a:1.7.1 dl-4a:1.5.76、查看容器中进程信息:
在宿主机直接运行:docker exec 容器ID ps -ef
或者在容器中运行:jobs -l
停掉容器中进程:进入该容器,kill pid 7、查看容器中端口映射信息:docker container port 容器ID
结果:15500/tcp -> 0.0.0.0:15400,容器内port 15500映射成了宿主机port 15400
第二种方法:
dockerfile示例:
FROM python:2.7
MAINTAINER Angel_Kitty <angelkitty6698@gmail.com>
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["app.py"]
这个例子是启动一个 python flask app 的 Dockerfile ( flask 是 python 的一个轻量的 web 框架)我们可以分析一下上面这个过程:
1、从 Docker Hub 上 pull 下 python 2.7 的基础镜像
2、显示维护者的信息
3、copy 当前目录到容器中的 /app 目录下 复制本地主机的 <src> ( Dockerfile 所在目录的相对路径)到容器里 <dest>
4、指定工作路径为 /app
5、安装依赖包
6、暴露 5000 端口
7、启动 app
Dockerfile 是由一行行命令语句组成,并且支持已 # 开头的注释行。
一般来说,我们可以将 Dockerfile 分为四个部分:
基础镜像(父镜像)信息指令 FROM
维护者信息指令 MAINTAINER
镜像操作指令 RUN 、 EVN 、 ADD 和 WORKDIR 等
容器启动指令 CMD 、 ENTRYPOINT 和 USER 等
docker build -t feature_selection:1.0.0 .
docker run -p 4000:80 feature_selection
参考:docker python 提示错误UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position
docker制作python项目镜像相关推荐
- 2021-01-22 使用 Docker 打包 Python 项目
使用 Docker 打包 Python 项目 1. 获取 Python 的镜像文件 项目的封装可以建立在已有镜像的基础上,在 Ubuntu 中可通过 docker pull python:3.6.8- ...
- docker 部署Python项目 以及dockerfile文件的编写
Dockerfile文件详解:https://www.cnblogs.com/panwenbin-logs/p/8007348.html Docker的基本使用(部署python项目): https: ...
- 【Python】使用Docker部署Python项目
用Docker部署Python项目 0.源码目录 1.编写Dockerfile文件 2.Docker根据Dockerfile文件生成Docker镜像 3.将镜像运行在Docker容器中 众所周知,同一 ...
- docker打包Python项目
docker打包Python项目 Step1: 配置运行环境文档 项目结构如下 docker_test ├── Dockerfile ├── (myapps) │ └── BPNN.py └── re ...
- docker制作深度学习镜像(以windows环境下为例)
向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习 公众号:datayx 用 Docker 安装深度学习环境,轻量.方便!整个系统大小仅需2~3G,用完还能带着走!一 ...
- python项目部署到docker_使用docker 部署python 项目
使用python 开发了一个restfu api程序,使用docker镜像部署.主要有如下步骤,简单记录以供以后参考. 1. 创建DockerFile文件 创建一个DockerFile文件,文件名为D ...
- docker制作mysql5.7镜像详解
docker制作mysql5.7的镜像难点在于,当mysql安装完成后需要手工初始化.我在其他博客查了下做法大多是用脚本初始化配置启动,但这种模式做出来的父进程不是mysql,是以/bin/bash启 ...
- Docker制作Python运行环境基础镜像
一.准备工作 1.1 Python安装包的下载 (说明:python版本可根据自己需求更换) 官网下载:https://www.python.org/downloads/source/ 百度网盘: – ...
- docker部署python项目_docker部署项目实践
项目介绍 此项目是一个基于ubuntu16.4+python3的flask web项目,使用gunicorn启动,项目运行时需要加载一些动态链接库,并且项目在运行时需要多个后缀为.vpo的授权文件,项 ...
- Ubuntu18.04下使用docker制作ubuntu20.04镜像
一.Docker创建镜像等操作 1.下载ubuntu20.04 # sudo docker pull ubuntu:20.042.查看刚刚下载ubuntu20.04 # sudo docker ima ...
最新文章
- 【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 下载 DB Browser 安装包 | 安装 DB Browser 工具 )
- 电脑开机密码忘记了怎么办?
- iPhone X适配小结
- Android-Multidex安装流程解析
- UTF-8字符集成为Java 18默认字符集?发布周期将至,Java 18现身
- java excel api 下载文件_Java-Excel Java操作Excel POI(Jakarta POI API) - 下载 - 搜珍网
- Python中如何获得数组或者列表按大小排序后元素的索引列表
- GitHub 40000星!收下这份宇宙最强「程序员装备指南」
- 数据结构视频教程 -《[北风网]C#版数据结构与算法高级教程》
- 上位机和下位机的区别是什么
- SPSS作业-检验两组数据有无显著
- 一文彻底理解卡诺图化简算法
- [Android Studio] 添加Override/Implement methods
- LFS详细搭建指南——适合初学者使用
- 正斜杠 ,又称左斜杠,符号是/;反斜杠,也称右斜杠,符号是\。
- PAT2021年冬(满分题解)
- 4.2.4 Kafka高级特性解析(物理存储、稳定性:事物,控制器,可靠性,一致性,_consumer_offsets、延时队列、自定义重试队列)
- 《论文阅读》Knowledge-Enriched Transformer for Emotion Detection in Textual Conversations
- 计算机控制不恒定性,计算机控制-习题答题.doc
- windows 配置域名