栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Docker打包

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker打包

docker帮我们减少了很多复杂的环境差异 但是如果我们想把自己本地的一个好的 各种环境已经安装好的docker发送给同事B 那么具体该怎么操作了 下面来简单介绍一下把

如何进入容器空间内 修改容器内的环境 以及代码等内容 修改软件等操作 且提交镜像 发送给其他人

#先进入容器内部
[root localhost ~]# docker run -it centos /bin/bash
#安装软件
[root c36d571de79f /]# yum install vim -y
#安装好vim后 退出容器空间
#提交该容器(ID) 生成新的镜像文件(centos-vim)
[root localhost ~]# docker commit 371fccf2957d centos-vim
#验证是否已经正常生成镜像文件
[root localhost ~]# docker images
#导出镜像给同事使用
[root localhost ~]# docker save 8066b74c9151 /opt/centos-vim.tar.gz
#进入opt验证是否已经生成压缩文件
#cd /opt/

查看本地镜像

运行centos镜像

进入镜像内部 安装软件vim

提交该容器 生成新的镜像文件

经过验证 已经生成了镜像

同事B
由于环境问题 我们还在本机模拟这个操作 将本地的centos镜像进入删除 然后导出刚刚的压缩包 来模拟这个导入试验
1:删除本地镜像

[root localhost opt]# docker images 
REPOSITORY TAG IMAGE ID CREATED SIZE
centos-vim latest 8066b74c9151 9 minutes ago 279MB
python latest 1e76b28bfd4e 3 weeks ago 911MB
redis latest ddcca4b8a6f0 3 weeks ago 105MB
nginx latest dd34e67e3371 3 weeks ago 133MB
hello-world latest d1165f221234 6 months ago 13.3kB
centos latest 300e315adb2f 9 months ago 209MB
#删除centos-vim 
[root localhost opt]# docker rmi 806
Untagged: centos-vim:latest
Deleted: sha256:8066b74c91518426f27ff54c201ccb54541d028201d84aa580ac7ef680b55283
Deleted: sha256:bfd92bfcf16a468f9fa059259f3dbf041c863d88fe5e009ac6fe63f5dfb8820b
[root localhost opt]# 

2 导入压缩包镜像
假如接受的压缩包文件存放在/opt下面

[root localhost opt]# docker load /opt/centos-vim.tar.gz 
ca129192cddf: Loading layer [ ] 70.84MB/70.84MB
Loaded image ID: sha256:8066b74c91518426f27ff54c201ccb54541d028201d84aa580ac7ef680b55283
[root localhost opt]# docker images 
REPOSITORY TAG IMAGE ID CREATED SIZE
 none none 8066b74c9151 13 minutes ago 279MB
python latest 1e76b28bfd4e 3 weeks ago 911MB
redis latest ddcca4b8a6f0 3 weeks ago 105MB
nginx latest dd34e67e3371 3 weeks ago 133MB
hello-world latest d1165f221234 6 months ago 13.3kB
centos latest 300e315adb2f 9 months ago 209MB

看到已经导入成功了 只是没有名字 我们手动加一个 首次都会丢失

3 手动修改镜像名字

[root localhost opt]# docker tag 8066b74c9151 centos-vim-new
[root localhost opt]# docker images 
REPOSITORY TAG IMAGE ID CREATED SIZE
centos-vim-new latest 8066b74c9151 15 minutes ago 279MB
python latest 1e76b28bfd4e 3 weeks ago 911MB
redis latest ddcca4b8a6f0 3 weeks ago 105MB
nginx latest dd34e67e3371 3 weeks ago 133MB
hello-world latest d1165f221234 6 months ago 13.3kB
centos latest 300e315adb2f 9 months ago 209MB
[root localhost opt]# 
[root localhost opt]# docker run -it -d centos-vim-new /bin/bash 
0e47c9a29db8e89b6bc449b63f15bbc9c37aeb0f52408aea0b8ddb07e286bca4
[root localhost opt]# vim

OK 大功告成~~~~
下面来介绍一下如何运行一个web服务
1:批量停止容器服务 并且删除容器

[root localhost opt]# docker stop docker ps -aq 
[root localhost opt]# docker rm docker ps -aq 

2 下载一个webapp

[root localhost opt]# docker pull training/webapp

3 启动服务 宿主机的5000映射docker的5000端口

#p 指定端口 P 随机端口
[root localhost opt]# docker run --name docker-server-test -d -p 5000:5000 training/webapp python app.py

4 测试

[root localhost opt]# docker port e94d8721cf52
5000/tcp - 0.0.0.0:5000
5000/tcp - :::5000
[root localhost opt]# curl 127.0.0.1:5000
Hello world![root localhost opt]# 

5:进入该镜像内容 查看文件

[root localhost opt]# docker exec -it e94d8721cf52 /bin/bash
root e94d8721cf52:/opt/webapp# ls
Procfile app.py requirements.txt tests.py
root e94d8721cf52:/opt/webapp# 

6:修改文件后 exit后记得要重新启动服务 代码才会重新生效哦

最后提供一个官方网站吧
1.docker提供了一个类似于github的仓库dockerhub,
网址https://hub.docker.com/需要注册使用

2.注册docker id后 在linux中登录dockerhub 会提示让你输入账号密码 正确登录之后 本台机器就和dockerhub绑定账号了 你的镜像推送 就能够推送到 该账户的dockerhub中

docker login

2.1准备镜像推送
注意要保证image的tag是dockerhub账户名 如果镜像名字不对 需要改一下tag

docker tag 镜像id dockerhub的账号/centos-vim

语法是 docker tag 仓库名 dongdong/仓库名

3.推送docker image到dockerhub 好比你准备git push 推送代码一样

docker push dockerhub账号/centos-vim

4.在dockerhub中检查镜像,查看个人账户中的镜像文件

https://hub.docker.com/

5.删除本地镜像 测试下载pull 镜像文件

docker pull dongdong/centos-vim 

######接下来用Flask搭建一个小小的服务 写一个flask容器脚本吧 上代码哦
1 安装flask模块

pip3 install -i https://pypi.douban.com/simple flask

2:准备一段可以执行的flask代码

from flask import Flask
app Flask(__name__)
 app.route( / )
def hello():
 return this is good flask 
if __name__ __main__ :
 app.run(host 0.0.0.0 ,port 8080)


报错了 发现遇到问题 找不到flask 可是我明明已经安装了 百度暂时也没有找到办法
尝试用虚拟环境 排除环境干扰

[root localhost opt]#virtualenv --python python3 flask


发现又报错了 百度后 开启了debug模式 也还是不行
3 暂时先不管了 先编写dockerfile脚本吧 注意名字必须是 大写Dockerfile

[root localhost opt]#touch Dockerfile 写入如下的内容
FROM python #指定镜像 dockerhub提供好的python镜像 已经安装好了python3 很好用
RUN pip3 install -i https://pypi.douban.com/simple flask #在容器内安装flask模块 
ADD web_flask.py /opt #把宿主机的代码 拷贝到容器的/opt目录下
WORKDIR /opt #容器内进行目录切换
EXPOSE 8080 #打开容器的8080端口 用于和宿主机进行映射
CMD [ python3 , web_flask.py ] #在容器启动后 内部自动执行的命令是什么 

4:检查准备的脚本代码 以及Dockerfile文件

#查看目录是否有下面2个文件
[root localhost temp ]# ls
Dockerfile web_flask.py

5.构建该dockerfile 生成镜像

[root localhost temp ]# docker build .

6.检查docker的镜像 是否生成

docker images
#可以修改一下镜像的标签
[root localhost temp ]# docker tag a66 flask

7.运行该镜像文件 查看是否能够运行容器内的flask

docker run -d -p 8000:8080 flask

8.访问宿主机端口 查看容器内的应用

curl 127.0.0.1:8000

9.可以修改容器内的代码 重启容器

docker exec -it 88a5 /bin/bash 
修改容器内的代码
sed -i s/朋友们,再见。。。。/ web_flask.py

10.重启容器

docker restart 88a

11.再次访问容器内应用 查看更新的代码内容

curl 127.0.0.1:8000
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号