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 文件,并在文件内添加以下内容:

(2)、FROM 和 RUN 指令的作用
FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。
RUN:用于执行后面跟着的命令行命令。有以下俩种格式:
shell 格式:
exec 格式:
注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:
在 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 查看。

评论