电子商务|windows下docker的安装与镜像的制作提交

电子商务|windows下docker的安装与镜像的制作提交

文章图片

电子商务|windows下docker的安装与镜像的制作提交

文章图片

电子商务|windows下docker的安装与镜像的制作提交

文章图片

电子商务|windows下docker的安装与镜像的制作提交

文章图片

电子商务|windows下docker的安装与镜像的制作提交

文章图片

电子商务|windows下docker的安装与镜像的制作提交

文章图片

电子商务|windows下docker的安装与镜像的制作提交

文章图片

【电子商务|windows下docker的安装与镜像的制作提交】电子商务|windows下docker的安装与镜像的制作提交

文章图片

电子商务|windows下docker的安装与镜像的制作提交

文章图片

电子商务|windows下docker的安装与镜像的制作提交

前言:作为一个开发人员 , 每每在更换电脑或重装系统时 , 要重新安装开发工具搭建开发环境 。 所以有的人会封装一下系统(这里指windows) , 将平时用到的环境和工具全安装在里面 , 改改OEM , 以后换了电脑就直接拿封装的系统安装就方便很多 。

    同样但也不一样的 , 在开发完的应用程序在需要更换IDC或者部署分布式时 。 针对应用又要重新搭建环境 , 安装软件依赖等等 。 所以这时候可以将应用软件以及环境依赖一并作为docker镜像 , 部署的时候直接拉取镜像 , 启动后为容器就可以正常运行了 。
Docker简介:Docker 是一个开源的应用容器引擎 , 基于 Go 语言 并遵从 Apache2.0 协议开源 。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中 , 然后发布到任何流行的 Linux 机器上 , 也可以实现虚拟化 。 容器是完全使用沙箱机制 , 相互之间不会有任何接口(类似 iPhone 的 app)更重要的是容器性能开销极低 。
Docker与虚拟机的区别:上面系统封装与镜像制作 , 我说过两者有相同但也一点不同 。 所以就以我的理解简单介绍一下Docker与虚拟机的区别 。 网上也有很多详细介绍两者架构的原理及原理图 , 这里就略过原理直接说差异 。
使用场景:Docker适合隔离应用 , 虚拟机能隔离用户(更能隔离应用) , 因为有独立完整的操作系统 。
技术方面:虚拟机是通过虚拟化硬件并CPU要支持虚拟化技术 , Docker容器只是在宿主操作系统上开启了Docker引擎 , 比如一个CentOS镜像是一套文件系统 , 引擎将容器放入到一个进程中并相互隔离 。 各个容器共用同一套操作系统资源 , 不需要虚拟化硬件 , 启动快速 。

Docker的安装:在windows下有两个工具 ,  docker toolbox 针对win7 win8 , 工具集合了Virtual Box(虚拟机软件) , Kitematic(docker图形化软件) , 和其他几个命令终端工具 。 针对win10的是 Docker for Windows Installer  。

安装完毕后点击Docker Quickstart启动 Docker Toolbox 终端 。 命令执行会先在Virtualbox创建一个名字为default的CentOS虚拟机并安装了Docker 。 CentOS默认账号docker 密码tcuser , Ip在启动toolbox时在命令板上显示 , 可以通过Xshell连接 。

镜像下载&容器使用最简单的就是打开Kitematic工具 , 网络正常时会展示主流的镜像 , 选择其中一个点击“create”就会下载并在左侧栏启动容器 。 容器的启动和停止重启在图形化界面中也很方便地操作 。 下面就下载PHP和 Nginx并运行在浏览器打开 。


1. nginx , php容器设置与使用



2. 镜像的制作
镜像制作就需要使用 Dockerfile , 类似PHP项目中的composer.json , 用于构建镜像的文本文件 , 文本内容包含了一条条构建镜像所需的指令和说明 。
这里仅讲解如何运行 Dockerfile 文件来定制一个镜像 , 具体 Dockerfile 文件内指令详解 , 将在下一节中介绍 , 这里你只要知道构建的流程即可 。
(1)、下面以定制一个 nginx 镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件)
在一个空目录下 , 新建一个名为 Dockerfile 文件 , 并在文件内添加以下内容:
FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html


(2)、FROM 和 RUN 指令的作用
FROM:定制的镜像都是基于 FROM 的镜像 , 这里的 nginx 就是定制需要的基础镜像 。 后续的操作都是基于 nginx 。
RUN:用于执行后面跟着的命令行命令 。 有以下俩种格式:
shell 格式:
RUN <命令行命令># <命令行命令> 等同于 , 在终端操作的 shell 命令 。

exec 格式:
RUN [\"可执行文件\" \"参数1\" \"参数2\"
# 例如:# RUN [\"./test.php\" \"dev\" \"offline\"
等价于 RUN ./test.php dev offline

注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层 。 所以过多无意义的层 , 会造成镜像膨胀过大 。 例如:


如上 , 以 && 符号连接命令 , 这样执行后 , 只会创建 1 层镜像 。

在 Dockerfile 文件的存放目录下 , 执行构建动作 。
以下示例 , 通过目录下的 Dockerfile 构建一个 nginx:test(镜像名称:镜像标签) 。
注:最后的.代表本次执行的上下文路径 , 下一节会介绍 。
$ docker build  -t nginx:test .

以上显示 , 说明已经构建成功 。
$ docker build  -t nginx:test .
镜像上传到远程镜像库1. 首先在docker hub官网注册一个账号 , 然后可以正在登陆 , Kitematic 也可以登陆试试 。

2.  打开docker cli命令面板 , 输入docker login , 输入docker hub账号密码后 , 显示login success后 , 就可以准备自己本地的镜像文件了 。

3.  docker images查看本地的所有镜像文件 , 记住镜像完整名称 , 然后给要提交的镜像加标签 , 这时会生成两个镜像ID一样的镜像文件 。 然后通过docker push 完整的镜像文件:包括标签名 , 最后就可以推送到自己的镜像库了 。



上传至阿里云镜像库1. 首先有阿里云账户 , 登录成功后开通\"容器镜像服务\" , 设置账号密码 , 并建立空间和仓库 , 点击管理可以看到登录 , 拉取 , 推送的命令 。

2. 同样的方式打开docker cli命令面板或者xshell连接docker中登录阿里镜像账号 , 同样的方式找到本地做好的镜像然后推送 。


3. 拉取docker hub和阿里镜像都通过 docker pull 完整的镜像名 , 就可以拉取到本地 , 然后通过docker images查看 。


    推荐阅读