Docker極簡教程 【高階】
1.Registry介紹
Registry 是映象倉庫,我們可以從映象倉庫中拉取一些映象到本地,也可以提交映象到倉庫。
一些術語:
ENGLISH | 中文 |
---|---|
host | 宿主機 |
image | 映象 |
container | 容器 |
registry | 倉庫 |
daemon | 守護程式 |
client | 客戶端 |
與registry倉庫的互動:
查詢映象
docker search whalesay
拖取映象
docker pull whalesay
推送映象
docker push myname/whalesay
國內的docker映象倉庫:
-
daoclou
-
時速雲
-
aliyun
2.Registry實戰
1.查詢映象
STARS可以理解為點贊數,預設是按照這個排序的。
2.拉取映象
3.檢視映象
可以看到,REPOSITORY是映象名,TAG是預設的latest,正常情況是版本號,這兩個比較重要。
CREATED是建立時間,SIZE是佔用空間的大小。
4.執行映象
5.標記映象
使用docker tag命令標記本地映象,將其歸入某一倉庫。
docker tag docker/whalesay myhaleasy:tag
6.上傳映象
可以使用docker push命令上傳本地映象到倉庫,但是需要註冊登入。
註冊登入地址:https://hub.docker.com
執行登入命令,輸入使用者名稱與密碼即可。
docker login
上傳映象前還需要在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
檢查是否安裝成功。
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
因為檔案內容輸入有誤,導致啟動未成功,修改檔案後還需要停止、刪除掉容器再重新構建才行。
4.停止(+)
停止所有容器
docker-compose stop
5.刪除(+)
刪除時需要輸入y手動確認
docker-compose rm
6.構建(+)
非首次執行就需要手動建立映象了
docker-compose build
最後,在ghost目錄下再次啟動!
7.測試
訪問域名進入搭建的部落格網站,可以註冊賬號釋出部落格。
關於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知音
關注後端技術精選,每天推送優質好文