【持续更新中】常用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.mzph.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工具的开发者将跨…