【持續更新中】常用docker服務部署指北

前言

docker是個好東西,小樹莓派上也能快速部署,方便管理環境。用這篇筆記來記錄下各種軟件的快速部署方式

準備環境

docker安裝

curl -fsSL https://get.docker.com -o get-docker.sh
sh ./get-docker.sh

docker鏡像源配置

一種方法是設置proxy,可以修改/etc/systemd/system/docker.service.d/http-proxy.conf文件,設置對應的ip和port:

[Service]
Environment="HTTP_PROXY=http://xxx:xxx/"
Environment="HTTPS_PROXY=http://xxx:xxx/"

另一種方法是修改/etc/docker/daemon.json,設置鏡像源(可以參考這篇博客配置下),方便之后docker pull

{ "registry-mirrors": ["https://xxxxxxxxx"] }

最后重啟一下docker服務systemctl daemon-reload && systemctl restart docker

常用docker服務

基本思路是安裝鏡像-啟動容器。以下均假設root用戶。

nginx網站服務器

# 下載鏡像 也可以換成nginx:latest
docker pull nginx:1.27.4# 首先隨便啟動一個nginx容器
docker run --name nginx -d nginx:1.27.4# 把默認的配置文件拷貝到本地。這樣之后直接在宿主機上修改就行,不用進容器。
docker cp nginx:/etc/nginx /root/nginx_config
docker cp nginx:/usr/share/nginx /root/nginx_website# 刪除nginx容器
docker stop nginx && docker rm nginx# 重新創建nginx容器
# —network host表示共享主機網絡。比如nginx conf里配置把某些路徑轉發給主機運行的flask處理,可以方便地直接用。如果不需要共享宿主機網絡,也可以 -p 80:80 -p 443:443 開放兩個端口
docker run -itd --name nginx --network host -v /root/nginx_config:/etc/nginx -v /root/nginx_website:/usr/share/nginx -v /root/nginx_logs:/var/log/nginx -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro nginx:1.27.4

在使用時,將每個站點組織為一個文件夾,放在宿主機/root/nginx_website/xxx內,然后修改宿主機/root/nginx_config/conf.d內的conf文件,修改root /usr/share/nginx/xxx的xxx為對應的網頁根目錄即可。

mysql 8.0數據庫服務

參考資料

# 下載鏡像
docker pull mysql/mysql-server:8.0.32# 啟動容器并拷貝環境,注意<root_password>要進行替換
mkdir -p /root/mysql/logs /root/mysql/conf
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=<root_password>  mysql/mysql-server:8.0.32 
docker cp mysql:/var/lib/mysql /root/mysql/data
docker stop mysql && docker rm mysql# 設置777權限,否則docker容器無法正常啟動
chmod -R 777 /root/mysql/data
chmod -R 777 /root/mysql/logs# 簡單配置一下
cat > /root/mysql/conf/my.cnf << EOF
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
authentication_policy=*[client]
default-character-set=utf8mb4[mysql]
default-character-set=utf8mb4
EOF# 啟動正式環境(宿主機33060映射到容器內部3306),由于之前拷貝了data目錄,這里不會重新初始化,密碼就是之前設定的
docker run -d --name mysql --restart always -p 33060:3306 -v /root/mysql/data:/var/lib/mysql -v /root/mysql/conf:/etc/mysql -v /root/mysql/logs:/var/log -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro mysql/mysql-server:8.0.32# 由于docker容器內部網絡獨立,而默認的root@localhost用戶會拒絕來自宿主機的連接,所以需要創建一個新的允許指定ip來源的用戶。這里為了方便起見,使用root@%用戶允許任何ip地址
docker exec -it mysql bash
mysql -uroot -p # 然后輸入之前設置的root_password密碼 隨后可以用select user,host from mysql.user;查詢已有用戶
create user 'root'@'%' identified with mysql_native_password by '<root_password>';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
# 刪除用戶時,使用 drop user 'root'@'%';## 以下為官方提供的指令,僅供參考,不需要執行
# 檢查默認密碼。如果啟動容器時沒有掛載data,可以執行下面的操作檢查一下初始密碼
docker logs mysql 2>&1 | grep GENERATED# 重置密碼
docker exec -it mysql mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'some_new_passwd';

配置好后,如果需要遷移舊數據到這里,可以使用mysqldump進行導出,示例:

# 數據導出
mysqldump -u root -p --databases <database_name> -P <mysql_port> --add-drop-database --add-drop-table > xxx.sql
# 數據導入,首先需要創建空數據庫,然后進行導入。這里直接把密碼寫在命令行里了
docker exec -it mysql mysql -uroot -p -e "create database if not exists <database_name>;" 
docker exec -it mysql mysql -uroot -p<root_password> <database_name> < xxx.sql
# 除了在外部使用docker exec,比較推薦進容器內部進行導入
mysql> create database if not exists <database_name>;
mysql> use <database_name>;
mysql> source xxx.sql; # 需要提前docker cp把容器外的sql備份拷貝到容器內;或者用之前掛載的目錄也行

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77179.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77179.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77179.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Godot學習-創建簡單動畫

文章目錄 1、準備工作Godot資源 2、創建項目3、創建結點4、創建動畫1、創建動畫2、添加軌道3、創建關鍵幀3.1 第一個關鍵幀3.2 第二個關鍵幀 5、加載后自動播放6、動畫循環7、軌道設置1、軌道更新模式2、軌跡插值3、其他屬性的關鍵幀4、編輯關鍵幀5、使用 RESET 軌道6、洋蔥皮 …

Python 爬蟲解決 GBK亂碼問題

文章目錄 前言爬取初嘗試與亂碼問題編碼知識科普UTF - 8GBKUnicode Python中的編碼轉換其他編碼補充知識GBKGB18030GB2312UTF&#xff08;UCS Transfer Format&#xff09;Unicode 總結 前言 在Python爬蟲的過程中&#xff0c;我嘗試爬取一本小說&#xff0c;遇到GBK亂碼問題&a…

B站搜索關鍵詞機制深度解析:算法邏輯與優化策略

在擁有超過5億用戶的B站生態系統中&#xff0c;每天都有海量的視頻內容被上傳和消費。對于創作者而言&#xff0c;如何讓自己的視頻在茫茫內容海洋中被目標受眾發現&#xff0c;是至關重要的課題。而關鍵詞&#xff0c;正是連接內容與用戶的關鍵橋梁。理解B站的搜索關鍵詞機制&…

寶塔面板中解鎖Laravel日志查看的奧秘

目錄 一、前言二、Laravel 日志基礎認知2.1 日志的作用2.2 Laravel 日志的默認配置 三、查找 Laravel 日志文件位置3.1 常規存儲路徑3.2 自定義路徑查找 四、查看 Laravel 日志內容4.1 寶塔面板文件管理器查看4.2 使用命令行查看 五、常見問題及解決方法5.1 權限不足無法查看5.…

Matlab Add Legend To Graph-圖例添加到圖

Add Legeng To Graph: Matlab的legend&#xff08;&#xff09;函數-圖例添加到圖 將圖例添加到圖 ,圖例是標記繪制在圖上的數據序列的有用方法。 下列示例說明如何創建圖例并進行一些常見修改&#xff0c;例如更改位置、設置字體大小以及添加標題。您還可以創建具有多列的圖…

K8S+Prometheus+Consul+alertWebhook實現全鏈路服務自動發現與監控、告警配置實戰

系列文章目錄 k8s服務注冊到consul prometheus監控標簽 文章目錄 系列文章目錄前言一、環境二、Prometheus部署1.下載2.部署3.驗證 三、kube-prometheus添加自定義監控項1.準備yaml文件2.創建新的secret并應用到prometheus3.將yaml文件應用到集群4.重啟prometheus-k8s pod5.訪…

基于YOLO11的車牌識別分析系統

【包含內容】 【一】項目提供完整源代碼及詳細注釋 【二】系統設計思路與實現說明 【三】系統數據統計與可視化分析支持 【技術棧】 ①&#xff1a;系統環境&#xff1a;Windows/macOS/Linux ②&#xff1a;開發環境&#xff1a;Python 3.8 ③&#xff1a;技術棧&#x…

每天記錄一道Java面試題---day39

GC如何判斷對象可以被回收了 回答重點 引用計數法&#xff1a; - 每個對象由一個引用計數屬性&#xff0c;新增一個引用時計數器加1&#xff0c;引用釋放時計數減1&#xff0c;計數為0時可以回收。可達性分析法&#xff1a; - 從GC Roots開始向下搜索&#xff0c;搜索所走過的…

機器學習(5)——支持向量機

1. 支持向量機&#xff08;SVM&#xff09;是什么&#xff1f; 支持向量機&#xff08;SVM&#xff0c;Support Vector Machine&#xff09;是一種監督學習算法&#xff0c;廣泛應用于分類和回歸問題&#xff0c;尤其適用于高維數據的分類。其核心思想是尋找最優分類超平面&am…

從零到一:網站設計新手如何快速上手?

從零到一&#xff1a;網站設計新手如何快速上手&#xff1f; 在當今數字化時代&#xff0c;網站已成為企業、個人展示信息、提供服務的重要窗口。對于想要涉足網站設計領域的新手而言&#xff0c;如何快速上手并掌握必要的技能成為首要任務。本文將從基礎知識、軟件工具、設計…

藍橋杯2024國B數星星

小明正在一棵樹上數星星&#xff0c;這棵樹有 n 個結點 1,2,?,n。他定義樹上的一個子圖 G 是一顆星星&#xff0c;當且僅當 G 同時滿足&#xff1a; G 是一棵樹。G 中存在某個結點&#xff0c;其度數為 ∣VG?∣?1。其中 ∣VG?∣ 表示這個子圖含有的結點數。 兩顆星星不相…

Django從零搭建賣家中心登陸與注冊實戰

在電商系統開發中&#xff0c;賣家中心是一個重要的組成部分&#xff0c;而用戶注冊與登陸則是賣家中心的第一步。本文將詳細介紹如何使用Django框架從零開始搭建一個功能完善的賣家注冊頁面&#xff0c;包括前端界面設計和后端邏輯實現。 一、項目概述 我們將創建一個名為sel…

Opencv使用cuda實現圖像處理

main.py import os import cv2 print(fOpenCV: {cv2.__version__} for python installed and working) image cv2.imread(bus.jpg) if image is None:print("無法加載圖像1") print(cv2.cuda.getCudaEnabledDeviceCount()) cv2.cuda.setDevice(0) cv2.cuda.printCu…

如何編制實施項目管理章程

本文檔概述了一個項目管理系統的實施計劃,旨在通過統一的業務規范和技術架構,加強集團公司的業務管控,并規范業務管理。系統建設將遵循集團統一模板,確保各單位項目系統建設的標準化和一致性。 實施范圍涵蓋投資管理、立項管理、設計管理、進度管理等多個方面,支持項目全生…

B端可視化方案,如何助力企業精準決策,搶占市場先機

在當今競爭激烈的商業環境中&#xff0c;企業需要快速、準確地做出決策以搶占市場先機。B端可視化方案通過將復雜的企業數據轉化為直觀的圖表和儀表盤&#xff0c;幫助企業管理層和業務人員快速理解數據背后的業務邏輯&#xff0c;從而做出精準決策。本文將深入探討B端可視化方…

基于FPGA的一維時間序列idct變換verilog實現,包含testbench和matlab輔助驗證程序

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 4.1 DCT離散余弦變換 4.2 IDCT逆離散余弦變換 4.3 樹結構實現1024點IDCT的原理 5.算法完整程序工程 1.算法運行效果圖預覽 (完整程序運行后無水印) matlab仿真結果 FPGA仿真結果 由于FP…

Android基礎教程 - 學習完成記錄

視頻學習教程 視頻鏈接&#xff1a;2022 最新 Android 基礎教程&#xff0c;從開發入門到項目實戰&#xff0c;看它就夠了&#xff0c;更新中_嗶哩嗶哩_bilibili 學習下來&#xff0c;有遇到很多問題&#xff0c;在 chatgpt、claude 和 Android Studio 插件通義千問的幫助下&…

Web開發-JavaEE應用原生和FastJson反序列化URLDNS鏈JDBC鏈Gadget手搓

知識點&#xff1a; 1、安全開發-JavaEE-原生序列化-URLDNS鏈分析 2、安全開發-JavaEE-FastJson-JdbcRowSetImpl鏈分析 利用鏈也叫"gadget chains"&#xff0c;我們通常稱為gadget&#xff1a; 1、共同條件&#xff1a;實現Serializable或者Externalizable接口&…

OpenCV操作函數

1、cv2.imread&#xff08;&#xff09; 2、 cv2.imshow&#xff08;&#xff09; 3、 cv2.waitKey&#xff08;&#xff09; 4、cv2.imwrite&#xff08;&#xff09; 5、cv2.selectROI&#xff08;&#xff09; 6、 cv2.VideoCapture() 7、cv2.cvtColor&#xff08;&#xff…

AI編程新紀元:GitHub Copilot、CodeGeeX與VS2022的聯合開發實踐

引言:AI編程時代的到來 在軟件開發領域,我們正站在一個歷史性的轉折點上。GitHub Copilot、CodeGeeX等AI編程助手的出現,結合Visual Studio 2022的強大功能,正在重塑代碼編寫的本質。這不僅是工具層面的革新,更是開發范式的根本轉變。能夠有效利用這些AI工具的開發者將跨…