# DOCKER # Docker介紹影片 https://www.youtube.com/watch?v=37b3cWIIxUg&list=PLmOn9nNkQxJFX0YVLDw5EMUL-4cVzXL33&index=1 # Docker下載 https://docs.docker.com/engine/install/centos/ # Docker 鏡像安裝步驟: ## 1.搜索鏡像 ## 2.拉取鏡像 ## 3.查看鏡像 ## 4.啟動鏡像 ## 5.停止容器 ## 6.移除容器 # Docker概念 ## Docker hub上存放image,當image pull到本機並啟動時,會生成container.........            # Docker命令 ## 一.幫助命令: ### 1.查看版本:docker version ### 2.查看所有資訊:docker info ### 3.查看說明書:docker --help ## 二.鏡像命令: ### 1.列出本地主機上的鏡像:docker images #### a.列出本地所有的鏡像(包含中間映像層): -a #### b.只顯示鏡像ID: -q #### c.顯示鏡像的摘要資訊: --digests #### d.顯示完整的鏡像資訊: --no-trunc ### 2.在docker hub上找鏡像檔案:docker search 某個鏡像名字 #### docker search [option] 鏡像名字 #### option: #### a.顯示完整的鏡像描述: --no-trunc #### b.只列出automated build類型的鏡像: --automated ### 3.下載鏡像:docker pull 某個鏡像名字 #### docker pull 某個鏡像名字[:版本(省略為最新版)] ### 4.刪除鏡像:docker rmi 某個鏡像名字{版本(省略為最新版)} #### a.刪除單個: docker rmi -f 鏡像ID #### b.刪除多個: docker rmi -f 鏡像ID1 鏡像ID2 ..... #### c.刪除全部: docker rmi -f $(docker images -qa或-x) ## 三.容器命令:   ### 1.新建並啟動容器(run鏡像時就會創建新的容器):docker run [OPTIONS] <font color=#FF3333>IMAGE</font>[COMMAND][ARG...] #### option說明: #### 1.為容器指定一個名字:--name="容器新名字" #### 2.後台運行容器,並返回容器ID,也即啟動守護式容器:-d #### 3.以交互(互動)(前台)模式運行容器,通常與-t同時使用:-i #### 4.為容器重新分配一個偽輸入終端,通常與-i同時使用:-t #### 5.隨機端口映射:-P  #### 6.指定端口映射,有以下四種格式:-p #### ip:hostPort:containerPort #### ip::containerPort #### hostPort:containerPort #### containerPort #### 備註:docker run -it 容器名或容器ID 為啟動交互式容器 ### 2.列出當前所有正在運行的容器:docker ps [OPTIONS] #### option說明: #### 1.列出當前所有正在運行的容器+歷史上運行過的:-a #### 2.顯示最近創建的容器:-l #### 3.顯示最近n個創建的容器:-n #### 4.只顯示容器編號:-q #### 5.不截斷輸出(完整輸出):--no-trunc ### 3.退出容器: #### 1.容器停止退出:exit #### 2.容器不停止退出:ctrl+P+Q ### 4.啟動容器:docker start 容器ID或容器名 ### 5.重啟容器:docker restart 容器ID或容器名 ### 6.停止容器:docker stop 容器ID或容器名 ### 7.強制停止容器:docker kill 容器ID或容器名 ### 8.刪除已停止的容器:docker rm 容器ID ### 9.一次性刪除多個容器: #### 1.docker rm -f $(docker ps -a -q) #### 2.docker ps -a -q | xargs docker rm ### 10.<font color=#FF3333>啟動守護式容器(後台):</font>docker run -d 容器名 ### 11.<font color=#FF3333>查看容器日誌:</font>docker logs -f -t --tail 容器ID #### 1.加入時間戳:-t #### 2.隨時間印出最新的日誌:-f #### 3.顯示最後多少條:--tail ### 12.<font color=#FF3333>查看容器內運行的進程:</font>docker top 容器ID ### 13.<font color=#FF3333>查看容器內部細節:</font>docker inspect 容器ID ### 14.<font color=#FF3333>進入正在運行的容器並以命令進行交互:</font> ### (1)docker exec -it 容器ID bashShell  ### (2)重新進入docker attach 容器ID ### 差別: #### attach是直接進入容器啟動命令的終端,不會啟動新的進程 #### exec是在容器中打開新的終端,並且可以啟動新的進程 ### 15.<font color=#FF3333>從容器內複製文件到主機上:</font>docker cp 容器ID:文件在容器內路徑 主機目的地路徑 ## 四.Docker鏡像commit操作補充:  ### 1.docker commit提交容器副本使之成為一個新的鏡像 ### 2.docker commit -m="提交的描述訊息" -a="作者" 容器ID 要創建的目標鏡像名:[標籤名(版本)]  ## 五.Docker容器數據卷:  ### 1.用途:(1)容器的持久化(2)容器間繼承與共享數據  ### 2.容器內添加: #### (1)直接命令添加: #### a.命令:docker run -it -v /宿主機絕對路徑目錄:/容器內目錄 鏡像名 #### b.查看數據卷是否掛載成功 #### c.容器和宿主機之間數據共享 #### d.容器停止退出後,主機修改後數據是否同步 #### e.命令(帶權限)(容器內之連結文件只可讀不可寫):docker run -it -v /宿主機絕對路徑目錄:/容器內目錄<font color=#FF3333>:ro</font> 鏡像名 #### (2)DockerFile添加: #### a.根目錄下新建mydocker文件夾並進入 #### b.可以在DockerFile中使用VOLUME指令來給鏡像添加一個或多個數據卷   就是  #### c.File構建 #### d.build後生成鏡像(記得在最後面加空格和.)  圖中獲得一個新鏡像zzyy/centos #### e.run容器  ### 3.數據卷容器:   #### 容器間傳遞共享:--volumes-from     # DockerFile ## 一.介紹:   centos的DockerFile例子  小註釋: docker run -it centos 等同執行 CMD ["/bin/bash"] docker run -it centos /bin/bash 等同執行 CMD ["/bin/bash"] CMD ["/bin/bash"]     ## 二.保留字指令: ### 1.FROM:基礎鏡像,當前新鏡像是基於哪個鏡像的 ### 2.MAINTAINER:鏡像維護者的姓名和email地址 ### 3.RUN:容器構建時需要運行的命令 ### 4.EXPOSE:當前容器對外暴露出的端口 ### 5.WORKDIR:指定在創建容器後,終端默認登入的進來工作目錄,一個落腳點(若沒寫默認為根目錄) ### 6.ENV:用來在構建鏡像過程中設置環境變量  ### 7.ADD:將宿主機目錄下的文件複製進鏡像且ADD命令會自動處理URL和解壓tar壓縮包 ### 8.COPY:類似ADD,複製文件和目錄到鏡像中。將從構建上下文目錄中<源路徑>的文件/目錄複製到新的一層的鏡像內的<目標路徑>位置(但不像ADD會自動處理URL和解壓tar壓縮包) #### (1)COPY src destination #### (2)COPY ["src","destination"] ### 9.VOLUME:容器數據卷,用於數據保存和持久化工作 ### 10.CMD:指定一個容器啟動時要運行的命令(Dockerfile中可以有多個CMD指令,但只有最後一個生效,CMD會被docker run之後的參數替換)  ### 11.ENTRYPOINT:指定一個容器啟動時要運行的命令(ENTRYPOINT的目的和CMD一樣,都是在指定容器啟動程序及參數)(ENTRYPOINT不會像CMD被覆蓋,而是加在後面) ### 12.ONBUILD:當構建一個被繼承的Dockerfile時運行命令,父鏡像在被子繼承後父鏡像的onbuild被觸發   ### 總結:  ## 三.例子: ### * Base鏡像(scratch):Docker Hub中99%的鏡像都是通過在base鏡像中安裝和配置需要的軟件構建出來的  ### 1.自定義鏡像mycentos:      ### 2.CMD和ENTRYPOINT的比較: #### CMD:   #### ENTRYPOINT:     curl解釋:  ### 3.自定義鏡像Tomcat9:   Tomcat9的DockerFile:          ### 總結: 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up