docker构建镜像,至少有两种方法:
- docker commit 命令
 
- Dockerfile
 
本篇文章介绍如何使用docker commit命令来构建自己的镜像。并推送到DockerHub。
1 准备
1 2 3 4 5 6 
  | [root@h1 ~]# docker login Username: hylexus Password:  Email: hylexus@163.com WARNING: login credentials saved in /root/.docker/config.json Login Succeeded 
  | 
 
2 创建镜像
此处我们打算,给一个centos:6.8容器安装nginx服务器。
并将其状态保留,以便不用每次启动新容器都要再次安装nginx。
2.1 启动一个容器
此处先启动一个centos:6.8容器
1 2 
  | [root@h1 ~]# docker run -it centos:6.8 /bin/bash [root@3b09d0d9450d /]# 
  | 
 
2.2 定制内容
给该容器添加nginx:
1 2 
  | # 先添加个yum源 vi /etc/yum.repos.d/nginx.repo 
  | 
 
内容如下:
1 2 3 4 5 6 
  | # 这些内容可以从nginx官网找到 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 
  | 
 
安装nginx:
1 2 
  | yum install -y nginx # 等待安装完成 
  | 
 
2.3 提交变更
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 
  | # 先退出容器 [root@3b09d0d9450d /]# exit exit # 提交变更,类似于git的commit,只提交变化的部分 [root@h1 ~]# docker commit 3b09d0d9450d hylexus/nginx 2efd2ac407e22bb03a02123913fa5a0627a74a20d11c2f578fe19e726645c949 # 也可以像git一样指定更加详细的提交信息 [root@h1 ~]# docker commit -m="add nginx" --author="hylexus" 3b09d0d9450d hylexus/nginx:webserver c12e1d27128ab89b49f240713f8a9444de4dffd8ee3703d12a51ead45a67f4a4 # 查看 [root@h1 ~]# docker images hylexus/nginx REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE hylexus/nginx       webserver           c12e1d27128a        39 seconds ago      295.9 MB hylexus/nginx       latest              2efd2ac407e2        19 minutes ago      295.9 MB 
  | 
 
2.4 启动新的镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
  | [root@h1 ~]# docker run -it hylexus/nginx:webserver /bin/bash  # nginx虽未自启动,但是确实是存在的 [root@5ad89abc5bed /]# service nginx status nginx is stopped [root@5ad89abc5bed /]# service nginx start Starting nginx:                                            [  OK  ] # 可以看到nginx的master和worker进程正常运行 [root@5ad89abc5bed /]# ps aux USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND root          1  0.0  0.1  12972  1908 ?        Ss   22:52   0:00 /bin/bash root         47  0.0  0.0  45028  1204 ?        Ss   22:53   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx        49  0.0  0.0  45468  1820 ?        S    22:53   0:00 nginx: worker process                    root         51  0.0  0.0  14896  1172 ?        R+   22:53   0:00 ps aux 
  | 
 
3 将镜像推送到DockerHub
就像github一样的版本控制一样。自己的docker镜像也可以提交到DockerHub。
1 2 3 
  | # 要先登录DockerHub # 此处的hylexus/nginx即是镜像名称:<user-name>/<image-name> docker push hylexus/nginx 
  | 
 
下一篇将介绍使用Dockerfile来构建自己的镜像。