docker帮我们减少了很多复杂的环境差异,但是如果我们想把自己本地的一个好的,各种环境已经安装好的docker发送给同事B,那么具体该怎么操作了,下面来简单介绍一下把 我 如何进入容器空间内,修改容器内的环境,以及代码等内容,修改软件等操作,且提交镜像,发送给其他人
#先进入容器内部
[root@localhost ~]# docker run -it centos /bin/bash
#安装软件
[root@c36d571de79f /]# yum install vim -y
#安装好vim后,退出容器空间
exit
#提交该容器(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
|