溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Docker中怎么樣制作鏡像

發(fā)布時(shí)間:2021-11-18 10:39:49 來源:億速云 閱讀:130 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Docker中怎么樣制作鏡像,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

    前言

    以制作CentOS鏡像為例,講述對(duì)鏡像自定義,打包以及推送的遠(yuǎn)程倉(cāng)庫(kù)的過程,步驟都比較簡(jiǎn)單可以快速上手。

    創(chuàng)建步驟

    創(chuàng)建CentOS基礎(chǔ)鏡像

    創(chuàng)建構(gòu)建目錄和Dockerfile,在Dockerfile中編輯鏡像相關(guān)設(shè)置。

    echo "在當(dāng)前用戶目錄下創(chuàng)建創(chuàng)建目錄docker/build/centos_7.8.2003" > /dev/null
    mkdir -p ~/docker/build/centos_7.8.2003
    
    echo "創(chuàng)建Dockerfile到~/docker/build/centos_7.8.2003目錄下" > /dev/null
    cat > ~/docker/build/centos_7.8.2003/Dockerfile << EOF 
    # 指定基礎(chǔ)鏡像
    FROM centos:7.8.2003
    
    # 設(shè)置環(huán)境變量
    ENV LANG=zh_CN.UTF-8 \\
        LANGUAGE=zh_CN:zh \\
        LC_ALL=zh_CN.UTF-8
    
    # 只在構(gòu)建鏡像的時(shí)候執(zhí)行這些shell指令
    RUN yum update -y && \\
        yum reinstall -y glibc-common && \\
        yum install -y telnet net-tools && \\
        yum clean all && \\
        rm -rf /tmp/* rm -rf /var/cache/yum/* && \\
        localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 && \\
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    EOF

    參考菜鳥教程 - docker build構(gòu)建鏡像,格式為docker build -t <鏡像名>:<鏡像版本號(hào)> <Dockerfile所在目錄>,不寫鏡像版本號(hào)默認(rèn)latest。

    # 解析~/docker/build/centos_7.8.2003/Dockerfile構(gòu)建名為base-centos的鏡像
    docker build -t base-centos ~/docker/build/centos_7.8.2003

    構(gòu)建完成后可以在本地鏡像列表中看到,使用的基礎(chǔ)鏡像和構(gòu)建生成的新鏡像。

    docker images

    Docker中怎么樣制作鏡像

    創(chuàng)建容器并自定義

    使用使用新鏡像創(chuàng)建并進(jìn)入容器,這個(gè)容器就是一個(gè)虛擬CentOS系統(tǒng)。

    echo "用base-centos鏡像創(chuàng)建容器,并命名為base-centos" > /dev/null
    docker run \
    --name base-centos \
    --privileged=true \
    -dit \
    base-centos \
    /usr/sbin/init
    
    echo "進(jìn)入centos容器" > /dev/null
    docker exec -it base-centos /bin/bash

    對(duì)容器中虛擬系統(tǒng)自定義,比如安裝常用的工具。其實(shí)這些也是可以寫在Dockerfile中的,定義在RUN指令后。

    echo "vim:編輯文件" > /dev/null
    yum install -y vim
    
    echo "lsof:方便查看端口信息" > /dev/null
    yum install -y lsof
    
    echo "wget:文件下載" > /dev/null
    yum install -y wget
    
    echo "tree:查看目錄結(jié)構(gòu)" > /dev/null
    yum install -y tree
    
    echo "安裝python" > /dev/null
    yum install -y python-devel
    
    echo "C的編譯環(huán)境" > /dev/null
    yum install -y gcc gcc-c++
    yum install -y zlib
    yum install -y zlib-devel
    yum install -y tcl  build-essential tk gettext

    以自定義容器創(chuàng)建新鏡像

    命令格式為docker commit <容器名稱或者ID> <生成的鏡像名>:<鏡鏡像版本號(hào)>,不寫鏡像版本號(hào)默認(rèn)latest。創(chuàng)建時(shí)這個(gè)容器也可以是停止?fàn)顟B(tài)。

    docker commit base-centos centos:7.8.2003_v1

    到此鏡像就創(chuàng)建完成了,在鏡像列表可以看到新鏡像。

    Docker中怎么樣制作鏡像

    保存、加載鏡像tar包

    將鏡像保存為tar包,格式為docker save -o <文件名> <鏡像名>:<鏡像標(biāo)簽>,參考菜鳥教程 - docker save。

    docker save -o ~/docker/build/centos_7.8.2003/centos_7.8.2003.tar centos:7.8.2003_v1

    Docker中怎么樣制作鏡像

    加載tar包生成鏡像。

    docker load --input ~/docker/build/centos_7.8.2003/centos_7.8.2003.tar

    Docker中怎么樣制作鏡像

    已存在重復(fù)鏡像執(zhí)行加載命令無(wú)效。

    Docker中怎么樣制作鏡像

    將鏡像推送到遠(yuǎn)程倉(cāng)庫(kù)

    docker登陸遠(yuǎn)程倉(cāng)庫(kù)。格式為docker login --username=<用戶名> <倉(cāng)庫(kù)地址>或者docker login -u <用戶名> -p <密碼> <倉(cāng)庫(kù)地址>。

    Docker中怎么樣制作鏡像

    docker tag <鏡像ID> <遠(yuǎn)程鏡像倉(cāng)庫(kù)地址>:<鏡像版本號(hào)>標(biāo)記后。

    echo "標(biāo)記鏡像地址和版本號(hào)" > /dev/null
    docker tag 66b1bc81e1f2 registry.cn-shanghai.aliyuncs.com/exposure/centos:7.8.2003_v1

    Docker中怎么樣制作鏡像

    docker push <遠(yuǎn)程鏡像倉(cāng)庫(kù)地址>:<鏡像版本號(hào)>推送到遠(yuǎn)程倉(cāng)庫(kù)。

    echo "推送到遠(yuǎn)程倉(cāng)庫(kù)" > /dev/null
    docker push registry.cn-shanghai.aliyuncs.com/exposure/centos:7.8.2003_v1

    以上是“Docker中怎么樣制作鏡像”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI