prefacio
En términos generales, el papel de la ventana acoplable es el siguiente
Para la mayoría de las aplicaciones, los desarrolladores pueden crear imágenes a través de Docker Builder, cargar imágenes a través de Docker Push, los usuarios pueden descargar imágenes a través de Docker Pull y ejecutar aplicaciones con Docker Run.
Los usuarios ya no necesitan preocuparse por cómo construir el entorno, cómo instalar y cómo resolver conflictos de biblioteca en diferentes distribuciones y, por lo general, no necesitarán consumir más recursos de hardware y no reducirán significativamente el rendimiento. Es decir, la realización de la estandarización, contenedor
El artículo es relativamente largo, si quieres buscar la instalación docker de un servicio específico, haz buen uso del directorio de la izquierda
Si desea usarlo fácilmente, puede leer este artículo del respondedor:
https://blog.csdn.net/2301_76154806/article/details/128781197
Actualizando continuamente...
La pluma y la tinta no son fáciles, regala una rosa a alguien, deja una fragancia en tu mano
1. mysql
Determine qué versión de mysql instalar, los nombres de los controladores de la versión 5 y la versión 8 son diferentes
1.1 Instalación de configuración por defecto
1. Descargar espejo
docker pull mysql: número de versión
Número de versión: generalmente,
la versión 5.7 u 8.5 es relativamente simple de instalar y se puede acceder de forma remota sin manual
2. Cree un contenedor de aplicaciones docker run --name some-mysql -d -t -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql: número de versión
'my-secret-pw' es la contraseña del usuario raíz de mysql que configuró
1.2 Instalación de configuración personalizada
Si necesita configurar algunos parámetros operativos de mysql, puede consultar los siguientes dos métodos.
1. [Recomendado] Crear un contenedor de aplicaciones con parámetros de configuración
docker run --name some-mysql -d -t -p 3306:3306 -e nombre del parámetro 1 = valor del nombre del parámetro 1 -e nombre del parámetro 2 = valor del nombre del parámetro 2 mysql: número de versión --character-set-server =utf8mb4
Ejemplo: docker run --name some-secret-mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7 --default_storage_engine=InnoDB --lower_case_table_names=1 --max_allowed_packet=50M --character-set-server= utf8mb4 --sql_mode=ESTRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Parámetros comunes - parámetros obligatorios 1. MYSQL_ROOT_PASSWORD=raíz
Establezca la contraseña de usuario root de mysql en root
Instalación de docker versión mysql8 ==========
docker pull mysql:8.0.18
docker run -di --name=mysql8 -p 3306:3306 -v /usr/local/tmp:/etc/mysql/tmp --privileged=true -e MYSQL_ROOT_PASSWORD=xxx mysql:8.0.18
docker exec -it mysql8 /bin/bash
mysql -uroot -pxxx
use mysql;
select host,user from user; 让root能远程连接,host修改为"%",如果是的就不用修改了
navicate for mysql 远程连接
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
修改密码为用不过期
ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
修改密码并指定加密规则为 mysql_native_password
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新权限
FLUSH PRIVILEGES;
这样就可以远程连接数据库了;
parámetros opcionales
MYSQL_DATABASE=mydb Después de crear el contenedor mysql, cree una nueva base de datos llamada mydb en mysql
MYSQL_USER=selton MYSQL_PASSWORD=seltonpassword Cree un usuario mysql llamado selton y establezca su contraseña como seltonpassword Este usuario tiene autoridad de administrador para todas las bases de datos creadas por el parámetro MYSQL_DATABASE
--character-set-server=utf8mb4 es equivalente a la configuración de algunos pares clave-valor en nuestro archivo de configuración cnf de mysql.Aquí hay que seleccionar character-set-server, que es el conjunto de caracteres predeterminado creado por mysql, como utf8mb4 Si usa navicat La herramienta de conexión crea la base de datos.Si no se selecciona el tipo de carácter de la base de datos, se usará el tipo de carácter utf8mb4 establecido anteriormente.
--sql_mode = strict_trans_tables, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_Engine_Substitution en la versión 5.7, hay una configuración de configuración solo con solo la columna de la columna de SELECT SELECT con el final de la columna de la columna de SELECT. de Groupby Dentro, de lo contrario fallará Esta condición es demasiado estricta y no se agrega en circunstancias normales, por lo que la configuración anterior debe agregarse en circunstancias normales.
Si desea ver los parámetros configurables completos, ejecute el siguiente comando, recuerde reemplazar la etiqueta con la versión de mysql que descargó
docker run -it --rm mysql:tag --verbose --help
2. Asigne el archivo de configuración local al contenedor de la aplicación
docker run --name some-mysql-p 3306:3306-v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
Cree un archivo de configuración de este tipo my.cnf en el host del contenedor (use este nombre) y luego reemplace /my/custom con la ruta absoluta de la carpeta donde se encuentra el archivo de configuración my.cnf en el host, para que el contenedor mysql Al crear, todas las configuraciones en my.cnf se usarán para crear mysql.De manera similar, estas configuraciones en my.cnf se pueden configurar usando el valor de -e parámetro 1 = parámetro 1
Adjunto : configuración común de mysql
port = 3306 #默认
pid-file = /data/mysql/mysql.pid
basedir = /usr/local/mysql/ #程序安装目录
symbolic-link = 0 #多客户访问同一数据库,该选项默认开启
tmpdir = /usr/local/mysql/tmp/ #此目录被 MySQL用来保存临时文件
open_files_limit = 65535 #打开时,和max_connections对比,取大数
datadir = /var/lib/mysql #数据库目录
log-error = /var/lib/mysql/error.log
slow_query_log=on #开启慢查询日志相关
long_query_time=2 #默认10秒
slow_query_log_file = /var/log/mysql/slow_query.log #慢查询日志路径
log-queries-not-using-indexes = 1 #记录没有使用索引的sql
socket=/var/lib/mysql/mysql.sock #该条配置需在[client]段同时配置
default_storage_engine=InnoDB
innodb_file_per_table = on #InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间
innodb_buffer_pool_size=4G #生产中要改,建议为操作系统内存的70%-80%,需重启服务生效
skip_name_resolve = on #忽略主机名解析,提高访问速度(注意配置文件中使用主机名将不能解析)
lower_case_table_names = 1 #忽略表单大小写
character-set-server=utf8mb4 #设定默认字符为utf8mb4
Nota: si el volumen de datos se usa para asignar el archivo de datos, la mayor parte de la configuración de mysql, incluida la contraseña, sigue al archivo de datos y los comandos creados por Docker ya no funcionan.
2. gato
servidor de aplicaciones (java)
2.1 Instalación
1. Descargue la imagen docker pull tomcat: número de versión
Las versiones 7, 8 y 9 ahora se usan con más frecuencia
2. Crear un contenedor de aplicaciones
Si desea probarlo, ejecute el siguiente comando, visite ip: 8080, visitará la página de inicio de tomcat
docker run --name some-tomcat -p 8080:8080 -d -t tomcat:número de versión
Sin embargo, generalmente Tomcat se usa para publicar una aplicación web, por lo que si desea publicar una aplicación web, haga lo siguiente
Si obtiene una guerra, descomprímala en una carpeta, luego cambie el nombre de la carpeta a ROOT
docker run --name some-tomcat -p 8080:8080 -d -t -v /root/selton/mywebapp:/usr/local/tomcat/webapps tomcat:número de versión
/root/selton/mywebapp, esta carpeta contiene su carpeta ROOT
configuración personalizada
Si necesita modificar algunos archivos de configuración en el directorio conf de tomcat, debe copiar el tomcat original
3. gog
servidor privado git
Crea un nuevo archivo docker-compose.yml
contenido de entrada
versión: '2' servicios: Mysql: imagen: gogs/gogs:0.11.79 container_name: gogs puertos: - "9876:22" - "9092:3000"
Entonces docker-compose up -d comienza
Acceder a ip local: 8080
esta configuración
ports:
- "8070:22"
- "8080:3000"
Asigne los puertos 22 y 3000 en el contenedor a los puertos 8070 y 8080 de la máquina host respectivamente
Es decir, debemos asegurarnos de que la máquina host, es decir, la máquina local, no ocupe los puertos 8070 y 8080 de la máquina que genera docker-compose.yml
gogs está configurado en la página web; vale la pena aprender de él
Asignar el puerto 3000 al puerto 80 con docker es riesgoso Específicamente, al reiniciar, se informa un error y no se puede iniciar el permiso de enlace 80 denegado.
En este momento, el puerto en el archivo de configuración ini en realidad debería ser 3000, y luego Docker asigna la máquina host 80 a este 3000, pero el puerto interno no debería ser 80
ruta del archivo de configuración de la versión de gogs docker /data/gogs/conf/app.ini
https://github.com/gogs/gogs/issues/3503
interfaz de instalación
en primer lugar
configuración de la base de datos
ver directamente el nombre de la base de datos
Necesitamos tener una conexión de base de datos a la que se pueda acceder externamente, y hay una base de datos, solo use el nombre del ejemplo -> gogs, necesitamos crear una nueva base de datos llamada gogs en la conexión de la base de datos
如果您使用 MySQL,请使用 INNODB 引擎以及 utf8_general_ci 字符集
Necesita modificar la IP del host de la base de datos, 127.0.0.1 se cambia a la IP expuesta por la base de datos
Rellene la contraseña de usuario de la base de datos
El siguiente paso es aplicar la configuración básica
Modificar el nombre de dominio a la ip de la maquina donde acabamos de instalar gogs
A continuación, modifique la URL
Modifique el localhost de la url de la aplicación a la ip de la máquina donde está instalado gogs
Tenga en cuenta que si se usa la ventana acoplable aquí para la asignación de puertos, cambie 3000 al puerto asignado
La siguiente es la sección de configuración opcional
Configuración del servicio de correo independientemente
Haga clic en Servidor y otras configuraciones de servicio
Desmarque Habilitar servicio de código de verificación
Marque Prohibir a los usuarios el registro automático para iniciar las restricciones de acceso de inicio de sesión
Cancelar el registro automático de usuarios debe significar que necesitamos un superusuario, y el superusuario crea una cuenta y distribuye
Haga clic en la configuración de la cuenta de administrador
Ingrese la información básica, la dirección de correo electrónico se puede ingresar casualmente
Ya ha terminado, haga clic para instalar ahora
version: '2'
services:
Mysql:
image: mysql:5.6
container_name: gogsMysql5.6
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
volumes:
- /root/gogs/mysqlConf:/etc/mysql/conf.d
- /root/gogs/createSh:/docker-entrypoint-initdb.d
Gogs:
depends_on:
- Mysql
image: gogs/gogs:0.11.79
container_name: gogs
ports:
- "8070:22"
- "8080:3000"
volumes:
- /var/gogs:/data
4. existente
从日志 2019-12-09 10:25:49,214 JIRA-Bootstrap INFO [cajconfig.database.SystemDatabaseConfigurationLoader] Lectura de la configuración de la base de datos desde /var/jira/dbconfig.xml
可以看到jira启动会从这个配置中读取数据库配置
在宿主机中新建配置文件
<?xml version="1.0" encoding="UTF-8"?>
<jira-database-config>
<name>defaultDS</name>
<delegator-name>default</delegator-name>
<database-type>mysql</database-type>
<jdbc-datasource>
<url>jdbc:mysql://10.2.132.13:3306/jira?useUnicode=true&characterEncoding=UTF8&sessionVariables=storage_engine=InnoDB
</url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<username>root</username>
<password>root</password>
<!--以下参数可以不用配置 -->
<pool-min-size>20</pool-min-size>
<pool-max-size>20</pool-max-size>
<pool-max-wait>30000</pool-max-wait>
<validation-query>select 1</validation-query>
<min-evictable-idle-time-millis>60000</min-evictable-idle-time-millis>
<time-between-eviction-runs-millis>300000
</time-between-eviction-runs-millis>
<pool-max-idle>20</pool-max-idle>
<pool-remove-abandoned>true</pool-remove-abandoned>
<pool-remove-abandoned-timeout>300</pool-remove-abandoned-timeout>
<pool-test-while-idle>true</pool-test-while-idle>
<validation-query-timeout>3</validation-query-timeout>
</jdbc-datasource>
</jira-database-config>
修改相关数据库配置
docker run -p 10909:8080 --name some-jira -d -e TZ='Asia/Shanghai' -v /my/conf: haxqer/jira
5. clickhouse
docker run -dit --name some-clickhouse -e CLICKHOUSE_DB=test1 -e CLICKHOUSE_USER=root -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 -e CLICKHOUSE_PASSWORD=hexin -p 9000:9000 -p 8123:8123 clickhouse/clickhouse-server
用户名root,密码hexin,连接端口8123
6. redis
在Reids 4.x之后,Redis新增了模块功能特性,通过外部拓展,可以实现新的Redis命令,通过写c语言并编译出.so文件,可实现代码执行漏洞。
针对未授权或弱口令的Redis服务,攻击者通过构造特定请求,成功利用漏洞可在目标服务器上执行任意命令,风险极大。攻击者常常使用这个漏洞将用户的服务器变为"肉鸡","矿机"
修复的方式有很多种, 最有效的方式是redis仅在内网环境中使用,最简单的方式是redis连接的时候指定密码
下面是docker创建redis容器并指定密码
尽管现在已经有了6.x版本,但是它是redis有史以来最大的一个版本,所以即使它是稳定的,也要小心,在投入生产之前测试工作负载
docker pull redis
docker run --name some-redis -d -it -p 16379:6379 redis --requirepass "u}J#D=>MryWf" --appendonly yes
如果想要持久化redis中的数据,添加数据卷映射
docker run --name some-redis -d -it -v /your/host/want/store/redisdata/path:/data -p 16379:6379 redis --requirepass "u}J#D=>MryWf" --appendonly yes
7. zookeeper
docker pull zookeeper
docker network create app-bridge --driver bridge
docker run --name some-zookeeper --network app-bridge -e ALLOW_ANONYMOUS_LOGIN=yes -d -it -p 2181:2181 bitnami/zookeeper
8. kafka
注意: 此kafka的安装依赖与zookeeper的安装
#节点1
docker run -d --name=kafka2 \
-p 9092:9092 \
--network app-bridge \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-e KAFKA_CFG_ZOOKEEPER_CONNECT=81.70.199.213:2181 \
-e KAFKA_BROKER_ID=2 \
-e KAFKA_HEAP_OPTS="-Xmx180m -Xms180m" \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://81.70.199.213:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
bitnami/kafka
# 节点2
docker run -d --name=kafka3 \
-p 9093:9092 \
--network app-bridge \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-e KAFKA_CFG_ZOOKEEPER_CONNECT=81.70.199.213:2181 \
-e KAFKA_BROKER_ID=3 \
-e KAFKA_HEAP_OPTS="-Xmx180m -Xms180m" \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://81.70.199.213:9093 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
bitnami/kafka
ALLOW_PLAINTEXT_LISTENER=yes:允许使用PLAINTEXT侦听器
KAFKA_CFG_ZOOKEEPER_CONNECT:zookeeper集群地址,多节点,分割
KAFKA_BROKER_ID:节点id,用来指定 Kafka 集群中 broker 的唯一标识,默认值为 -1。如果没有设置,那么 Kafka会自动生成一个
KAFKA_ADVERTISED_LISTENERS:绑定公网 IP 供外部客户端使用
KAFKA_LISTENERS:绑定私网 IP 地址供 broker 间通信使用
9. dubbo-admin
docker run --name some-dubbo-admin -p 8080:8080 -d -it -e admin.registry.address=zookeeper://selton.cn:2181 -e admin.config-center=zookeeper://selton.cn:2181 -e admin.metadata-report.address=zookeeper://selton.cn:2181 apache/dubbo-admin
10. sonar
docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube
注意: 保持服务器剩余内存足够,默认情况下,sonarqube大约占用1.5G内存
打开http://yourhost:900/,点击"Log in"
登录账号:admin 密码:admin
11. flink
docker-compose.yml
version: "2.2"
services:
jobmanager:
image: flink:latest
ports:
- "18001:8081"
command: jobmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager:
image: flink:latest
depends_on:
- jobmanager
command: taskmanager
scale: 1
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 8
12. postgres
docker run --name some-postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres -d postgres
13. fastDFS
docker pull delron/fastdfs
docker run -d --network=host --name some-tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
#注意: 需要暴露22122端口 23000 否则下面的创建会有问题 8888端口也需要暴露 将来通过这个端口访问图片
#selton.cn替换成你的公网host或者局域网host
docker run -d --network=host --name some-storage -e TRACKER_SERVER=selton.cn:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
14. solr
在宿主机中执行如下命令
mkdir solrdata
sudo chmod 777 solrdata
docker run --name mall-solr -d -p 8983:8983 -v "$PWD/solrdata:/var/solr" solr:8
// 参数详解
run 运行容器
-d 后台运行
-p 容器端口和宿机端口映射
– name 容器名称
创建一个名为mall_core的核心
docker exec -it mall-solr bin/solr create_core -c mall_core
这个命令是在宿主机上执行的, 会让宿主机向容器发送一条指令
bin/solr create_core -c mall_core
这个指令,是使用solr的脚本, 创建一个名称为mall_core的核心
出现 Created new core ‘' 即创建
docker exec --user=root -it mall-solr bash
cp /opt/solr-8.10.1/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-8.10.1.jar /opt/solr-8.10.1/server/solr-webapp/webapp/WEB-INF/lib
在宿主机的solrdata中
vi /data/mall_core/conf/managed-schema
<fieldType name="smartcn" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
</fieldType>
重启docker