簡單的docker上手指南

釐清一些概念

什麼是docker

  • container容器技術
  • 可以隨時啟動、隨地部署、隨時被消滅
  • 建立在Application同一層的虛擬化技術
  • 為了保證環境是乾淨環境

幾個需要知道的元件

Docker Repository

  • Docker的倉庫
  • 相當於yum或是apt-get
  • 可以建立私有的Repository
  • Repository儲存的目標是image(相當於VM)
  • 公用hub為docker hub

Docker Image

  • Docker Container啟動的時候的來源
  • 可以是Repository或是由Container包裝

Docker Container

  • Docker底下最小的單位
  • 在Application同一層
  • 啟動的時候必須執行在前景的指令(因為在App同一層)
  • 可以跟HOST OS溝通

如何安裝?

簡單一點

curl https://get.docker.com | bash

或是依照官方教學

網路層概念

docker的世界

分為 直連/區域網路(bridge)

直連(link)

  • 單向連結
  • 必須先存在欲連結的實體container
  • 適用在較簡單的環境下

區域網路(net)

  • 在同一個區網大家可以互相被看見
  • 不需要先產生實體對應container
  • 建構大型網路的時候非常適合

關於變數與環境變數

變數

  • 僅能在docker建立過程中取得
  • 通常在建立image的時候就必須帶入

環境變數

  • 在實體container內的變數
  • 可以隨時被取得

再來一些簡單的cheatsheet

# 將image從remote repo拉到local repo底下
docker pull [image]

# 執行image
docker run --rm [image]

# 列出所有的image
docker images

# 執行image並且在背景執行(pseudo-tty && stdin)
docker run -t -i -d [image]

# 執行container內指令(pseudo-tty && stdin)
docker exec -ti [container] [command]

# 如果要進去container會像是這樣(執行bash)
docker exec -ti [container] bash

# 檢查目前的container
docker ps -a

# 啟動/暫停/重新啟動
docker start [container]
docker stop [container]
docker restart [container]
# 刪除container(force)
docker rm -f [container]

# 刪除image(force)
docker rmi -f [image]

# 刪除所有的container(force)
docker rm -f $(docker ps -aq)

# 刪除所有的image
docker rmi -f $(docker images -aq)

# 進階用法
## 將container1與container2連接
docker run -idt --link [container1] --name [container2] [image]

## 建立虛擬VPC(net)並且將container1加入
docker network create -d bridge net
docker run -idt --name [container1] --net net [image]

## 啟動container1並且掛載/tmp到/tmp(volume)
docker run -idt --name [container1] -v /tmp:/tmp [image]
Made with Slides.com