買了騰訊的雲主機,完全自己搭建服務太麻煩。於是安裝了centos系統,裝了docker,直接下載docker鏡像來運行。
web服務比較簡單,直接把httpd鏡像拉下來運行就行了。
sudo docker run -dit --name my-httpd -p 8080:80 -v /home/user1/www_root/:/usr/local/apache2/htdocs/ httpd
上面的命令運行httpd容器鏡像,將本地/home/user1/www_root/ 掛載到容器中/usr/local/apache2/htdocs/ httpd,http的網頁就放在/home/pxy/www_root/目錄中。
網頁訪問方式:http://you_ip_address:8080/
-d: 容器在後臺運行
-i:表示以“交互模式”運行容器
-t:表示容器啓動後會進入其命令行
-v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
wordpress運行稍微複雜一些,需要wordpress和mysql兩個鏡像協同工作。
###運行mysql容器
sudo docker run --name mysql-wordpress -d -v /home/user1/mysql_wp_root:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="my_sql_password" mysql:8.0.1
###運行wordpress容器
sudo docker run --name my-wordpress -d -p 8090:80 --link mysql-wordpress:mysql -v /home/user1/wordpress_root:/var/www/html wordpress
本地目錄 /home/user1/wordpress_root和/home/user1/mysql_wp_root 分別作爲wordpress和mysql的存儲目錄,映射到容器的指定目錄下。
mysql容器運行時需要設置root密碼;而wordpress容易運行時需要指定連接的mysql數據庫。
從上面可以看到,訪問wordpress的方法爲:http://you_ip_address:8090/
雲主機上當前運行的容器有如下三個:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b154e4f91721 wordpress "docker-entrypoint..." 2 weeks ago Up 2 weeks 0.0.0.0:8090->80/tcp my-wordpress
6af2dec5f4db mysql:8.0.1 "docker-entrypoint..." 2 weeks ago Up 2 weeks 3306/tcp mysql-wordpress
564a50ac029b httpd "httpd-foreground" 2 weeks ago Up 2 weeks 0.0.0.0:8080->80/tcp my-httpd
可以看到mysql後面有個8.0.1,說明對於mysql,沒有拉最新的image。如果使用mysql最新版本的image,運行wordpress會出錯,通過 sudo docker logs mysql-wordpress 查看錯誤日誌並搜索錯誤信息關鍵字,可以看到大約時從8.0.3開始,版本中一個認證相關的更改會引起這個錯誤,因此嘗試使用略微舊一點的mysql鏡像,這裏使用8.0.1,終於運行ok了。
關於wordpress的搭建,可以參考下面這個網頁,寫的比較詳細,不過大概那時候引起錯誤的mysql的變更還未進行,因此在我仔細按照該文進行操作還是不行,反覆幾次到利用搜索工具最終解決錯誤的原因並規避,還是費了一番周折。
其他相關命令:
sudo docker stop mysql-wordpress # 停止容器
sudo docker rm mysql-wordpress # 刪除容器