docker三劍客之docker-compose和搭建wordpress的博客

一、簡介

Compose 項目是 Docker 官方的開源項目,負責實現對 Docker 容器集羣的快速編排。

通過之前的介紹,我們知道使用一個 Dockerfile 模板文件,可以讓用戶很方便的定義一個單獨的應用容器。然而,在日常工作中,經常會碰到需要多個容器相互配合來完成某項任務的情況。例如要實現一個 Web 項目,除了 Web 服務容器本身,往往還需要再加上後端的數據庫服務容器,甚至還包括負載均衡容器等。

Compose 恰好滿足了這樣的需求。它允許用戶通過一個單獨的 docker-compose.yml 模板文件(YAML 格式)來定義一組相關聯的應用容器爲一個項目(project)。

Compose 中有兩個重要的概念:

服務 (service):一個應用的容器,實際上可以包括若干運行相同鏡像的容器實例。
項目 (project):由一組關聯的應用容器組成的一個完整業務單元,在 docker-compose.yml 文件中定義。
Compose 的默認管理對象是項目,通過子命令對項目中的一組容器進行便捷地生命週期管理。

使用微服務架構的系統一般包含若干個微服務,每個微服務一般部署多個實例。如果每個服務都要手動啓停,那麼效率低,維護量大。

二、 Docker Compose介紹

通過Docker-Compose用戶可以很容易地用一個配置文件定義一個多容器的應用,然後使用一條指令安裝這個應用的所有依賴,完成編寫。Docker-Compose解決了容器與容器之間如何管理編排的問題。

Docker Compose工作原理圖
docker三劍客之docker-compose和搭建wordpress的博客
撰寫中有兩個重要的概念:

服務(服務):一個應用的容器,實際上可以包括多個運行相同相同的容器實例。
項目(項目):由各個關聯的應用容器組成的一個完整的業務單元,在docker-compose.yml文件中定義。
一個項目可以由多個服務(容器)關聯,組成面向項目進行管理,通過子命令對項目中的單個容器進行便捷地生命週期管理。

Compose項目由Python編寫,實現上調用了Docker服務提供的API來對容器進行管理。因此,只要所操作的平臺支持Docker API,就可以在其上利用Compose來進行編排管理。

Docker三大編排工具:

Docker Compose:是用來組裝多容器應用的工具,可以在 Swarm集羣中部署分佈式應用。

Docker Machine:是支持多平臺安裝Docker的工具,使用 Docker。Machine,可以很方便地在筆記本、雲平臺及數據中心裏安裝Docker。

Docker Swarm:是Docker社區原生提供的容器集羣管理工具。

Docker Compose命令詳解

Docker compose的使用非常類似於docker命令的使用,但是需要注意的是大部分的compose命令都需要到docker-compose.yml文件所在的目錄下才能執行。
compose以守護進程模式運行加-d選項

三、Docker Compose安裝

#下載
sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#安裝
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose version

四、實驗環境

主機 ip地址 服務
docker 192.168.1.11 compose+wordpress

docker三劍客之docker-compose

docker容器的編排工具: 解決相互有依賴關係的多個容器的管理。

[root@docker01 ~]# docker-compose -v
//驗證已有docker-compose命令

docker三劍客之docker-compose和搭建wordpress的博客

docker-compose的配置文件實例

通過識別一個docker-compose.yml的配置文件,去管理容器。

設置tab鍵的空格數量

[root@docker01 ~]# vim .vimrc
set tabstop=2
//設置tab鍵的空格數量
[root@docker01 ~]# source .vimrc 
//刷新一下

創建一個docker-compose.yml測試文件

[root@docker01 ~]# mkdir compose_test
//創建測試目錄
[root@docker01 ~]# cd compose_test/
[root@docker01 compose_test]# vim docker-compose.yml
//創建測試文件docker-compose.yml
version: "3"
services:
  nginx:
    container_name: web-nginx
    image: nginx
    restart: always
    ports:
      - 90:80
    volumes:
      - ./webserver:/usr/share/nginx/html

docker-compose.yml文件的解釋

第一部分: version: 指定語法格式的版本。

第二部分: service: 定義服務,(想要運行什麼樣的容器)

通過docker-compose.yml文件[運行]()容器

[root@docker01 compose_test]# docker-compose up -d
//後臺運行docker-compose規定的容器。(在執行這條命令的當前目錄下,也需要一個docker-compose.yml的配置文件,並且通常只有一個。)

docker三劍客之docker-compose和搭建wordpress的博客

[root@docker01 compose_test]# docker ps
//查看容器信息

docker三劍客之docker-compose和搭建wordpress的博客

[root@docker01 compose_test]# curl 127.0.0.1:90
//訪問nginx會失敗,因爲掛載目錄沒有頁面內容

docker三劍客之docker-compose和搭建wordpress的博客

[root@docker01 compose_test]# vim webserver/index.html
//創建測試網頁
xgp666
[root@docker01 compose_test]# curl 127.0.0.1:90
//再次訪問,是成功的
xgp666

docker三劍客之docker-compose和搭建wordpress的博客

通過docker-compose.yml文件[停止運行]()容器

[root@docker01 compose_test]# docker-compose stop

docker三劍客之docker-compose和搭建wordpress的博客

通過docker-compose.yml文件[重啓]()容器

[root@docker01 compose_test]# docker-compose restart

docker三劍客之docker-compose和搭建wordpress的博客

不在docker-compose.yml文件所在目錄,要使用[-f]()指定目錄

[root@docker01 ~]# docker-compose -f compose_test/docker-compose.yml  stop

並且,在運行container(docker-compose.yml)的過程中,還支持Dockerfile

[root@docker01 compose_test]# vim Dockerfile
//編寫dockerfile
FROM nginx
ADD webserver /usr/share/nginx/html 
[root@docker01 compose_test]# vim docker-compose.yml 
//修改docker-compose.yml文件
version: "3"
services:
  nginx:
    build: .     #添加
    container_name: web-nginx
    image: new-nginx:v1.0   #修改鏡像名稱
    restart: always
    ports:
      - 90:80

通過docker-compose.yml文件[停止並刪除]()容器

[root@docker01 compose_test]# docker-compose stop
Stopping web-nginx ... done
[root@docker01 compose_test]# docker-compose rm

通過docker-compose.yml文件[運行]()容器

[root@docker01 compose_test]# docker-compose up -d
//通過docker-compose.yml文件[運行]()容器
[root@docker01 compose_test]# docker ps
//查看容器信息

docker三劍客之docker-compose和搭建wordpress的博客

測試nginx訪問頁面

[root@docker01 compose_test]# curl 127.0.0.1:90
//測試訪問nginx頁面,成功
xgp666

docker三劍客之docker-compose和搭建wordpress的博客

六、搭建wordpress的博客

下載wordpress和mysql:5.7容器

[root@docker01 ~]# docker pull wordpress
//下載wordpress容器
[root@docker01 ~]# docker pull mysql:5.7
//下載mysql:5.7容器

編寫一個docker-ccompose.yml

[root@docker01 ~]# mkdir wordpress
//創建wordpress測試文件
[root@docker01 ~]# cd wordpress/

[root@docker01 wordpress]# vim docker-compose.yml
//編寫docker-compose.yml
version: "3.1"
services:
  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: 123.com
      WORDPRESS_DB_NAME: wordpress
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: 123.com
      MYSQL_ROOT_PASSWORD: 123.com

通過docker-compose.yml文件[運行]()容器

[root@docker01 wordpress]# docker-compose up -d

docker三劍客之docker-compose和搭建wordpress的博客

[root@docker01 wordpress]# docker ps
//查看容器信息

docker三劍客之docker-compose和搭建wordpress的博客

[root@docker01 wordpress]# docker logs  容器名稱
//查看容器日誌

瀏覽器訪問一下 http://192.168.1.11:8080/

選擇語言

docker三劍客之docker-compose和搭建wordpress的博客

安裝wordpress

docker三劍客之docker-compose和搭建wordpress的博客

docker三劍客之docker-compose和搭建wordpress的博客

登陸wordpress

docker三劍客之docker-compose和搭建wordpress的博客

docker三劍客之docker-compose和搭建wordpress的博客

登陸成功後,自己就可以進行設置了

排錯

首先查看主機名是否更改
防火牆和selinux是否關閉
docker-compose命令是否安裝給予權限
docker--compose.yml 編寫是否有問題
容器執行是否正常
(如果瀏覽器訪問不到,可以添加一條路由轉發)

其他wordpress優化建議

以上步驟之後,基本wordpress搭建和一些必備的設置就算完成了,剩下的更多是個人的選擇,每個人可能要求不同,下面就說幾點wordpress優化的建議

1.無論你是做百度seo,安裝一個SEO插件,就算不想設置文章的TDK,至少網站首頁的有必要設置一下,推薦 All in one seo pack
2.定期備份,備份的重要性不用多說,凡是丟過數據的人都會養成備份的習慣,WordPress備份網站方法
3.安裝一個安全插件,WordPress安全插件推薦
4.及時更新網站的主題和插件,WordPress插件自動更新方法
5.刪除所有沒有用的主題和插件,WordPress刪除主題方法
6.設置垃圾留言過濾,wordpress防垃圾留言插件Akismet

WordPress建站基礎主要就是這些,後面的話就是根據自己的站點進行各種設置,不同類型的站點使用主題和插件都是很大區別的。不過如果你能學會本篇所介紹的內容,相信你的站點就已經超過了絕大部分網站,好了今天教程就到這裏,如果你有什麼問題或者其他更好的建議,歡迎留言討論

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章