# docker簡介 ###### tags: `RD5` 簡介:軟體容器平台 可快速建立 測試 部署應用程式 概念:把做好的應用程式 環境等封裝到容器裡 再將容器變成image 要去運行就透過docker運行這個image 不需要考慮環境問題 ## 基本概念 * 映像檔(Image) * 容器(Container) * 倉庫(Repository) ### 映像檔 輕量的、可執行的獨立軟體包 ,包含軟體運行所需的所有內容:代碼、運行時環境、系統工具、系統庫和設置。 ### 容器 將軟體打包成標準化單元,以用於開發、交付和部署。 ### 倉庫(Repository) 集中存放映像檔檔案的場所。 映像檔和容器就像類和實例 Docker是不攜帶作業系統的,所以Docker的應用就非常的輕巧。 Docker 容器通過 Docker 鏡像來創建,容器與鏡像的關係類似於面向對象編程中的對象與類。 ## VM vs Container | VM | Container| | -------- | -------- | |需要作業系統|無作業系統| |啟動慢|啟動快| ## 操作流程 ![](https://i.imgur.com/4bbsbAS.png) ## dockerfile * 用途 用來定義容器內發生的事情,並具體說明要“複製”的文件,這樣做之後,就可以確保在Dockerfile中定義的應用程序構建成功,無論在任何地方都能以相同方式運行。 * 建立方式 在目標資料夾建立Dockerfile,並輸入需要的指令 ### 基本語法 * 使用#來註釋 * FROM 指令告訴 Docker 使用哪個映像檔作為基底 * 接著是維護者的信息 * RUN開頭的指令會在建立中執行,比如安裝一個套件,在這裏使用 apt-get 來安裝了一些套件 ## 指令 #### 檢查版本 ```shell $ docker --version $ docker info ``` #### 拉取映像檔 ```shell $ docker pull 映像檔名稱 ``` #### 搜尋映像檔 ```shell= $ docker search 映像檔名稱 ``` #### 查看目前映像檔 ```shell 1. $ docker image ls 2. $ docker images ``` #### 建立映像檔 ```shell $ docker build -t/--tag="映像檔名" 路徑 ex:$ docker build -t=hello . 映像檔名:hello 路徑:.(當前路徑) -t:指定新的映像檔的使用者信息 ``` #### 查看目前系統中容器 ```shell 1. $ docker container ls -a -a為顯示全部 2. $ docker ps ``` #### 執行應用程式 ```shell $ docker run [選項] 程式名 ``` [選項大全](https://jiajially.gitbooks.io/dockerguide/content/chapter_fastlearn/docker_run/index.html) ### 以Docker ID 登入 ```shell $ docker login ``` ### 管理類指令 ```shell $ docker config $ docker image $ docker container $ docker network $ docker node $ docker plugin $ docker secret $ docker service $ docker stack $ docker swarm $ docker system $ docker trust $ docker volume ``` ### 好用工具 kitematic圖形化介面 ## 參考資料 [docker入門](https://philipzheng.gitbook.io/docker_practice/) [docker-tutorial](https://github.com/twtrubiks/docker-tutorial) [dockerfile 學習筆記](https://hackmd.io/PnuGE_LtQhSArxhx8Ga3FA?view) [docker影片](https://www.youtube.com/watch?v=fqiJUltl2I0) [docker面試題](https://www.netadmin.com.tw/netadmin/zh-tw/technology/4F5E8F787FCE491D9F02B1B0A41C341A?page=1)