Docker Base Image自己創(chuàng)建具體實(shí)現(xiàn)
Docker Base Image 創(chuàng)建
本著學(xué)習(xí)的態(tài)度,想了解創(chuàng)建 Docker Base Image的方法,在官網(wǎng),在百度,在相關(guān)論壇,查找相關(guān)資料,這里記錄下實(shí)現(xiàn)的步驟,
一. 環(huán)境
宿主機(jī)操作系統(tǒng): OS X ,需要安裝VirtualBox ;
容器環(huán)境:centos7
二. 用VirtualBox 安裝系統(tǒng),這里以centos 7為例(CentOS-7-x86_64-Minimal-1503-01.iso)
創(chuàng)建虛擬機(jī),并安裝centos7,以下記錄了詳細(xì)安裝過程。
* 安裝過程簡單,我這里網(wǎng)速太慢了,就不上圖了,有需要的朋友留個郵箱,我發(fā)pdf。*
安裝完后,重啟后進(jìn)入系統(tǒng)。
三. 修改網(wǎng)絡(luò)配置
修改網(wǎng)絡(luò)配置 /etc/sysconfig/network-script/ifcfg-enp0s3。 刪除 UUID,HWADDR ; 修改ONBOOT=no 為 ONBOOT=yes , 然后保存 。 $ ifconfig Cannot find a valid baseurl for repo: base/7/x86_6 重啟網(wǎng)絡(luò)接口: [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=1 vim /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
五. 創(chuàng)建基礎(chǔ)鏡像
替換變量 把 /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 創(chuàng)建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 文件中內(nèi)容粘貼進(jìn)去 [root@centos7 scripts]# chmod +x createimage.sh 創(chuàng)建image [root@centos7 scripts]# ./createimage.sh centos7base 創(chuàng)建成功后查看,并把當(dāng)前運(yùn)行的容器刪除掉 [root@centos7 tmp]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos7base 7.1.1503 112ee00c2cbc 8 minutes ago 227.7 MB [root@centos7 tmp]# docker ps -all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 752b9d49a079 centos7base:7.1.1503 "echo success" 10 minutes ago Exited (0) 10 minutes ago mad_saha [root@centos7 tmp]# docker rm 752b9d49a079 752b9d49a079 [root@centos7 tmp]# docker ps -all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 導(dǎo)出image [root@centos7 tmp]# cd /tmp/ [root@centos7 tmp]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos7base 7.1.1503 112ee00c2cbc 14 minutes ago 227.7 MB [root@centos7 tmp]# docker save 112ee00c2cbc > /tmp/centos7base.tar [root@centos7 tmp]# ls centos7base.tar ks-script-L8TDO5 yum.log [root@centos7 tmp]#
六. Docker 常用命令
docker stop <CONTAINER ID> :用來停止運(yùn)行中的容器,同時你還可以用 docker start <CONTAINER ID>:用來啟動一個已經(jīng)停止的容器。 docker restart <CONTAINER ID>:可以重啟一個運(yùn)行中的容器。這就相當(dāng)于對一個容器先進(jìn)行stop再start。 docker attach <CONTAINER ID> :關(guān)聯(lián)到一個正在運(yùn)行的容器 刪除鏡像: docker rmi <IMAGE ID> docker rmi 2db1e85f26ba 刪除容器:docker rm <CONTAINER ID> docker rm c3bfb652a491 查看正在運(yùn)行的容器 docker ps -all 停止容器: exit 重新進(jìn)入窗口 docker start <CONTAINER ID> docker attach <CONTAINER ID> 暫時退出容器 ctrl + p 然后 ctrl + q 重新入進(jìn): docker attach <CONTAINER ID> 將容器保存成鏡像: docker commit <CONTAINER ID> <NAME>:<TAG>
七. 導(dǎo)到本地鏡像庫
回去宿主機(jī),把虛擬機(jī)中導(dǎo)出的image拷到本地 hr:~ hr$ mkdir -p docker/images hr:~ hr$ cd docker/images/ hr:images hr$ scp root@192.168.1.4:/tmp/centos7base.tar . hr:images hr$ ls -lah total 469392 drwxr-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 image hr:images hr$ docker load < /Users/hr/docker/images/centos7base.tar hr:images hr$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE <none> <none> 112ee00c2cbc 29 minutes ago 227.7 MB hello-world latest 975b84d108f1 7 weeks ago 960 B TAR 等于none的就是剛剛導(dǎo)入的,把TAG改個名字: hr:images hr$ docker tag 112ee00c2cbc centos7base:7.1 hr:images hr$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos7base 7.1 112ee00c2cbc 33 minutes ago 227.7 MB hello-world latest 975b84d108f1 7 weeks ago 960 B 運(yùn)行容器: hr:images hr$ docker run -i -t 112ee00c2cbc /bin/bash [root@e948acae7b42 /]# hostname e948acae7b42 [root@e948acae7b42 /]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core)
八. 發(fā)布鏡像到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
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
CentOS8上用Docker部署開源項(xiàng)目Tcloud的教程
這篇文章主要介紹了CentOS8上用Docker部署開源項(xiàng)目Tcloud,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01使用Vscode結(jié)合docker進(jìn)行開發(fā)的詳細(xì)過程
這篇文章主要介紹了如何使用Vscode結(jié)合docker進(jìn)行開發(fā),在本文中,我將提供一個在 Node 環(huán)境中運(yùn)行的 JavaScript 應(yīng)用程序示例。閱讀在容器內(nèi)開發(fā)以獲取所有技術(shù)堆棧的詳細(xì)文檔,需要的朋友可以參考下2021-07-07