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以下:java

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
相關文章
相關標籤/搜索