IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker打包 -> 正文阅读

[系统运维]Docker打包

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/

查看本地镜像
image.png
运行centos镜像
image.png
进入镜像内部,安装软件vim
image.png
提交该容器,生成新的镜像文件,
image.png
经过验证,已经生成了镜像

同事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)

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

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

image.png
发现又报错了,百度后,开启了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
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:44:28  更:2021-09-29 10:45:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:26:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码