实践docker部署(代码片段)

gaochenglong1 gaochenglong1     2023-02-02     399

关键词:

实践Docker部署
一键Docker安装

可以使用如下两种命令之一,注意容器内东八区时间配置

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
或者
curl -sSL https://get.daocloud.io/docker | sh
常用服务1
MySQL

创建并更改配置文件 /home/dockerFiles/mysql/conf/my.cnf
命令创建并执行该容器

[mysqld]
default_authentication_plugin=mysql_native_password

创建数据库不指定默认UTF8,默认latin-1

character_set_server=utf8

大小写不敏感,默认0为敏感

lower_case_table_names=1

配置不使用only full group by

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

最大连接数

max_connections=9999

docker pull mysql:8.0
docker run --name mysql
-p 3306:3306
-v /home/dockerFiles/mysql/conf:/etc/mysql
-v /home/dockerFiles/mysql/logs:/var/log/mysql
-v /home/dockerFiles/mysql/data:/var/lib/mysql-files
-v /etc/localtime:/etc/localtime
-e MYSQL_ROOT_PASSWORD=123456
-d --restart=always mysql:8.0

▶ 如果容器被删除,重新运行即可,数据本地储存
▶ 如果配置文件配置,在 conf/ 下创建 my.cnf【Windows中为my.ini】

Redis

创建 /home/dockerFiles/redis/redis.conf 文件,官网下载
修改关键配置信息,如下
命令创建并执行该容器

注释掉这部分,这是限制redis只能本地访问

bind 127.0.0.1

默认yes,开启保护模式,限制为本地访问

protected-mode no

默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败

daemonize no

默认no,改redis持久化(可选)

appendonly yes

配置 redis 访问密码

requirepass 你的访问密码!!!

docker pull redis:7.0.0
docker run --name redis
-p 6379:6379
-v /home/dockerFiles/redis/redis.conf:/etc/redis/redis.conf
-v /home/dockerFiles/redis/data:/data
-v /etc/localtime:/etc/localtime
-d --restart=always redis:7.0.0
redis-server /etc/redis/redis.conf
–appendonly yes

▶ 后两句含义:①指定配置文件启动,默认为无配置文件启动,②启动数据持久化
▶ 最后使用版本:6.2.6

Nginx(单配置)

创建 /home/dockerFiles/nginx/nginx.conf 文件
命令创建并执行该容器

user nginx;
worker_processes auto;

error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;

events
worker_connections 1024;

http
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

sendfile        on;
#tcp_nopush     on;

keepalive_timeout  65;

#gzip  on;

## default
server 
    listen 80;
    server_name localhost;
    
    location / 
        root   html;
        index  index.html index.htm;
    


## SSL + Proxy
server 
    listen 80;
    if ($server_port !~ 443)
        rewrite ^(/.*)$ https://$host:443$1 permanent;
    

    listen 443 ssl;
    server_name xx.xx.xx;

    ssl_certificate      cert/xx.xx.xx_chain.crt;
    ssl_certificate_key  cert/xx.xx.xx_key.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / 
        client_max_body_size     50m;
        
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        proxy_pass http://172.17.0.1:8090;
    

docker pull nginx:1.21.6
docker run --name nginx
-p 10080:80 -p 10443:443
-v /home/dockerFiles/nginx/nginx.conf:/etc/nginx/nginx.conf
-v /home/dockerFiles/nginx/logs:/var/log/nginx
-v /home/dockerFiles/nginx/html:/etc/nginx/html
-v /home/dockerFiles/nginx/cert:/etc/nginx/cert
-v /etc/localtime:/etc/localtime
-d --restart=always nginx:1.21.6

▶ 做本地 HTTP 反向代理服务,不做 HTTP 服务

Nginx(多配置)

命令创建并执行该容器
创建 /home/dockerFiles/nginx/conf.d/ 文件夹,此文件夹为主文件 includ 的分支文件 *.conf
创建默认文件内容如下 default.conf

docker run --name nginx
-p 10080:80 -p 10443:443
-v /home/dockerFiles/nginx/conf.d:/etc/nginx/conf.d
-v /home/dockerFiles/nginx/logs:/var/log/nginx
-v /home/dockerFiles/nginx/html:/etc/nginx/html
-v /home/dockerFiles/nginx/cert:/etc/nginx/cert
-v /etc/localtime:/etc/localtime
-d --restart=always nginx:1.21.6

server
listen 80;
server_name localhost;

location / 
    root   /usr/share/nginx/html;
    index  index.html index.htm;

▶ 根据实际情况调整 gzip、cert 全域名证书等

常用服务2
MinIO

命令创建并执行该容器

启动命令(有控制台的新版本)

docker pull minio/minio
docker run --name minio
-v /home/dockerFiles/minio/data:/data
-v /etc/localtime:/etc/localtime
-p 9000:9000 -p 9001:9001
-e “MINIO_ROOT_USER=admin”
-e “MINIO_ROOT_PASSWORD=asdfghjkl”
-d --restart=always quay.io/minio/minio
server /data --console-address “:9001”

启动命令(无控制台的旧版本)

docker pull minio/minio:
docker run --name minio
-p 9000:9000
-v /home/dockerFiles/minio/data:/data
-v /home/dockerFiles/minio/config:/root/.minio
-v /etc/localtime:/etc/localtime
-e “MINIO_ACCESS_KEY=admin”
-e “MINIO_SECRET_KEY=asdfghjkl”
-d --restart=always minio/minio server
/data
Gogs

创建 /home/dockerFiles/gogs 文件夹
命令创建并执行该容器

启动命令,再使用 ip:13000 请求就可以执行图像界面安装

docker pull gogs/gogs:0.12.4
docker run --name=gogs
-p 10022:22 -p 13000:3000
-v /home/dockerFiles/gogs:/data
-v /etc/localtime:/etc/localtime
-d --restart=always gogs/gogs
项目 填写 说明
数据库 实际情况 全部填写
应用基本设置 应用名称 -
域名 公网IP/域名 1.1.1.1
SSH端口 映射后的端口号 10022
HTTP端口号 映射前的端口号 3000
应用URL 访问地址 http://1.1.1.1:13000
可选设置 禁止用户注册
启用登录访问限制 可以后期通过挂载的配置文件更改

git/gogs/custom/conf 目录下的 app.ini文件

禁止用户注册

DISABLE_REGISTRATION = true

启用登录访问限制

REQUIRE_SIGNIN_VIEW = true

产品名称(各地方都会显示的)

BRAND_NAME = 超级研发部门

定义域名访问:域名、访问域名

[server]
DOMAIN = example.org
EXTERNAL_URL = http://example.org/git/

▶ 仓库迁移:由于公司需求,进行了一次仓库迁移。迁移过程出现各种情况,迁移仅需要迁移数据库和本地储存的文件夹到新机器,启动 docker 即可。由于配置了域名访问,当时忘记了,导致每次都 400 500 报错,一直很懵,后来才发现,访问路径有问题,域名配置

TDEngine(暂时不建议)

创建 /home/dockerFiles/taos/taos.cfg 文件
命令创建并执行该容器

docker pull tdengine/tdengine:2.2.2.0
docker run --name tdengine
-p 16030:6030
-v /home/dockerFiles/taos/taos.cfg:/etc/taos/taos.cfg
-v /home/dockerFiles/taos/logs:/var/log/taos
-v /home/dockerFiles/taos/data:/var/lib/taos
-v /etc/localtime:/etc/localtime
-d tdengine/tdengine:2.2.2.0

1、客户端及服务端版本必须一致
2、FQDN方式访问,需要更改自身hosts及hostname
vim /etc/hosts 本地地址指向FQDN
vim /etc/taos/taos.cfg 配置FQDN地址
hostnamectl set-hostname FQDN 永久修改hostname为FQDN
vim /etc/hostname 修改hostname,上一步应该已经修改了
3、服务的方式启动:systemctl taosd start/service start taosd
4、启动失败,可以检查目录
cat /var/log/taos/xxxxx 检查错误日志
vim /var/lib/taos/dnode/dnodeEps.json 如果hostname错误,修改这里
5、检查参数:taosd -C
6、连接服务:taos -h FQDN -P 端口 -u 用户 -p 密码

注意事项:
1、客户端、服务端、其他节点必须时区一致
2、服务端需要同时开放TCP及UDP端口

▶ xxxxx

其他应用
NPS

创建 /home/dockerFiles/nps 文件夹,并放入各配置文件

配置文件点击下载,或前往项目主页下载 conf 文件夹文件

修改关键配置信息,如下【服务端配置文件详情】
命令创建并执行该容器

如果不想被占用80 443可以修改

http_proxy_port=10080
https_proxy_port=10443

配置信息,常修改如下 WEB 登录相关信息

web_username=xxx
web_password=xxx

docker pull ffdfgdfg/nps:v0.26.10
docker run --name=nps
–net=host
-v /home/dockerFiles/nps:/conf
-v /etc/localtime:/etc/localtime
-d --restart=always ffdfgdfg/nps:v0.26.10

▶ 语法含义:语句 --net=host 用于标明端口使用同系统
▶ 端口的开放注意防火墙端口放行 firewall-cmd --zone=public --add-port=40000-40100/tcp --permanent
▶ 无法直接访问管理接口8080,可以通过Nginx 进行转发
▶ Windows 客户端可以通过 install 注册服务:nps.exe install -server=host:port -vkey=xxxx -type=tcp,然后设置服务–>恢复–>选择重新启动服务和 0 天/分钟
▶ 本地临时启动,可以下载 nps.exe,并配置一句命令到 bat 文件即可:npc.exe -server=xxxxxx:8024 -vkey=xxxxxxxx -type=tcp

Halo

创建 /home/dockerFiles/halo/application.yaml 文件
使用数据库,则创建数据库 create database halodb character set utf8mb4 collate utf8mb4_bin;
命令创建并执行该容器

server:
port: 8090
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://172.17.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: 123456
halo:

Your admin client path is https://your-domain/admin-path

admin-path: admin

memory or level

cache: memory

docker pull halohub/halo:1.5.1
docker run --name halo
-p 8090:8090
-v /home/dockerFiles/halo:/root/.halo
-v /etc/localtime:/etc/localtime
-d --restart=always halohub/halo:1.5.1

▶ 注意考虑防盗及 Nginx 配置文件上传大小(默认 1MB,主题一般超过这个限制)

aliyun-webdav(项目无了)

获取阿里云盘 RefreshToken,登录网页版,控制台执行代码获取(如下)
命令创建并执行该容器

JSON.parse(window.localStorage[“token”]).refresh_token

docker pull zx5253/webdav-aliyundriver:2022-01-23
docker run --name aliyun
-p 18080:8080
-v /etc/localtime:/etc/localtime
-v /home/dockerFiles/aliyun/:/etc/aliyun-driver/
-v /etc/localtime:/etc/localtime
-e ALIYUNDRIVE_REFRESH_TOKEN=“Your Refresh Token”
-e ALIYUNDRIVE_AUTH_USER_NAME=“admin”
-e ALIYUNDRIVE_AUTH_PASSWORD=“admin”
-e JAVA_OPTS=“-Xmx1g”
-d zx5253/webdav-aliyundriver:2022-01-23

▶ 项目主页:https://github.com/zxbu/webdav-aliyundriver/
▶ 使用注意:大文件上传为分割上传,如进行 nginx 代理可能无法文件分割,导致出现BUG【建议不要使用 Nginx】

Windows
环境

Windows 启动 Redis、MySQL、Nginx 的命令如下,执行之前需要先做好文件挂载(文件下载)

记得添加磁盘 Shared-DockerSetting,默认密码都是 123456

docker run --name mysql -p 3306:3306 -v D:/DockerFiles/mysql/conf:/etc/mysql -v D:/DockerFiles/mysql/logs:/var/log/mysql -v D:/DockerFiles/mysql/data:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 -d --restart=always mysql:8.0

docker run --name redis -p 6379:6379 -v D:/DockerFiles/redis/redis.conf:/etc/redis/redis.conf -v D:/DockerFiles/redis/data:/data -d --restart=always redis:7.0.0 redis-server /etc/redis/redis.conf --appendonly yes

docker run --name nginx -p 80:80 -p 443:443 -v D:/DockerFiles/nginx/nginx.conf:/etc/nginx/nginx.conf -v D:/DockerFiles/nginx/logs:/var/log/nginx -v D:/DockerFiles/nginx/html:/etc/nginx/html -v D:/DockerFiles/nginx/cert:/etc/nginx/cert -d --restart=always nginx:1.21.6

测试环境docker化—容器集群编排实践(代码片段)

...部署的过程,按照上述做法已可以搭建测试环境。但是在实践过程中发现存在很多问题:在一台云主机上搭建多个模块,容易出现资源不足的情况(我们在实验过程中有台云主机好几次宕机,经常要删掉不用的镜像容器);部分... 查看详情

测试环境docker化—容器集群编排实践(代码片段)

...部署的过程,按照上述做法已可以搭建测试环境。但是在实践过程中发现存在很多问题:在一台云主机上搭建多个模块,容易出现资源不足的情况(我们在实验过程中有台云主机好几次宕机,经常要删掉不用的镜像容器);部分... 查看详情

实践docker部署(代码片段)

实践Docker部署一键Docker安装可以使用如下两种命令之一,注意容器内东八区时间配置curl-fsSLhttps://get.docker.com|bash-sdocker--mirrorAliyun或者curl-sSLhttps://get.daocloud.io/docker|sh常用服务1MySQL创建并更改配置文件/home/dockerFiles/mysql/conf/my.cn... 查看详情

学习实践k3s部署安装(代码片段)

1、docker安装安装dockersudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2sudoyum-config-manager--add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposudosed-i's+download.docker.com+mirrors.aliyun.com/docker-ce+'/etc/yum.repos.d/docker-ce.reposudoy... 查看详情

docker|docker常用应用部署(代码片段)

...几篇Docker的文章,大多数都是讲理论知识,没有实践。毛爷爷说过,“实践是检验真理的唯一标准”。为了听毛爷爷的话,我决定把Docker拉出来遛一遛。我们先来dockerrun方式部署,之后在感受docker-compos 查看详情

docker+jenkins+gitlab+django应用部署实践(代码片段)

一、背景介绍在互联网应用快速更新迭代的大背景下,传统的人工手动或简单脚本已经不能适应此变化,此时Devops为我们提供了良好的解决方案,应用好CI/CD可以大大的方便我们的日常工作,自动化快速的持续集成/持续交付为我... 查看详情

docker-容器部署consul集群(代码片段)

...习一下Docker。推荐一本学习Docker在线书籍:【Docker入门到实践】 查看详情

使用docker部署springboot并接入skywalking(代码片段)

...先介绍如何使用手动和docker的方式使用skywalking。在整个实践过程中查阅了大量文档,遇到了各种问题,这里将我自己的实践过程记录下来,希望对有同样需求的小伙伴提供一些帮助。1、skywal 查看详情

docker实践入门之六(代码片段)

最后一篇来举个栗子。样本项目一个基于bottle的pythonweb项目依赖mako暂时只考虑部署一个版本的例子项目有以下内容:+-appname.py+-config.json+-requirements.txt+-views+-index.htmlrequirements.txt的内容为:bottlemakovirtualen 查看详情

docker实践入门之六(代码片段)

最后一篇来举个栗子。样本项目一个基于bottle的pythonweb项目依赖mako暂时只考虑部署一个版本的例子项目有以下内容:+-appname.py+-config.json+-requirements.txt+-views+-index.htmlrequirements.txt的内容为:bottlemakovirtualen 查看详情

后端开发之光!django应用的容器化部署实践~(代码片段)

在此之前,我一直用uwsgi+virtualenv+nginx方式进行应用部署,操作起来比较麻烦,而且依赖于服务器上的Python版本,服务的管理方面单纯uwsgi+pid算不上特别麻烦但总没有dockercompose方便,无奈原本的服务器是32位系统的用不上docker,... 查看详情

docker入门实践之dokerfile编写(代码片段)

Dockerfile是一个文本格式的配置文件,通过dockerfile可以快速创建自定义镜像以适应测试,预发布,生产环境等各种应用部署镜像,一个好的dockerfile可以让我们的镜像更方便管理以及应用。一.Dokerfile的基本结构Dockfile是由一行行命... 查看详情

我的docker随笔35:jenkins服务部署(代码片段)

...网上几分钟即可部署的文章相比,本文更注重个人的实践记录。本文与前面的gitlab有一定的关联。二、技术小结gitlab有官方的Docker镜像。本文直接使 查看详情

我的docker随笔34:gitlab服务部署(代码片段)

...网上几分钟即可部署的文章相比,本文更注重个人的实践记录,故不会完整地将过程记录下来。二、技术小结gitlab有官方的Docker 查看详情

docker学习|第八篇:docker+jenkins单机部署springboot项目(代码片段)

...s以及Docker之后,自己进行了一些自动持续集成的相关实践。在这里记录一下。环境本文所需环境如下:CentOs7系统已安装Docker已安装配置完毕jenkins。包括全局工具配置中的JDK、Git、Maven实现思路通过在项目 查看详情

ngrinder压力测试实践--ngrinder介绍及部署(代码片段)

ngrinder介绍ngrinder是一款操作简单,功能强大的分布式压力测试工具,其可以简单快速的开始测试,也可以灵活根据实际需求设计场景完成压力测试工作。快速开始第一步:输入待测地址第二步:设定压测参数第三步:设定预约... 查看详情

docker实践(代码片段)

Docker—从入门到实践https://yeasy.gitbooks.io/docker_practice/content/dockerpulldockerrundockerstopxxdockerrmxxdockercontainerprunedockerimagelsdockerps    查看详情

面向容器日志的技术实践(代码片段)

背景自2013年dotCloud公司开源Docker以来,以Docker为代表的容器产品凭借着隔离性好、可移植性高、资源占用少、启动迅速等特性迅速风靡世界。下图展示了2013年以来Docker和OpenStack的搜索趋势。 容器技术在部署、交付等环节给... 查看详情