前序

什么是docker?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

具体关于Docker更多的介绍请自行网上查阅


一、Docker环境的搭建

Docker基于Linux系统为基础的,所以我们先要准备一台Linux系统,这里以CentOS6.8为例

1、检查系统是否可以上网

# ping www.baidu.com

2、安装epel的软件仓库

# yum -y install epel-release

3、检查device-mapper的驱动

# ls /sys/class/misc/device-mapper/

dev  power  subsystem  uevent

*如果为空,执行以下命令

# yum -y install device-mapper

4、安装docker系统环境

# yum -y install docker-io

5、启动docker服务

# service docker start

6、下载基础镜像

# docker pull centos

7、测试基础镜像centos是否可用

# docker run -it --name='test' centos


二、创建自己的定制镜像

序:这里以定制nginx应用为例,以下是具体操作

Docker创建镜像有两种方法:

1、使用docker commit命令

2、使用docker build命令

推荐使用docker build方法来构建自己的镜像,具体原因请自行查阅;以下操作方法都以docker build的方法来示范


1、首先创建一个基目录(也就是创建一个文件夹,把创建镜像用到的所有文件都放在这里)

# mkdir -p /tmp/nginx

# cd /tmp/nginx

# touch Dockfile


2、编写dockerfile文件

# vim Dockerfile

# Author:Zlyang by 2017-06-12

FROM centos

MAINTAINER Zlyang "DBA_Master@163.com"

ENV REFRESHED_AT 2017-06-12

# 下面这两句比较特殊,在centos6上必须要有,否则创建出来的容器sshd不能登录

RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

# 启动sshd服务并且暴露22端口

RUN mkdir /var/run/sshd

# 安装nginx

RUN yum -y install nginx

# 安装工具

RUN yum -y install vim net-tools wget openssh-* lrzsz git wget python-devel ntp net-tools curl cmake epel-release rpmdevtools openssl-devel kernel-devel gcc redhat-rpm-config bridge-utils

RUN yum groupinstall "Development Tools" -y

# 添加测试页

RUN echo '<h1> Hello Nginx <h1>' >> /usr/share/nginx/html

# 开放80 22端口

EXPOSE 80 22

CMD ["/usr/sbin/sshd", "-D"]


3、使用docker build构建

# docker build -t='zlyang/nginx' .

注:-t="CNAME" 为新构建的镜像起个别名

. 千万别忘了这个点,指的是当前目录(此项为Dockerfile的路径)


4、创建完成后查看

# docker images 


三、把镜像保存到本地

# docker save -o centos_nginx.tar zlyang/nginx

注:centos_nginx.tar为保存到本地后的包名

   zlyang/nginx 为被打包的对象镜像


到此,镜像就都打包完成了,如果在一台新机器还原docker镜像,只需要使用:docker load --input centos_nginx.tar就可以了。


如有任何问题可以联系:DBA_Master@163.com