docker創建image方法以及常用指令介紹


docker -help    # 顯示幫助
docker COMMAND -help    # 幫助信息更詳細
docker start “容器名稱”    # 啟動一個或多個容器
docker stop “容器名稱”    # 停止一個或多個運行的容器
docker images    # 列表docker鏡像列表
docker info    # 顯示系統的dokcer信息
docker ps    # 列表運行的容器
docker version    # 展示docker的版本信息
docker rm “CONTAINER ID”    # 刪除指定的容器
docker rmi “CONTAINER ID”    # 刪除指定的image
docker rmi -f “CONTAINER ID”    # 強制刪除指定的image
docker pull “鏡像名稱”    # 獲取docker鏡像(從docker hub上獲取)
docker push “images name:tag”    # 推送image到docker hub上(登錄后才可以push)
docker diff “CONTAINER ID”    # 檢查容器系統文件的改變
docker build    # 構建image(在提供Dockerfile的前提下)
docker login    # 登錄docker注冊中心(dockerhub)
docker logout    # 登出docker注冊中心
docker export    # 根據容器id,導出指定壓縮文件,(docker export 容器id > test.tar)
docker import    # 導入容器快照
    從本地文件導入:cat test.tar| docker import - test/demo:v0.1
    從遠程文件導入:docker import http://xxx.xxx/domo.tar demo:v0.1
docker exec    # 運行鏡像時執行command指令
    使用方法:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
    domo: docker exec -i -t “CONTAINER ID” /bin/bash
    docker exec的參數:
        --help    # 打印使用方法
        -d(--detach)    # command后台運行
        -e(--env list)    # 設置環境變量
        -i(—interactive)    # 保持打開標准輸出,在沒有附加參數的情況
        -t(—tty)    # 分配一個偽終端(-t通常和-i一起使用) 
docker run “images name:tag”    # 在一個新容器中運行一個command
    使用方法:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
         demo : docker run -it “image name:tag” --name “指定一個名稱” /bin/bash    # 運行image
    docker run 的參數:
        -p    # 將容器的端口映射到本地
        -i(—interactive)    # 保持打開標准輸出,在沒有附加參數的情況
        -t(—tty)    # 分配一個偽tty(-t通常和-i一起使用)
        --name        執行一個名稱 
 
 
制作docker鏡像有兩個方法,一個是使用docker commit;另外一種是使用Dockerfile 
commit制作image的demo:
例如:要在image(docker.xxx.me/xxx/onebox-dev:v0.1)上做一個定制的jenkins image,
1、首先在制作一個docker鏡像時需要獲取一個基礎image
docker pull docker.xxx.me/xxx/onebox-dev:v0.1    # 獲取鏡像

2、啟動images
docker run -it —name -p 8080:8080 jenkins docker.xxx.me/xxx/onebox-dev:v0.1 /bin/bash 

3、在瀏覽器中打開jenkins,訪問地址為:http://127.0.0.1:8080,然后根據自己需求配置jenkins,
4、jenkins配置好后,查看容器的進程,根據容器id檢查容器系統中變更的文件,最后提交文件變更,生成一個新的容器
    docker ps    #查看docker容器進程

    docker diff “CONTAINER ID”    #查看容器系統中變更的文件(A:新增的文件;C:修改的文件;D:刪除的文件)

    docker commit -m “備注” 新容器名稱:tag    #commit時可以使用-m添加備注,要指定生成的容器的名字以及tag
    docker images    #查看image列表,新生成的image會顯示出來    

 

Dockerfile制作image的demo:
首先介紹下Dockerfile的常用指令:
COPY:復制文件指令;
    格式:COPY <源路徑(本地路徑)> <目標路徑(image中路徑)>
    demo:COPY start.sh /root/start.sh
ADD:ADD和COPY的性質和格式是一樣的,ADD新增了一些功能,比如ADD會自動解壓被復制的壓縮文件,ADD的源路徑可以是                   url,ADD會嘗試去下載需要的資源;
    格式:ADD <源路徑(本地路徑)> <目標路徑(image中路徑)>
    demo:ADD start.tar.gz /root/start.sh
CMD:容器啟動指令,用戶可以容器運行時執行CMD命令來代替image中設置的指令;
    shell格式:CMD <shell 命令>
    exec格式:CMD [“可執行文件”,“參數一”,“參數二”。。。]
ENTRYPOINT:ENTRYPOINT和CMD命令一樣,都是指定容器啟動程序及參數,ENTRYPOINT也可以在容器運行時替換image內部的指令,需要—entrypoint來指定替換;當指定了ENTRYPOINT時,CMD將不再是可以指定的命令,只是做ENTRYPOINT的一個參數存在;如:ENTRYPOINT "<CMD>”
    格式:ENTRYPOINT [“可執行文件”,“參數一”,“參數二”...]
ENV:設置環境變量;可以在容器運行和構建過程中使用
    格式:ENV <key> <value>
         ENV <key1>=<value1> <key2>=<value2>...
ARG:構建參數,只能在image過程中使用
    格式:ARG <參數名>[=<默認值>]
EXPOSE:聲明端口
    格式:EXPOSE <端口號1> <端口號2>
USER:指定當前用戶
    格式:USER <用戶名>
RUN:構建時運行指令
    格式:RUN <指令1>&&<指令2>

 例如,現在需要在centos7-java:v1(本地已存在)鏡像的基礎上使用Dockerfile制作一個image,Dockerfile如下:

FROM centos7-java:V1

ENV http_port=10001

# 創建data目錄,賦予全部權限
RUN mkdir -p /data/configserver && chmod -R 777 /data/configserver

# 復制編譯好的包到鏡像中
COPY magina.tar.gz /data/configserver/magina.tar.gz

# 解壓工程文件
RUN cd /data/configserver && tar -zxvf magina.tar.gz

# 刪除工程壓縮包
RUN rm -rf  /data/configserver/magina.tar.gz

# 暴露服務端口號
EXPOSE ${http_port}

ENTRYPOINT ["/data/configserver/start.sh"]
進入到Dockerfile文件的目錄中,執行構建命令:
docker build -t image-name:tag .    # 會在終端中輸出構建步驟
最后使用docker images指令查看是否有新生成的image 
docker build -t image-name:tag .    # 會在終端中輸出構建步驟
最后使用docker images指令查看是否有新生成的image

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM