1. 程式人生 > >Docker極簡教程 【高階】

Docker極簡教程 【高階】

1.Registry介紹

Registry 是映象倉庫,我們可以從映象倉庫中拉取一些映象到本地,也可以提交映象到倉庫。

一些術語:

ENGLISH 中文
host 宿主機
image 映象
container 容器
registry 倉庫
daemon 守護程式
client 客戶端

與registry倉庫的互動:

查詢映象

docker search whalesay

 

拖取映象

docker pull whalesay

 

推送映象

docker push myname/whalesay

國內的docker映象倉庫:

  1. daoclou

  2. 時速雲

  3. aliyun

2.Registry實戰

1.查詢映象

Docker極簡教程 【高階】

 

STARS可以理解為點贊數,預設是按照這個排序的。

2.拉取映象

Docker極簡教程 【高階】

3.檢視映象

Docker極簡教程 【高階】

可以看到,REPOSITORY是映象名,TAG是預設的latest,正常情況是版本號,這兩個比較重要。

CREATED是建立時間,SIZE是佔用空間的大小。

4.執行映象

Docker極簡教程 【高階】

5.標記映象

使用docker tag命令標記本地映象,將其歸入某一倉庫。

docker tag docker/whalesay myhaleasy:tag

 

Docker極簡教程 【高階】

6.上傳映象

可以使用docker push命令上傳本地映象到倉庫,但是需要註冊登入。

Docker極簡教程 【高階】

註冊登入地址:https://hub.docker.com

執行登入命令,輸入使用者名稱與密碼即可。

docker login

 

Docker極簡教程 【高階】

上傳映象前還需要在Docker官網個人中心建立該映象。

3.Compose多容器應用

Compose 是一個使用者定義和執行多個容器的 Docker 應用程式。在 Compose 中你可以使用 YAML 檔案來配置你的應用服務。然後,只需要一個簡單的命令,就可以建立並啟動你配置的所有服務。

docker-compose 安裝

1.Mac/Windows:

安裝docker的時候附帶安裝了。

2.Linux:

curl https://github.com/docker/compose

Linux安裝

執行命令

curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose

該命令會下載檔案到(>)/usr/local/bin/docker-compose,在下載地址中使用$(uname -s)是獲取 unmae -s 命令的輸出加到路徑中。

下載完成後,可以設定該目錄的許可權為777,意為所有人都可以讀寫該目錄,最後使用 docker-compose --version 檢查是否安裝成功。

Docker極簡教程 【高階】

4.Compose搭建部落格網站

接下來我們使用docker-compose搭建一個含nginx+ghost+db的部落格網站。

1.準備

首先建立如下目錄結構:

ghost
  - ghost
    - Dockfile
    - config.js
  - nginx
      - nginx.conf
      - Dockfile
  - data
  - docker-compose.yml

每個檔案的具體內容有:

ghost/ghost/Dockfile

過時的配置(不使用)

FROM ghost
COPY ./config.js /var/lib/ghost/config.js
EXPOSE 2368
CMD ["npm","start","--production"]

最新版的官方映象, 把配置檔案改到/var/lib/ghost/content/ ,然後註釋掉了 CMD["npm","start","--production"] 即可。

FROM ghost
COPY ./config.js /var/lib/ghost/content/ 
EXPOSE 2368

 

ghost/ghost/config.js

var path = require('path'),
    config;

config = {
    production: {
        url: 'http://mytestblog.com',
        mail: {},
        database: {
            client: 'mysql',
            connection: {
                host: 'db',
                user: 'ghost',
                password: 'ghost',
                database: 'ghost',
                port: '3306',
                charset: 'utf8'
            },
            debug: false
        },
        paths: {
            contentPath: path.join(process.env.GHOST_CONTENT, '/')
        },
        server: {
            host: '0.0.0.0',
            port: '2368'
        }
    }
};

module.exports = config;

 

ghost/nginx/Dockerfile

FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80

 

ghost/nginx/nginx.conf

worker_processes 4;
events {worker_connections 1024;}
http {
    server {
        listen 80;
        location / {
            proxy_pass http://ghost-app:2368;
        }
    }
}

 

ghost/docker-compose.yml

version: '2'

networks:
  ghost:
services:
  ghost-app:
    build: ghost
    networks:
      - ghost
    depends_on:
      - db
    ports:
      - "2368:2368"

  nginx:
    build: nginx
    networks:
      - ghost
    depends_on:
      - ghost-app
    ports:
      - "80:80"

  db:
    image: "mysql:5.7.15"
    networks:
      - ghost
    environment:
      MYSQL_ROOT_PASSWORD: mysqlroot
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghost
    volumes:
      - $PWD/data:/var/lib/mysql
    ports:
      - "3306:3306"

此處資料庫相關的配置要和config.js中的配置(user、password)保持一致。

一旦我們為一個服務指定了一個名字(db),它就可以被其它服務所解析。

nginx 中proxy_pass 設定成 http://ghost-app:2368 也是因為在docker-compose.yml 指定了服務是ghost-app。

2.啟動

將所有容器啟動,並以daemon的方式後臺執行。第一次不需要build,因為會自動建立映象。

docke-compose up -d

3.檢視應用

docker-compose ps

 

Docker極簡教程 【高階】

因為檔案內容輸入有誤,導致啟動未成功,修改檔案後還需要停止、刪除掉容器再重新構建才行。

4.停止(+)

停止所有容器

docker-compose stop

5.刪除(+)

刪除時需要輸入y手動確認

docker-compose rm

6.構建(+)

非首次執行就需要手動建立映象了

docker-compose build

最後,在ghost目錄下再次啟動!

Docker極簡教程 【高階】

7.測試

訪問域名進入搭建的部落格網站,可以註冊賬號釋出部落格。

Docker極簡教程 【高階】

關於ghost的使用這裡不做過多介紹。

5.docker-compose.yml常用命令

命令 用途
build 本地建立映象
command 覆蓋預設命令
depends_on 連線容器
ports 暴露埠
volumes
image pull映象
up 啟動服務
stop 停止服務
rm 刪除服務中的各個容器
logs 觀察各個容器的日誌
ps 列出服務相關的容器

6.Docker資源連結

Docker官方英文資源

docker官網:

http://www.docker.com

Docker中文資源

Docker中文網站:

https://www.docker-cn.com/


Docker安裝手冊:

https://docs.docker-cn.com/engine/installation/

Docker 國內映象

網易加速器:

http://hub-mirror.c.163.com


官方中國加速器:

https://registry.docker-cn.com


ustc的映象:

https://docker.mirrors.ustc.edu.cn


daocloud:

https://www.daocloud.io/mirror#accelerator-doc(註冊後使用)

 

首發:Java知音

關注後端技術精選,每天推送優質好文

Docker極簡教程 【高階】