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
