1. 程式人生 > >自已建立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

重啟網路介面:
[
[email protected]
~]#ifdown enps03 [[email protected] ~]#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/ )
[
[email protected]
~]# 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 [[email protected] yum.repos.d]# yum install docker-io 啟動 Docker [
[email protected]
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 生成指令碼
[[email protected] yum.repos.d]# cd /root
[[email protected] ~]# mkdir scripts
[[email protected] ~]# cd scripts/
[[email protected] scripts]# vim createimage.sh
然後把 https://github.com/docker/docker/blob/master/contrib/mkimage-yum.sh 檔案中內容貼上進去

[[email protected] scripts]# chmod +x createimage.sh

建立image
[[email protected] scripts]# ./createimage.sh centos7base

建立成功後檢視,並把當前執行的容器刪除掉
[[email protected] tmp]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos7base         7.1.1503            112ee00c2cbc        8 minutes ago       227.7 MB

[[email protected] 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

[[email protected] tmp]# docker rm 752b9d49a079
752b9d49a079

[[email protected] tmp]# docker ps -all
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

匯出image
[[email protected] tmp]# cd /tmp/
[[email protected] tmp]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos7base         7.1.1503            112ee00c2cbc        14 minutes ago      227.7 MB

[[email protected] tmp]# docker save 112ee00c2cbc > /tmp/centos7base.tar

[[email protected] tmp]# ls
centos7base.tar  ks-script-L8TDO5  yum.log
[[email protected] 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/images
hr:~ hr$ cd docker/images/
hr:images hr$ scp [email protected]:/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的就是剛剛匯入的,把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


執行容器:
hr:images hr$ docker run -i -t 112ee00c2cbc /bin/bash
[[email protected] /]# hostname
e948acae7b42

[[email protected] /]# 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

相關推薦

自已建立Docker Base Image

一. 環境 宿主機作業系統: OS X ,需要安裝VirtualBox ; 容器環境:centos7 二. 用VirtualBox 安裝系統,這裡以centos 7為例(CentOS-7-x86_64-Minimal-1503-01.iso) 建立虛

『中級篇』手動建立一個base Image(14)

執行 安裝 build imageview orien ogr 微信 微信公眾號 gcc 這篇文章主要介紹了Docker Base Image創建具體實現的相關資料,這裏提供了詳細的具體步驟,需要的朋友可以參考下github:https://github.com/limin

解決Jenkins建立Docker Image後無法推送到私有Registry的問題

最近剛開始使用Docker,把常用的命令摸了一遍後,就想把映象的build過程放到Jenkins上。具體過程就不說了,十分簡單,只需要幾條命令就可以了。 可以在向私有registry推送時卻報出了異常: docker push registry.mydo

docker系列之三 :建立自己的image並上傳到docker hub

執行docker run docker/whalesay 會提示沒有映象,然後自動下載映象 建立一個cokerfile mkdir mydockerbuild cd mydockerbuild vi Dockerfile 在docker file 下

基於已有的image建立docker images

首先我們得知道怎麼下載映象: docker search 映象名稱                                         //電腦聯網情況下在docker HUB裡面查詢映象 docker pull 倉庫伺服器/倉庫/映象

docker實戰docker+python3.5+flask+gunicorn+gevent+nginx base image:centos

docker部署flask應用程式    簡單的在本地測試使用docker,為了方便記憶特此記錄,本文構建的映象沒有通過dockerfile來獲取映象,本文的操作都是使用sudo進行操作,普通使用者在centos系統好像不起作用,具體原因未查明。測試環境:         作

Docker Centos7 下建立 Docker 橋接網絡

bin pipe route pack config pre err 為什麽 4.3 為什麽要讓docker橋接物理網絡? docker默認提供了一個隔離的內網環境,啟動時會建立一個docker0的虛擬網卡,每個容器都是連接到docker0網卡上的。而docker0的ip段

Centos 7: 改變dockerimage存放目錄

mil clean tom back options socket add fin lib steps:1. mkdir /data/docker 創建新的存放目錄2. systemctl stop docker 關閉docker進程3. vi /usr/lib/sys

建立docker靜態化IP

配置橋接網路   橋接本地物理網路的目的,是為了區域網內使用者方便訪問 docker 例項中服務,不需要各種埠對映即可訪問服務。 但是這樣做,又違背了 docker 容器的安全隔離的原則,工作中辯證的選擇。 建立橋接裝置: 安裝包: [[email protected] ~]# rpm -i

使用Dockerfile建立Docker映象

原文地址:https://renguangli.com/articles/docker-dockerfile 以下是Dockerfile常用指令的簡單介紹。 Dockerfile常用指令 FROM FROM指定基礎映象,若映象不存在Docker會從docke

Win32從資源中載入PNG圖片,然後建立GDI+的Image物件

void LoadPNGFromStaticRes(HMODULE hModule, UINT nResId, Image** ppImg) { HRSRC hRes = FindResource(hModule, MAKEINTRESOURCE(nResId), TEXT("PNG"))

建立docker mysql映象

docker pull centos:6.8     (冒號後面是版本號,不寫的話預設是latest,也可以自己選擇版本號) 建立容器 docker run -tid --name mysql -p 3306:3306 centos:6.8 /bin/bash

建立docker greenplum 容器以及greenplum 監控(GPCC)

下載基礎映象centos docker pull centos:6.8 建立容器 docker run -tid --name gp -p 5432:5432 -p 28080:28080 -v I:\gp\gp:/gp centos:6.8 /bin/bash (gp

docker 提示image operating system "linux" cannot be used on this platform

在命令列中輸入docker run -p 8050:8050 scrapinghub/splash: Unable to find image 'scrapinghub/splash:latest' locally latest: Pulling from

Synology 群暉建立docker連線到物理路由器

使用Docker Swarm,橋接網路可以在物理機器上傳播,以構建邏輯覆蓋網路。無論Container啟動哪個節點,它仍然能夠訪問同一覆蓋網路中的其他容器。但是,Swarm的功能沒有UI支援。   docker network create -d macvlan --subnet=192.

阿里雲,遠端建立 Docker & Docker

新增 yum yum install epel-release –y yum clean all yum list 安裝 Docker yum install d

docker——映象(image)

  映象相關命令一覽表: docker images docker tag docker inspect docker history docker search docker pull/push docker rmi docker save/load &

bluemix建立docker容器

  簡介: bluemix是基於kubernetes來服務的免費雲空間。繫結信用卡後可以建立一個月的叢集,一個月後會被刪除。 下面示例介紹如何使用kubernetes dashboard來建立一個容器,並提供給公網服務。 示例教程為部署一個apache官方映象,並對映80埠給公網服務。 一

如何從dockerimage映象到私有的registry

        docker越來越炙手可熱,如果你的團隊已經準備開始使用docker,那麼私有倉庫是必不可少的東西,首先是可以幫助你加快從伺服器pull映象的速度,其次也可以幫助你存放私有的映象,本文主要為大家介紹如何從公用伺服器上講開放的images備份到本地私有伺服器

建立docker映象的兩種方式

1. docker commit方式 檢查一下已有映象和容器 docker images docker container ls 這裡我們選擇對centos進行自定義映象 互動式執行centos容器 docker run -i