Docker 安裝筆記 - 以LNMP為例的應用
Docker 是一個開源專案,誕生於 2013 年初,最初是 dotCloud 公司內部的一個業餘專案。它基於 Google 公司推出的 Go 語言實作。 專案後來加入了 Linux 基金會,遵從了 Apache 2.0 協議,原始碼在 GitHub 上進行維護。
Docker Install
官網上有各種平台的安裝指南 https://docs.docker.com/install/
我們介紹的是在 CentOS 下的安裝步驟 :
1. 安裝一台乾淨的CentOS 7 Minimal, ISO https://www.centos.org/download/
2. 安裝 Docker
# yum update
# yum install -y wget
# wget -qO- https://get.docker.com/ | sh
在安裝完成後會出現個提示訊息說,如果你要以非root用戶來運行Docker、你需要執行下面的命令。
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:
sudo usermod -aG docker your-user
3. 啟動 Docker
# systemctl enable docker.service
# systemctl start docker.service
Docker 的應用以 LNMP 為例
Mariadb
我們使用目前Mariadb 最新版本的docker image 10.3
# docker pull mariadb/server:10.3
用基本的方式指定root 的密碼來運行 Mariadb 容器
# docker run --name mariadb -e MYSQL_ROOT_PASSWORD=passwd -d mariadb/server:10.3
將容器內的 port 對外開放 -p 3306:3306
# docker run --name mariadb -e MYSQL_ROOT_PASSWORD=passwd -p 3306:3306 -d mariadb/server:10.3
需要配置 my.cnf 的話 -v /data/my.cnf:/etc/mysql/my.cnf
# docker cp mariadb:/etc/mysql/my.cnf /data/my.cnf
# docker stop mariadb
# docker rm mariadb
# docker run --name mariadb -e MYSQL_ROOT_PASSWORD=passwd -v /data/my.cnf:/etc/mysql/my.cnf -p 3306:3306 -d mariadb/server:10.3
Nginx
# docker pull nginx:1.15
掛載網頁的根目錄並對外開放 80 port
# mkdir /data/html
# docker run --name nginx -v /data/html:/usr/share/nginx/html:ro -p 80:80 -d nginx:1.15
配置 conf -v /data/default.conf:/etc/nginx/conf.d/default.conf
# docker cp nginx:/etc/nginx/conf.d/default.conf /data/default.conf
# docker stop nginx
# docker rm nginx
# docker run --name nginx -v /data/default.conf:/etc/nginx/conf.d/default.conf -v /data/html:/usr/share/nginx/html:ro -p 80:80 -d nginx:1.15
PHP
# docker pull php:7.3-fpm
運行 php-fpm 並對外開放 9000 port
# docker run --name php-fpm -p 9000:9000 -d php:7.3-fpm
配置 php-fpm
# docker cp php-fpm:/usr/local/etc/php-fpm.d/www.conf /data/www.conf
# docker cp php-fpm:/usr/local/etc/php/php.ini-production /data/php.ini
# docker stop php-fpm
# docker rm php-fpm
# docker run --name php-fpm -v /data/html:/usr/share/nginx/html -v /data/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /data/php.ini:/usr/local/etc/php/php.ini -d php:7.3-fpm
配置Nginx
# vi /data/default.conf
-----------------------------------
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
因為我們是安裝在一個主機裡, 接下來我們要讓三個容器能夠互相透過網路訪問, php-fpm link mariadb, nginx link php-fpm
# docker stop php-fpm
# docker rm php-fpm
# docker run --name php-fpm --link mariadb -v /data/html:/usr/share/nginx/html -v /data/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /data/php.ini:/usr/local/etc/php/php.ini -d php:7.3-fpm
# docker stop nginx
# docker rm nginx
# docker run --name nginx --link php-fpm -v /data/default.conf:/etc/nginx/conf.d/default.conf -v /data/html:/usr/share/nginx/html:ro -p 80:80 -d nginx:1.15