Docker Base Image 創建
本著學習的態度,想了解創建 Docker Base Image的方法,在官網,在百度,在相關論壇,查找相關資料,這里記錄下實現的步驟,
一. 環境
宿主機操作系統: OS X ,需要安裝VirtualBox ;
容器環境:centos7
二. 用VirtualBox 安裝系統,這里以centos 7為例(CentOS-7-x86_64-Minimal-1503-01.iso)
創建虛擬機,并安裝centos7,以下記錄了詳細安裝過程。
* 安裝過程簡單,我這里網速太慢了,就不上圖了,有需要的朋友留個郵箱,我發pdf。*
安裝完后,重啟后進入系統。
三. 修改網絡配置
修改網絡配置 /etc/sysconfig/network-script/ifcfg-enp0s3。刪除 UUID,HWADDR ;修改ONBOOT=no 為 ONBOOT=yes , 然后保存 。$ ifconfig Cannot find a valid baseurl for repo: base/7/x86_6重啟網絡接口:[root@centos7 ~]#ifdown enps03[root@centos7 ~]#ifup enps03$ yum install ifconfig 提示:Nothing to do 通過” yum provides” 命令列出那個包提供ifconfig命令$ yum provides ifconfig // 安裝$ yum -y install net-tools
四. 安裝Docker
安裝 EPEL (參考:http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/ )[root@centos7 ~]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm修改/etc/yum.repos.d/CentOS-Base.repo 把enabled=0 改成enabled=1vim /etc/yum.repos.d/CentOS-Base.repo[centosplus]enabled=1安裝 Docker[root@centos7 yum.repos.d]# yum install docker-io啟動 Docker [root@centos7 yum.repos.d]# service docker start
五. 創建基礎鏡像
替換變量把 /etc/yum.repos.d/CentOS-Base.repo 文件中$releasever 替換成 7$basearch 替換成 x86_64快速替換方法:vim /etc/yum.repos.d/CentOS-Base.repo:%s/$releasever/7/g:%s/$basearch/x86_64/g創建Docker image 生成腳本[root@centos7 yum.repos.d]# cd /root[root@centos7 ~]# mkdir scripts[root@centos7 ~]# cd scripts/[root@centos7 scripts]# vim createimage.sh然后把 https://github.com/docker/docker/blob/master/contrib/mkimage-yum.sh 文件中內容粘貼進去[root@centos7 scripts]# chmod +x createimage.sh創建image[root@centos7 scripts]# ./createimage.sh centos7base創建成功后查看,并把當前運行的容器刪除掉[root@centos7 tmp]# docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEcentos7base 7.1.1503 112ee00c2cbc 8 minutes ago 227.7 MB[root@centos7 tmp]# docker ps -allCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES752b9d49a079 centos7base:7.1.1503 "echo success" 10 minutes ago Exited (0) 10 minutes ago mad_saha[root@centos7 tmp]# docker rm 752b9d49a079752b9d49a079[root@centos7 tmp]# docker ps -allCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES導出image[root@centos7 tmp]# cd /tmp/[root@centos7 tmp]# docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEcentos7base 7.1.1503 112ee00c2cbc 14 minutes ago 227.7 MB[root@centos7 tmp]# docker save 112ee00c2cbc > /tmp/centos7base.tar[root@centos7 tmp]# lscentos7base.tar ks-script-L8TDO5 yum.log[root@centos7 tmp]#
六. Docker 常用命令
docker stop <CONTAINER ID> :用來停止運行中的容器,同時你還可以用docker start <CONTAINER ID>:用來啟動一個已經停止的容器。docker restart <CONTAINER ID>:可以重啟一個運行中的容器。這就相當于對一個容器先進行stop再start。docker attach <CONTAINER ID> :關聯到一個正在運行的容器刪除鏡像: docker rmi <IMAGE ID> docker rmi 2db1e85f26ba刪除容器:docker rm <CONTAINER ID> docker rm c3bfb652a491查看正在運行的容器 docker ps -all停止容器: exit重新進入窗口 docker start <CONTAINER ID> docker attach <CONTAINER ID>暫時退出容器 ctrl + p 然后 ctrl + q重新入進: docker attach <CONTAINER ID>將容器保存成鏡像: docker commit <CONTAINER ID> <NAME>:<TAG>
七. 導到本地鏡像庫
回去宿主機,把虛擬機中導出的image拷到本地hr:~ hr$ mkdir -p docker/imageshr:~ hr$ cd docker/images/hr:images hr$ scp root@192.168.1.4:/tmp/centos7base.tar .hr:images hr$ ls -lahtotal 469392drwxr-xr-x 3 hr staff 102B 12 5 21:08 .drwxr-xr-x 3 hr staff 102B 12 5 21:05 ..-rw-r--r-- 1 hr staff 229M 12 5 21:08 centos7base.tar啟動Docker Quick Start Terminal加載IMAGE 包到docker imagehr:images hr$ docker load < /Users/hr/docker/images/centos7base.tarhr:images hr$ docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE<none> <none> 112ee00c2cbc 29 minutes ago 227.7 MBhello-world latest 975b84d108f1 7 weeks ago 960 BTAR 等于none的就是剛剛導入的,把TAG改個名字:hr:images hr$ docker tag 112ee00c2cbc centos7base:7.1hr:images hr$ docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEcentos7base 7.1 112ee00c2cbc 33 minutes ago 227.7 MBhello-world latest 975b84d108f1 7 weeks ago 960 B運行容器:hr:images hr$ docker run -i -t 112ee00c2cbc /bin/bash[root@e948acae7b42 /]# hostnamee948acae7b42[root@e948acae7b42 /]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core)
八. 發布鏡像到docker hub
前提是先注冊一個帳號:https://hub.docker.com/
1. 登錄
docker login —username=<用戶名> —email=<郵箱地址>
2. 按docker REPOSITORY 要求修改鏡像TAG
docker tag <IMAGE ID> 用戶名/鏡像名/TAG
docker tag 112ee00c2cbc honor/centos7base:7.1
3. 上傳
docker push honor/centos7base
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選