[TOC]
docker構(gòu)建鏡像淀弹,至少有兩種方法:
- docker commit 命令
- Dockerfile
本篇文章介紹如何使用docker commit
命令來(lái)構(gòu)建自己的鏡像。并推送到DockerHub。
1 準(zhǔn)備
- DockerHub賬號(hào): 去這里注冊(cè)就行了饶辙,https://hub.docker.com/
- 登錄到Dockerhub,如下所示:
[root@h1 ~]# docker login
Username: hylexus
Password:
Email: hylexus@163.com
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded
2 創(chuàng)建鏡像
此處我們打算,給一個(gè)centos:6.8容器安裝nginx服務(wù)器。
并將其狀態(tài)保留沟绪,以便不用每次啟動(dòng)新容器都要再次安裝nginx。
2.1 啟動(dòng)一個(gè)容器
此處先啟動(dòng)一個(gè)centos:6.8容器
[root@h1 ~]# docker run -it centos:6.8 /bin/bash
[root@3b09d0d9450d /]#
2.2 定制內(nèi)容
給該容器添加nginx:
# 先添加個(gè)yum源
vi /etc/yum.repos.d/nginx.repo
內(nèi)容如下:
# 這些內(nèi)容可以從nginx官網(wǎng)找到
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
安裝nginx:
yum install -y nginx
# 等待安裝完成
2.3 提交變更
# 先退出容器
[root@3b09d0d9450d /]# exit
exit
# 提交變更空猜,類似于git的commit绽慈,只提交變化的部分
[root@h1 ~]# docker commit 3b09d0d9450d hylexus/nginx
2efd2ac407e22bb03a02123913fa5a0627a74a20d11c2f578fe19e726645c949
# 也可以像git一樣指定更加詳細(xì)的提交信息
[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 啟動(dòng)新的鏡像
[root@h1 ~]# docker run -it hylexus/nginx:webserver /bin/bash
# nginx雖未自啟動(dòng),但是確實(shí)是存在的
[root@5ad89abc5bed /]# service nginx status
nginx is stopped
[root@5ad89abc5bed /]# service nginx start
Starting nginx: [ OK ]
# 可以看到nginx的master和worker進(jìn)程正常運(yùn)行
[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坝疼。
# 要先登錄DockerHub
# 此處的hylexus/nginx即是鏡像名稱:<user-name>/<image-name>
docker push hylexus/nginx
下一篇將介紹使用Dockerfile來(lái)構(gòu)建自己的鏡像。