> For the complete documentation index, see [llms.txt](https://larvata.gitbook.io/tutorial/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://larvata.gitbook.io/tutorial/bi-bei-ji-neng/docker.md).

# Docker

h1. Docker Doc

## <http://campus.codeschool.com/courses/try-docker>

## <https://scotch.io/tutorials/getting-started-with-docker>

## <https://prakhar.me/docker-curriculum/>

## <https://yq.aliyun.com/articles/65145>

* Docker for PHP <http://open.daocloud.io/tag/php-kai-fa-zhe-de-docker-zhi-lv/>
* Docker for Python <http://open.daocloud.io/tag/python-kai-fa-zhe-de-docker-zhi-lv/>
* Larvata 教學文件 <https://drive.google.com/drive/folders/0B-Xz59zuRovPM2pVa2IxZUN3dEU>
* Docker 運維經驗 <https://thehftguy.com/2016/11/01/docker-in-production-an-history-of-failure/>
* Docker 網路架構 <http://blog.daocloud.io/docker-bridge/>
* Docker 進階應用 <http://open.daocloud.io/tag/allen-tan-docker/>
* Docker 源碼分析 <http://open.daocloud.io/tag/yuan-ma-fen-xi/>
* K8S 介紹 <http://www.bilibili.com/video/av10087636/>

h2. Dockerfile

<https://docs.docker.com/engine/reference/builder/>

h2. docker-compose.yml

h1. docker 常用情境

* 情境：列出主機上的 Docker Images。

  ```
  docker images
  ```
* 情境：取得 Ubuntu 的 Docker Image。

  ```
  docker pull ubuntu
  ```
* 情境：啟動一個 Ubuntu Image 的 Container 並進入它的 bash 環境。

  ```
  docker run -it ubuntu bash
  ```
* 情境：離開上一步驟進入的 Container 但是不讓它 (docker process) 結束。

  ```
  先按 Ctrl + p，再按 Ctrl + q
  ```
* 情境：查詢目前 Docker Server 中運行的「所有」Container 以及它們的 Name。

  ```
  docker ps -a
  ```
* 情境：進入一個正在「運行中」的 Container 的 bash 環境。

  ```
  docker exec -it your_running_container_name bash
  ```
* 情境：離開 Container 的 bash 環境。

  ```
  exit
  ```
* 情境：停止「運行中」的 Container。

  ```
  docker stop your_running_container_name
  ```
* 情境：重啟「停止中」的 Container。

  ```
  docker restart your_stopped_container_name
  ```
* 情境：移除「停止中」的 Container。

  ```
  docker rm your_stopped_container_name
  ```
* 情境：啟動一個 Nginx Image 的 Container，並讓它在背景執行。

  ```
  docker run -d nginx
  ```
* 情境：啟動一個 Nginx Image 的 Container，並將主機的 8080 port 對應到 Container 的 80 port。

  ```
  docker run -p 8080:80 nginx
  ```
* 情境：啟動一個 Nginx Image 的 Container，並將主機的 /tmp 目錄掛載到 Container 的 /usr/share/nginx/html 目錄。

  ```
  docker run -v /tmp:/usr/share/nginx/html nginx
  ```

h1. docker-compose 常用指令

*docker-compose 預設會讀取當前目錄下的 docker-compose.yml 作為設定檔。*

* 情境：啟動所有的 Containers

  ```
  docker-compose up
  ```
* 情境：啟動所有的 Containers 在背景執行

  ```
  docker-compose up -d
  ```
* 情境：顯示當前的運作情況

  ```
  docker-compose ps
  ```
* 情境：查看所有 Containers 的 logs

  ```
  docker-compose logs
  ```
* 情境：停止所有的 Containers

  ```
  docker-compose stop
  ```
* 情境：移除所有停止中的 Containers

  ```
  docker-compose rm
  ```
