docker入門教程

weixin_34279579發表於2017-08-18

DOCKER入門

一、 簡介

引入Docker是為了解決什麼問題?
現在我們使用的微服務,確實有很多的優點,但是也暴露出一個很大的問題,一個就是開發人員必須瞭解整體服務的依賴關係,才能有效的開發,也就是說必須對整個架構很熟悉,其次就是運維,服務太多,太散,部署會是一件頭疼的事,運維的工作量會會無形中增加了很多。Docker的出現解決了這些問題,可以通過compose來配置,開發人員一眼就能看出服務之間相互的依賴關係,運維也能利用docker更好的實現自動化(官方的說法是可以實現統一的方式來下載、啟動、擴充套件、刪除和遷移,這樣方便了應用程式的部署和運維)。

虛擬機器和容器的區別?
各容器系統共享主機系統的核心,而不像虛擬機器那樣同樣對核心或者虛擬硬體進行打包。(易用性—一次構建隨處執行、輕量化所以高速—秒級VS分鐘級、模組化—可以將一個應用拆分到多個容器中)

二、安裝步驟(windows版)

注:Linux、mac以及不支援hyper-v的安裝請參照官網https://docs.docker.com
win10 Build 10586版本之後因為支援虛擬化,所以可以直接整合docker。否則需要通過docker toolbox來安裝(toolbox中整合了virtual box)。

  1. 開啟“啟動和關閉windows功能”,勾上“Hyper-V”,然後重啟


    2140381-46179c1cf6129edf.png
    image.png
  2. 確認BIOS中的支援虛擬化是否已經開啟,每臺機器不同,可自行“百度”
  3. 安裝InstallDocker.msi, 下載地址:https://download.docker.com/win/stable/InstallDocker.msi
  4. 確認是否安裝成功
    使用管理員賬戶開啟cmd,輸入命令:
docker --version
docker-compose --version
docker-machine --version

三、配置

1、registry配置
因為Dockerhub在國外,就算翻牆也很慢,所以使用國內的registry,我使用的是阿里雲的,也可以使用daocloud(註冊一下就可以了),

2140381-e32a5daadf867eaa.png
image.png

2、磁碟共享
右擊”setting”來配置

2140381-6e59e7754fbcca5a.png
image.png

四、映象

幾個主要操作:
以ubuntu映象為例(下同)

  • 獲取:docker pull ubuntu:version
  • 檢視:docker images
  • 刪除:docker rmi Ubuntu
  • 上傳:docker push [user]/ubuntu:[version]
  • 匯入匯出:docker load和docker save

五、容器

  • 建立(或啟動)
    可以直接docker create -it ubuntu(-i 保持輸入流開著,-t使用docker自帶的偽終端進入)然後通過
    docker start來啟動(可以通過docker ps –a 檢視所有的容器)
    建立並啟動 docker run -it ubuntu /bin/bash (/bin/bash在連線後立即執行)
    後臺啟動 docker run -d ubuntu /bin/bash

  • 進入
    docker exec –it [container] /bin/bash

  • 停止
    docker stop [container]

  • 刪除
    docker rm [container id]

  • 儲存
    docker commit [container id] [image:version]

  • 掛載、埠對映
    docker run -d -p 8080:80 --name=nginx1 -v e:/docker/data/log:/var/log/nginx nginx

  • 匯入匯出(not important)
    docker export [container id] > [name].tar cat [name].tar | docker import – [container]

六、倉庫

搭建一個私有倉庫

  1. 下載並執行一個倉庫容器
    docker run -d -p 5000:5000 -v e:/docker/registry:/tmp/registry registry

  2. 給需要放到私倉的映象打上標籤
    docker tag mysql:5.6.36_mm 127.0.0.1:5000/mysql
    (Tag名稱須按照[server:port]/xx這種格式命名)

  3. 推送該映象到私倉
    docker push 127.0.0.1:5000/mysql
    此時可能會報錯,因為使用了不安全的倉庫,需要在daemo-an設定,配置insecure-registries

    2140381-296b1968e523c67a.png
    image.png

4、驗證是否可用
docker pull 127.0.0.1:5000/mysql
(注意要關閉防火牆,不然訪問不到這個埠)

七、進階

如何生成映象呢?dockerfile

Dockerfile主要分為四個部分:基礎映象、維護者、操作命令、容器啟動執行命令

幾個指令
  • Form 基於映象資訊
  • MAINTAINER 維護者資訊
  • RUN [executable,param1,param2]
  • CMD 容器啟動時執行的命令
其他
  • EXPOST 埠暴露
  • WORKDIR 工作目錄(所有操作命令都會在這個地址下進行)
  • ADD 新增本地檔案
    *ENV配置環境變數
    建立
    docker build -t ubuntu:base .
docker-compose

  windows版自帶了Compose,不需要再安裝。(linux需要)Compose是用於定義和執行復雜Docker應用的工具。你可以在一個檔案中定義一個多容器的應用,然後使用一條命令來啟動你的應用,然後所有相關的操作都會被自動完成。
  使用Compose只需要簡單的三個步驟:
  首先,使用Dockerfile來定義你的應用環境
  第二步,用一個compose.yml來定義你的應用,他們可以在下個互隔離的容器中組成你的應用。
  第三步,執行docker-compose up來啟動你的應用,它會根據compose.yaml的設定來pull/run這倆個容器。

YAML檔案主要配置項
image : 使用的映象,services:所有的服務
build : 通過dockerfilel來build, ,而非通過image選項來pull
ports :暴露的埠, environment:當前服務引數配置
depends_on:依賴的服務,volumes: 掛載的資料卷

相關文章