2017年3月26日 星期日

來試試Docker for Mac

  在Mac及Windows下並無法直接使用Docker,必須透過Linux的VM才行,所以在Mac下通常得先安裝VM才能使用Docker,而Docker For Mac的出現,讓在Mac上使用Docker變得簡單,它內建xhyve VM,不再需要安裝額外的VM就能使用囉

  Docker For Mac的安裝檔與教學可參考Install and Run Docker for Mac,安裝很簡單就不多做說明

      安裝成功後,可以執行docker相關命令試試
  docker version

  docker --version
  docker-compose --version
  docker-machine --version

  查查docker相關執行檔在哪,可以看到幾個symbolic link都指向剛裝好的docker
  ll /usr/local/bin/do*
  ll ~/Library/Group\ Containers/group.com.docker/bin

  查看哪些process與docker有關
  ps -ef | grep -i com.docker

  docker內部各元件是透過socket溝通的,我們可以查查開了哪些socket
  netstat -an | grep com.docker

  在/va/run下面也可以看到docker.sock檔
  ll /var/run/docker.sock

剛提到實際上它還是需要VM的,只是這個VM很輕量,那這個VM的image存在哪裡呢?可以利用下列命令查詢,那個qcow2格式的就是了
  ll ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/

  如要顯示系統的相關資訊,比如說有幾個containers是啟動還是停止狀態,或是使用多少memory跟cpu的資訊之類的等等的 
  docker info


  查看docker的log
  syslog -k Sender Docker

  我們稍微瞭解一下了docker run命令結構,下面是常用的選項

  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
--detach, -d false Run container in background and print container ID

--env, -e Set environment variables

--interactive, -i false Keep STDIN open even if not attached

--link Add link to another container

--memory, -m Memory limit

--name Assign a name to the container

--rm false Automatically remove the container when it exits

--tty, -t false Allocate a pseudo-TTY


接著來執行一下最簡單的docker container吧
  docker run hello-world

  從上圖內容可以看出它首先會檢查本地是否有同名的image,如果沒有,預設它會從Docker Hub去拉取該image後再執行該image

  之後的訊息也告訴我們,我們已經成功讓docker daemon從docker hub上拉取了一個hello-world的image,並且從這個image建立了一個新的container,並且通過了daemon將輸出傳回docker client,也就是我們現在正在讀取的這段話

  查看有哪些images
  docker images

  查看正在運行的container,因為沒有正在運行中的,所以是空的
  docker ps

  查看所有container,包含運行中與已停止的,因為剛剛運行過那個hello-world的image,所以有列出來,各位可以注意一下NAMES這欄,每一個container都會有Name,可以自己指定,若沒有指定,系統也會自己自動命名喔
  docker ps -a

  接著我們來建一個nginx的web server來測試一下,以背景模式的方式,將本機的8080 port綁定到container的80上,並命名為webserver
  docker run -d -p 8080:80 --name webserver nginx
上圖docker ps可以看到本機的8080與80綁定,container的名稱webserver

  接著我們就可以打開瀏覽器訪問囉
  http://localhost:8080/

  下面是一些啟動停止刪除container的相關命令

  # 正常停止容器,比kill安全一些
  docker stop webserver

  # 啟動一個已經創建的容器
  docker start webserver

  # 重啟一個容器
  docker restart webserver

  # 強制停止一個容器
  docker kill webserver

  # 刪除一個容器 # 必須先停止才能刪
  docker stop webserver 
  docker rm webserver

  # 刪除一個容器,搭配-f就可以直接刪了,實際上是先幫你停止再刪啦
  docker rm -f webserver

  那要怎樣尋找有哪些images可用呢?比如說要找mysql,可以用
  docker search mysql

  我們就可以用docker pull來下載image
  docker pull mysql

  其實像下載啟用停止容器相關的命令,是可以使用Kitematic去管理container,有GUI介面,就變得很簡單,我這裡就不再介紹囉


0 意見:

張貼留言