1. 程式人生 > >Centos7&docker-ce&compose&wordpress

Centos7&docker-ce&compose&wordpress

如題,最近幫人裝個WordPress,想起來用docker方便,這裡做個記錄。
原文:https://my.oschina.net/finchxu/blog/2877580
因為docker要求linux核心版本3.10以上我記得,所以直接用的centos7省去很多麻煩。

主機在國內的先把yum源改成國內的阿里雲或者163的,這樣避免網路因素導致下載太慢
然後系統安裝後第一次使用最好是更新一下
yum update
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

rm -rf /var/lib/docker/ 這裡刪除所有的額配置檔案和映象等等
先刪除舊的然後再安裝最新的docker-ce。

因為centos7的預設yum安裝的是1.7.1的老版本,這裡是安裝最新的docker-ce版本。

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum update 這裡再更新一下避免問題
yum list docker-ce --showduplicates | sort -r 檢視所有可用版本
yum install docker-ce-

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version 檢視版本驗證安裝
都裝好了,然後編寫docker-compose.yml檔案,還是參照官方文件:

mkdir myblog && cd myblog 建立專案資料夾
vim docker-compose.yml 建立檔案
複製進下邊的內容
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_

data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your-mysql-root-password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wp_site:/var/www/html
ports:
- "80:80"
- "443:443"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
wp_site:
上邊作了目錄對映,來防止容器重啟導致的資料丟失,資料庫和網站資料都對映到了本地。

docker-compose up -d 這裡注意要用root管理員使用者使用命令。
等待推送完,然後就可以在瀏覽器訪問網站了。如果網路太慢可以用阿里雲端映象加速功能。

問題:

1.之前遇到過容器狀態顯示restarting的提示,此時最好是檢視docker的logs

docker logs [容器名/容器ID]|less
也有人說是docker需要2G記憶體不夠爆了,其實不需要,512M記憶體就可以執行,具體看你的專案需求。

2.也有人沒有注意到開啟防火牆埠,檢視自己是iptables還是firewall(理論上的預設防火牆),然後用相應的命令開啟相應的80埠解決之。

3.還有人遇到容器啟動後無法訪問,檢視埠發現docker只是把埠對映到了tcp6,我也以為是埠只是對映到了ipv6埠,可是並不是這個意思,我重灌了docker-ce(注意要徹底刪除配置檔案),docker-compose.yml裡面改成了版本3.3就解決了問題,所以他其實是同時映射了tcp和tcp6。

如果你刪除了重新安裝了不能解決問題,那麼我給你留下了一些線索:

http://dockone.io/question/569

https://github.com/moby/moby/issues/2174

https://github.com/moby/moby/issues/27491#event-833578007