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



