Docker極簡教程「高級」

1.Registry介紹

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

一些術語:

Docker極簡教程「高級」

與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常用命令

Docker極簡教程「高級」

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.comustc的鏡像:https://docker.mirrors.ustc.edu.cndaocloud:https://www.daocloud.io/mirror#accelerator-doc(註冊後使用)


分享到:


相關文章: