8.10 Docker(3)
Docker(3)
在企业案例中,我们往往打包成⼀个镜像后,就会打包,然后把它发送给其他的同学来使⽤。那么在本案例中,我 主要包⼀个hello-word的镜像,然后再在另外⼀个docker的导⼊和执⾏。 镜像导⼊导出的场景:异地的办公模式,那么场景就是:异地的开发同学写完代码后,然后把⾃⼰的应⽤程序打包成镜像,打包成镜像后,发送给测试同学,测试同学运⾏镜像(前提是把镜像导⼊中docker中),镜像运⾏成功后,等于环境部署成功,可以测试通许可以开始测试了。
导出、导入镜像
删除原本的hello-world,将本地桌面的重新导入
容器管理
docker run 镜像名称 这个过程可以理解为:把镜像文件创建成docker容器的一部分,然后再进行启动。特别需要注意的是:容器内的进程必须是前台运行状态,否则容器直接退出
容器命令
在运行镜像中,后面需要带一些指令的信息,这些指令的信息具体汇总为如下:
-d:后台运行
-it:交互式命令(bash)
--rm:容器挂掉后自动被删除
--name:给容器起一个名字
-p:端口映射
-P:指定任意的端口
容器信息查看
⼀个容器执⾏后,我们可以使⽤如下的指令查看容器的详细信息,具体指令为:docker ps -a
log查看
在docker容器中,查看容器的⽇志信息的命令为: docker logs -f
下⾯详细的演示下这部分的使⽤,具体为:
查看最新的20条
容器提交
在⼀个容器里面,⽐如centos⾥⾯安装了curl,如果没进⾏提交,那么下次进⼊还需要curl,这其实是⾮常不友好的,我们更加想要的是⼀个容器⾥⾯安装对应的应⽤程序后,下次进⼊还是存在的,但是前提条件是需要提交,下⾯详细的演示下这部分的应⽤,具体步骤如下:
运行容器centos:7.8.2003并安装curl
可发送百度请求
提交
可在新提交的镜像运行后使用curl功能
原镜像centos:7.8.2003退出后不可使用curl功能
容器停止&启动
容器运⾏后,可以启动容器,也是可以停⽌容器,以及查看容器的端⼝信息,下⾯还是以nginx的镜像信息为案 例,来演示下这部分。
运行镜像nginx
查看信息
查看容器端口
停止容器
启动会仍可查看端口
Dockerfile
使用dockerfile主要是用于构建docker镜像文件信息,相当于一个脚本,通过dockerfile自己的指令,来构建软件依赖,文件依赖,存储等等情况。
Dockerfile组成部分
dockerfile的主要组成部分可以汇总为: • 基础镜像信息 • 制作镜像操作指令 RUM • 容器启动时执行指令CMD["/bin/bash"]
Dockerfile基本指令
dockerfile的指令主要可以汇总为如下,使用dockerfile的前提是学习会这些指令的基本使用,具体如下:
• FROM #指令基础镜像
• MAINTAINER #指定维护者信息,也可以没有
• RUN #具体执行的操作,在命令前面加上RUN即可
• ADD #COPY文件,会自动进行解压
• WORKDIR #设置当前工作目录
• VOLUME #设置卷,挂载主机目录
• EXPOSE #指定对外的端口
• CMD #指定容器启动后需要干的事情
• COPY #复制文件
• ENV #环境变量
• ENTRYPOINT #容器启动后执行的命令
实战
一、first_lk
编写镜像shell脚本
构建镜像
查看镜像的信息
运行镜像并输出结果
注意事项
1、docker scan 输⼊命令后,再输⼊y
2、登录到docker hub的账户 docker login 输⼊后,输⼊docker hub的账 户和密码
3、再次开始构建镜像 docker build -t centos_name -f Dockerfile .
解决⽅案https://www.cloudsavvyit.com/11176/how-to-use-docker-scan-to-find-vulnerabilities-in-your-images/
解决错误问题: => [internal] load build definition from Dockerfile
二、部署Nginx
下⾯显示部署nginx的服务,期望部署是启动容器后,可以访问它的地址显示的信息。涉及到的nginx的Dockerfile 的⽂件内容为:
下来开始构建该Dockerfile的⽂件,主要信息如下:
查看website镜像的信息
运行website镜像
也可在postman获取响应数据
原文地址:https://www.cnblogs.com/likaiEndfate/p/16573637.html
- ExecuteReader在执行有输出参数的存储过程时拿不到输出参数
- CTF---Web入门第十三题 拐弯抹角
- 小案例(四):销售额下滑(python)
- 【最新TensorFlow1.4.0教程01】TF1.4.0介绍与动态图机制 Eager Execution使用
- 把插入的数据自动备份到另一个表中 ~ 语境:本地和服务器自动同步
- 数据分析小案例(三):调查问卷(python)
- CTF---Web入门第十六题 天下武功唯快不破
- 数据分析小案例(二):面包是不是变轻了(python)
- 数据分析小案例(一):商业街抽奖(python)
- Bagging算法(R语言)
- iOS @property探究(一): 基础详解你要知道的@property都在这里
- 在创建带输出参数和返回值的存储过程时---犯下的一个低级错误
- iOS block探究(二): 深入理解你要知道的block都在这里
- 使用开源人脸特征提取器进行脸部颜值评分
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- c 语言函数指针之回调函数
- 解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
- php和js实现根据子网掩码和ip计算子网功能示例
- php ZipArchive实现多文件打包下载实例
- PHP 代码简洁之道(小结)
- Thinkphp 在api开发中异常返回依然是html的解决方式
- Laravel 连接(Join)示例
- 解决Laravel自定义类引入和命名空间的问题
- 详解Laravel服务容器的绑定与解析
- 修改Laravel自带的认证系统的User类的命名空间的步骤
- PHP使用递归按层级查找数据的方法
- Laravel6.2中用于用户登录的新密码确认流程详解
- PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
- 浅谈PHP array_search 和 in_array 函数效率问题
- 仿抖音短视频APP源码,实现简单的换头像并保存