操作系統(tǒng)為linux吊宋,ubuntu系統(tǒng)挖藏。
適用場景為個人使用议惰、小范圍局域網(wǎng)內(nèi)使用揽咕。
安裝docker配置mirror
- 安裝docker
apt install -y docker.io
可能還需要單獨安裝下docker-compose意狠。
apt install -y docker-compose
docker compose和docker-compose的區(qū)別以后再說敞贡。
如果安裝完docker后,執(zhí)行docker compose或者docker-compose命令正常摄职,就不用安裝docker-compose誊役,否則就安裝一下。
- 配置mirror
因為dockerhub把中國給屏蔽了谷市,無法拉取dockerhub的鏡像蛔垢,因此需要配置一個國內(nèi)鏡像源。
新建/修改docker配置文件/etc/docker/daemon.json
迫悠,添加以下內(nèi)容
{
"registry-mirrors":[
"https://dockerproxy.com",
"https://docker.mirrors.ustc.deu.cn",
"https://docker.nju.edu.cn"
]
}
然后重啟docker鹏漆。systemctl restart docker
啟動wordpress
- 從此處獲取yaml,內(nèi)容如下
services:
db:
# We use a mariadb image which supports both amd64 & arm64 architecture
image: mariadb:10.6.4-focal
# If you really want to use MySQL, uncomment the following line
#image: mysql:8.0.27
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=somewordpress
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
expose:
- 3306
- 33060
wordpress:
image: wordpress:latest
volumes:
- wp_data:/var/www/html
ports:
- 80:80
restart: always
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=wordpress
volumes:
db_data:
wp_data:
新建目錄创泄,將上述內(nèi)容寫入docker-compose.yaml文件艺玲,如放在~/wordpress/docker-compose.yaml
文件中。
- 啟動wordpress
cd ~/wordpress; docker compose up -d
或cd ~/wordpress; docker-compose up -d
- 停止wordpress
docker compose down
或docker-compose down
- 訪問配置wordpress
執(zhí)行docker ps
命令鞠抑,可以看到容器已經(jīng)啟動饭聚,并暴露了80端口,就可以直接在瀏覽器訪問wordpress了搁拙。
在本機的話秒梳,直接在瀏覽器輸入localhost
就可以訪問到wordpress。
數(shù)據(jù)備份與恢復(fù)
docker compose只能單機部署箕速,我們前面部署的wordpress使用的存儲都是存儲在本地磁盤酪碘,存在丟數(shù)據(jù)的風(fēng)險,因此建議定期備份盐茎。
從前面的配置文件可以看到我們定義了2個volume兴垦,分別是 db_data和wp_data,執(zhí)行docker volume ls
命令就可以看到
可以看到volume的名字前面加上了
wordpress_
前綴,因為docker-compose.yaml文件是在wordpress目錄下探越。
備份
- docker volume在主機上的位置為
/var/lib/docker/volumes/
(可以通過docker volume inspect xx
查看)狡赐。
如果有訪問權(quán)限的,可以直接將這2個文件定時打包備份到其他地方扶关。
cd /var/lib/docker/volumes;
tar -zcf wordpress.tar.gz wordpress_db_data wordpress_wp_data
- 如果沒有該目錄訪問權(quán)限的就需要借助其他容器來備份。參考:https://sealhuang.github.io/migrate-docker-volume-from-one-host-to-another
恢復(fù)
- 如果你是直接打包的主機上的目錄数冬,則將備份文件恢復(fù)到對應(yīng)的目錄节槐。
cd /var/lib/docker/volumes;
tar -zxf wordpress.tar.gz;
docker volume create wordpress_db_data; # 需要重新創(chuàng)建名為#volume-name#的volume
docker volume create wordpress_wp_data;
- 如果沒有目錄的訪問權(quán)限,則需要通過容器來恢復(fù)拐纱。
高可用部署
前面的部署方案铜异,都是單節(jié)點部署,只能用于非生產(chǎn)使用秸架;如果有高可用的需求揍庄,建議上docker swarm或者k8s,給容器配置健康檢查东抹;并打散到多個節(jié)點蚂子;通過nginx做流量分發(fā);并使用外部存儲缭黔。
Docker Compose主要用于在單個主機上部署和管理多個容器食茎,通常用于開發(fā)和測試環(huán)境。它提供了一種簡單的方式來定義和運行多個相互關(guān)聯(lián)的容器馏谨,并可以通過一個命令來啟動别渔、停止、構(gòu)建和管理這些容器惧互。
Docker Swarm則是一個用于在多個主機上部署和管理多個容器的工具哎媚。它允許用戶將多個Docker主機組合成一個虛擬的容器集群,并使用一個統(tǒng)一的API來管理這些容器喊儡。Docker Swarm可以用于生產(chǎn)環(huán)境中拨与,并提供了高可用性和容錯性的功能。
一個簡單的部署架構(gòu)方案參考艾猜。
nginx與外部交互使用https協(xié)議截珍,nginx之后的交互使用http協(xié)議。
主題推薦
https://cloud.tencent.com/developer/article/2008499
https://github.com/solstice23/argon-theme