当前位置: 首页 > news >正文

docker python_「docker实战篇」python的docker-docker镜像的创建使用命令(32)

3213cc6c1e7d3517608e84164dc300b1.png
上次说了将docker appium镜像下载到本地后,通过docker run命令appium的端口,并且通过python脚本启动了夜神模拟器内的抖音应用,之前也没说过docker镜像的制作,如果要定制自己的docker镜像如何定制。

72a9b5b28e9432ef4d13312b602ac94b.png

docker制作镜像的方法

镜像是容器的基础,在运行容器的时候,都会指定那个镜像是容器运行的基础,在之前例子,使用的镜像都是dockerHub里面的镜像,直接使用这些镜像是可以满足我们的一定需求的,当这些镜像无法满足需求的时候,我们就需要定制镜像。镜像是分层的,多层存储的,每一层是在前一层的基础上进行的修改,容器同样也是多层存储的的,镜像为基础层,在镜像的基础上形成的容器运行的存储层。
  • commit的方式可以制作镜像
    1.下载基础镜像nginx
docker run --name webnginx -d -p 80:80 nginx

8775b9e9572232f86dbfb9c61c1e0c00.png

2.查看容器

访问浏览器:http://192.168.70.100

b63fd04cdfca159635c893883d156e0d.png

3.修改默认页面的文字

docker exec -it webnginx bash
#进入容器后修改默认页面
echo "<h1>welcome to idig8.com study docker</h1>" > /usr/share/nginx/html/index.html

47f1cee9ecf103ca08b447edfdf27518.png

81290549eceecb786b7b1627ac3f69e9.png

4.查看修改的记录

查看最后一次变化
docker diff webnginx

a952468215af9b4633e359c2d3cb6c3f.png

5.docker commit 命令

docker commit [选项] <容器ID或者容器名> [<仓库名>[:<标签>]]
docker commit --author "idig8<idig8.com>" --message "Modify default page" webnginx nginx:v1

docker images

edd4d27790b52783aaa7e8fae4a5ad8e.png

6.docker 镜像历史

docker history nginx:v1

0353eaf17fe1307ecf8043e754e98316.png

7.使用定制镜像生成容器

指定一个81端口的服务,发现是按照之前打包容器的镜像,生成的容器。
docker run --name webnginx2 -d -p 81:80 nginx:v1

9bcd4acff00b839f43348b1289e4a30e.png


8.慎用docker commit命令生成镜像

虽然可以比较直观的帮助理解镜像分层存储的概念,但是实际环境中并不会这样使用。犹豫命令的执行,还有很多文件被改动或添加。这还仅仅是最简单的操作,如果是安装软件包,编译构建,那会有大量的无关内容被添加进来,如果不小心清理,将会导致镜像极为臃肿。此外,使用docker commit意外这所有对镜像的操作都是黑箱操作,生成的镜像也被称为黑箱镜像。实际工作中尽量不使用这个。
  • dockerfile的方式制作镜像
    >下次说。

PS:到此第一次完成了镜像的定制。使用的命令就是docker commit,手动操作给旧的镜像添加了一个新的层形成了一个新的镜像,大家对镜像多层分组应该有了感觉。

相关文章:

  • 在android studio中如何创建一个类来继承另外一个类_Python编程从入门到实践-连载8(类)...
  • python气象绘图速成_Python气象数据处理与绘图(11):矢量箭头图(风场,通量场)
  • ubuntu 自动挂载共享文件夹 /etc/fstab_使用 Cobbler 批量自动化部署 Windows 10 和 Windows Server 2019...
  • idea redis 插件_最全 !10个Redis可视化工具横向评测
  • sqlserver可视化工具_每个数据科学家都应该知道的18个基础工具
  • python coding_Python的编码注释# -*- coding:utf-8 -*-
  • python生成指定长度的列表_如何用Python创建固定长度的列表
  • 内存管理新技术_技术转管理,新项目经理都来看看
  • python中的json函数_Python Json模块中dumps、loads、dump、load函数介绍
  • char截取字符串_Java字符串:StringBuilder 和 StringBuffer
  • activex传字符串数组_温习笔记 字符串类型
  • python爬新闻并保存csv_Python爬虫如何实现自动翻页并将数据存入csv中?
  • python3官网下载教程_Python3 快速入门教程
  • python现在排第几_2019编程语言排行榜:铁打的Python连续3年第一,它居然跌出前十?...
  • 交换机调试工具_工业交换机在工厂中使用需要注意什么?
  • php的引用
  • [LeetCode] Wiggle Sort
  • 【译】理解JavaScript:new 关键字
  • Git同步原始仓库到Fork仓库中
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JAVA_NIO系列——Channel和Buffer详解
  • MySQL的数据类型
  • React中的“虫洞”——Context
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 关于 Cirru Editor 存储格式
  • 前端临床手札——文件上传
  • 强力优化Rancher k8s中国区的使用体验
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • NLPIR智能语义技术让大数据挖掘更简单
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • ${ }的特别功能
  • $L^p$ 调和函数恒为零
  • (Oracle)SQL优化技巧(一):分页查询
  • (zhuan) 一些RL的文献(及笔记)
  • (搬运以学习)flask 上下文的实现
  • (补)B+树一些思想
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)计算机毕业设计ssm电影分享网站
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)c++ std::pair 与 std::make
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)nsfocus-绿盟科技笔试题目
  • (转)大型网站的系统架构
  • .“空心村”成因分析及解决对策122344
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET BackgroundWorker
  • .NET CF命令行调试器MDbg入门(一)
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @Mapper作用
  • [120_移动开发Android]008_android开发之Pull操作xml文件