docker部署常见环境
- 1、portainer容器可视化管理
- 2、MySql环境
- 3、redis环境
- 4、阿里巴巴流量卫兵sentinel-dashboard
- 5、Tomcat
- 6、nacos
- 7、apollo
- 8、nginx
- 1.找到合理的数据挂载点
- 2.创建目录
- 3.挂载映射
- 部署脚本
- 8、更多服务部署参考
选择合适的数据挂载位置:一般选取容量大的硬盘块:
df -h
1、portainer容器可视化管理
容器构建命令:
$ docker search portainer
$ docker pull portainer:latest
$ docker run \
-d \
-p 9000:9000 \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /data/docker_data_volume_list/portainer_data:/data \
-v /data/docker_data_volume_list/portainer_web/public:/public \
--name prtainer-test \
portainer/portainer
2、MySql环境
账号密码:root/123456
容器构建命令:
$ docker search mysql
$ docker pull mysql:8.0.19
$ docker run \
-d \
-p 3306:3306 \
--restart=always \
--name mysql-test \
-v /data/docker_data_volume_list/mysql/log:/var/log/mysql \
-v /data/docker_data_volume_list/mysql/data:/var/lib/mysql \
-v /data/docker_data_volume_list/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.19
3、redis环境
密码:zlHjV0tdO5yNYMhbrCfJE1ZA6I2na
$ docker search redis
$ docker pull redis:latest
$ docker run \
-d \
--name redis-test \
-p 6379:6379 \
--restart=always \
-v /data/docker_data_volume_list/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /data/docker_data_volume_list/redis/conf/data:/data \
redis \
--requirepass "zlHjV0tdO5yNYMhbrCfJE1ZA6I2naR"
4、阿里巴巴流量卫兵sentinel-dashboard
地址:http://ip:8858
sentinel/sentinel
容器构建命令:
$ docker search sentinel-dashboard
$ docker pull bladex/sentinel-dashboard
$ docker run \
-d \
-p 8858:8858 \
--name sentinel-test \
--restart=always \
bladex/sentinel-dashboard:latest
5、Tomcat
$ docker pull tomcat:jre11-openjdk-slim-buster
$ docker run \
--rm/--restart=always \ # 二选一
-d \
-p 8080:8080 \
--name test \
-v /home/docker_volume_list/tomcat_volume/war_dir:/usr/local/tomcat/webapps \
-v /home/docker_volume_list/tomcat_volume/log_dir:/usr/local/tomcat/logs \
tomcat:jre11-openjdk-slim-buster
6、nacos
部署时注意版本问题,并且开放心跳监测的端口7848、8848、9848
数据库先建表:https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql
$ docker search nacos/nacos-server
$ docker pull nacos/nacos-server
$ docker run \
--rm/--restart=always \
-d \
--name nacosByJHL \
# -p 7848:7848 \
# -p 8848:8848 \
# -p 9848:9848 \
--network host \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.8.8 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=woaini \
nacos/nacos-server
访问地址:http://ip:8848/nacos
nacos/nacos
报错信息
/usr/local/jdk-11.0.8/bin/java -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/docker_data_volume_list/nacos_test_app/nacos-server-1.3.1/nacos/logs/java_heapdump.hprof -XX:-UseLargePages -Dnacos.member.list= -Xlog:gc*:file=/data/docker_data_volume_list/nacos_test_app/nacos-server-1.3.1/nacos/logs/nacos_gc.log:time,tags:filecount=10,filesize=102400 -Dloader.path=/data/docker_data_volume_list/nacos_test_app/nacos-server-1.3.1/nacos/plugins/health,/data/docker_data_volume_list/nacos_test_app/nacos-server-1.3.1/nacos/plugins/cmdb -Dnacos.home=/data/docker_data_volume_list/nacos_test_app/nacos-server-1.3.1/nacos -jar /data/docker_data_volume_list/nacos_test_app/nacos-server-1.3.1/nacos/target/nacos-server.jar --spring.config.location=classpath:/,classpath:/config/,file:./,file:./config/,file:/data/docker_data_volume_list/nacos_test_app/nacos-server-1.3.1/nacos/conf/ --logging.config=/data/docker_data_volume_list/nacos_test_app/nacos-server-1.3.1/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000080000000, 2147483648, 0) failed; error='Not enough space' (errno=12)# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2147483648 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /data/docker_data_volume_list/nacos_test_app/nacos-server-1.3.1/nacos/bin/hs_err_pid4305.log
内存不足问题解决,查看内存:free -h
7、apollo
docker部署文档地址
1.先起一个临时容器,将启动脚本复制出来
2.新建数据库表(docker部署文档地址中自取)
3.更改数据库连接配置
# apollo config db info
apollo_config_db_url="jdbc:mysql://192.168.8.8:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_config_db_username=root
apollo_config_db_password=woaini
# apollo portal db info
apollo_portal_db_url="jdbc:mysql://192.168.8.8:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
apollo_portal_db_username=root
apollo_portal_db_password=woaini
4.注意:一定要以主机模式启动,不然apollo自己的eureka服务协调中心无法正常协调apollo的各个服务(主要指config service、admin service、Portal service之间的协调)
$ docker pull nobodyiam/apollo-quick-start
$ docker run \
--rm/--restart=always \
--name apolloByJHL \
--network host \
-v /docker_volume/demo.sh:/apollo-quick-start/demo.sh \
nobodyiam/apollo-quick-start \
bash -c "/apollo-quick-start/demo.sh start && tail -f /dev/null"
报错:WARNING: Published ports are discarded when using host network mode
原因:
docker启动时指定--network=host或-net=host,如果还指定了-p或-P,那这个时候就会有此警告,并且通过-p或-P设置的参数将不会起到任何作用,端口号会以主机端口号为主,重复时则递增。
解决:
解决的办法就是不指定-p参数,或者使用docker的其他网络模式,例如--network=bridge,这样就可以解决问题
eureka地址:http://ip:8080
admin地址:http://ip:8090
Apollo UI 界面:http://ip:8070/
apollo/admin
8、nginx
1.找到合理的数据挂载点
查容量df -h 挂载到容量最大的目录
2.创建目录
mkdir -p /最大容量挂载点/docker_data_volume_list/nginx/conf.d
mkdir -p /最大容量挂载点/docker_data_volume_list/nginx/html/index.html
mkdir -p /最大容量挂载点/docker_data_volume_list/nginx/html/
3.挂载映射
vim /最大容量挂载点/docker_data_volume_list/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
vim /最大容量挂载点/docker_data_volume_list/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
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;
include /etc/nginx/conf.d/*.conf;
}
vim /最大容量挂载点/docker_data_volume_list/nginx/html/index.html
Welcome to nginx!
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to
nginx.org.
Commercial support is available at
nginx.com.
Thank you for using nginx.
部署脚本
$ docker search nginx
$ docker pull docker.io/nginx
$ docker run \
-d \
--name nginx-test \
--rm \
-p 9111:80 \
# 映射容器内nginx默认配置文件目录
-v /最大容量挂载点/docker_data_volume_list/nginx/conf.d:/etc/nginx/conf.d \
# 映射主配置文件
-v /最大容量挂载点/docker_data_volume_list/nginx/nginx.conf:/etc/nginx/nginx.conf \
# 映射日志文件
-v /最大容量挂载点/docker_data_volume_list/nginx/log:/var/log/nginx \
# 映射静态文件
-v /最大容量挂载点/docker_data_volume_list/nginx/html:/usr/share/nginx/html \
docker.io/nginx
8、更多服务部署参考
docker