Docker 常用容器安装
-
- 1. CentOS7以上版本安装docker
- 2. 安装Mysql
- 3. 安装Redis
- 4. 安装minio
- 5. 安装FTP
- 6. 安装Nginx+FTP访问静态资源
-
- 6.1 nginx配置FTP (容器里不能使用localhoat,必须使用具体的ip地址才行)
- 6.1 nginx反向代理
- 7. 安装Nacos
// 查询防火墙当前开放的端口
firewall-cmd --list-ports// 防火墙永久设置10011端口开放
firewall-cmd --add-port=10011/tcp --permanen// 刷新
firewall-cmd --reload
systemctl restart firewalld// 防火墙永久设置10011端口关闭
firewall-cmd --zone=public --remove-port=8094/tcp --permanent
1. CentOS7以上版本安装docker
首先确认当前操作系统没有安装docker
sudo yum list installed|grep docker-ce
如果已经安装,请使用先卸载了
sudo yum remove docker-ce
首先,使用root权限将yum更新到最新版本
sudo yum update
然后,安装必要的依赖软件包
sudo yum install -y yum-utils
sudo yum install -y device-mApper-persistent-data
sudo yum install -y lvm2
添加Docker官方的yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
开始安装docker
sudo yum update
sudo yum install -y docker-ce
启动Docker服务
sudo systemctl start docker
测试Docker是否安装成功(如果展示docker的参数说明,则表示docker安装成功。)
docker --help
进入docker容器命令
docker exec -it 容器名称 bash
2. 安装Mysql
拉取镜像
docker pull mysql:5.7
使用如下命令启动并且配置docker中的mysql
docker run -p 3306:3306 --name mysql \
-e MYSQL_ROOT_PASSWORD=mysql数据库的密码 \
-d mysql:5.7
通过 docker ps 查看mysql是否启动,启动成功后 就可以外网访问了。
3. 安装Redis
拉取镜像
docker pull redis
创建本地挂载目录文件
mkdir -p /server/redis/conf
touch /server/redis/conf/redis.conf
创建容器并指定映射端口和将redis的配置文件挂载到外面 方便修改
docker run -p 6379:6379 --name redis \
-v /server/redis/data:/data \
-v /server/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
设置redis密码:
vim /server/redis/conf/redis.conf
redis.conf文件中加入如下代码:
requirepass 1234567(你的密码)
重启redis docker容器 :
docker restart redis
4. 安装minio
// 拉取minio镜像
docker pull minio/minio// 创建配置文件和文件存储挂载目录
mkdir -p /server/minio/config
mkdir -p /server/minio/data// 启动minio
docker run -p 8095:8095 -p 8094:8094 \--net=host \--name minio \-d --restart=always \-e "MINIO_ACCESS_KEY=admin" \-e "MINIO_SECRET_KEY=123456" \-e "MINIO_SERVER_URL=http://47.102.144.221:8095" \-v /server/minio/data:/data \-v /server/minio/config:/root/.minio \minio/minio server \/data --console-address ":8094" -address ":8095"
启动参数说明:
MINIO_ACCESS_KEY: 账号
MINIO_SECRET_KEY: 密码
MINIO_SERVER_URL: http://宿主机+宿主机映射的8095端口 ,如果不配置改环境变量分享文件链接,会出现无法访问;
5. 安装FTP
拉取镜像
docker pull fauria/vsftpd
创建容器并运行
docker run -d -v <本机挂载目录>:/home/vsftpd \
-p 20:20 \
-p 21:21 \
-p 21100-21110:21100-21110 \
-e FTP_USER=<登录名> \
-e FTP_PASS=<登录密码> \
-e PASV_ADDRESS=<ip address of your server> \
-e PASV_MIN_PORT=21100 \
-e PASV_MAX_PORT=21110 \
--name <自定义容器的名称> \
--restart=always \
fauria/vsftpd
创建容器案例
docker run -d -v /home/vsftpd:/home/vsftpd \
-p 20:20 \
-p 21:21 \
-p 21100-21110:21100-21110 \
-e FTP_USER=quick \
-e FTP_PASS=123456 \
-e PASV_ADDRESS=47.102.144.221 \
-e PASV_MIN_PORT=21100 \
-e PASV_MAX_PORT=21110 \
--name vsftpd \
--restart=always \
fauria/vsftpd
filezilla连接FTP
按照如下配置 常规 和 传输设置 选项
6. 安装Nginx+FTP访问静态资源
# 1. 拉取Nginx镜像
docker pull nginx:latest# 2. 创建挂载目录
mkdir -p /server/nginx/conf
mkdir -p /server/nginx/log
mkdir -p /server/nginx/html# 3. 生成容器
docker run --name nginx -p 8093:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /server/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /server/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /server/nginx/# 停止并删除刚刚正在的容器(上述操作只是为了获取配置文件而且)# 4. 重新创建容器并且 挂载相关文件
docker run \
-p 8093:80 \
--name nginx \
-v /server/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /server/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /server/nginx/log:/var/log/nginx \
-v /server/nginx/html:/usr/share/nginx/html \
-v /home/vsftpd/quick/:/home/vsftpd/quick \
-d nginx:latest
-v /home/vsftpd/quick/:/home/vsftpd/quick 将本地 FTP 目录 挂载到 容器中的目录 (重点) , 获取部署前端项目的时候都需要指定挂载本地路径
6.1 nginx配置FTP (容器里不能使用localhoat,必须使用具体的ip地址才行)
配置参数说明
server {listen 8093; #如果没有域名,端口就不能80charset utf-8; #设置显示字符集server_name localhost; # 容器里不能使用localhoat,必须使用具体的ip地址才行location / {root /var/ftp/; #指定ftp目录autoindex on; #自动显示目录autoindex_exact_size on; #显示文件大小,on 则表示打开显示文件的实际大小,单位是 bytes;off 关闭后显示文件的大概大小,单位为 KB 或者 MB 或者 GBautoindex_localtime on; #显示文件时间,显示的文件时间为 GMT 时间,改为 on 后,显示的文件时间为文件的服务器时间}
}
如果访问出现 403 的解决方法
nginx + ftp 完整配置
user root;
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;include /etc/nginx/conf.d/*.conf;# FTP-quickserver {listen 80;charset utf-8;server_name 47.102.144.221;location / {root /home/vsftpd/quick/;autoindex on;autoindex_exact_size on;autoindex_localtime on;}}}
6.1 nginx反向代理
配置参数说明示例1
upstream upstream_name{server 47.102.144.221:8082; # 代理到指定的服务}# 代理server {listen 8080; # 配置监听的端口server_name 47.102.144.221; # 配置基于名称的虚拟主机,可以支持正则表达式,或通配符如 *.domain.com;location / {proxy_pass http://upstream_name; # 设置后端代理服务器的地址proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
配置参数说明示例2
// ssl证书配置 server{listen 80;listen 443 ssl http2;ssl_certificate /etc/nginx/conf.d/fullchain.crt;ssl_certificate_key /etc/nginx/conf.d/private.pem;ssl_session_timeout 1d;ssl_session_cache shared:MozSSL:10m;ssl_session_tickets off;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;ssl_prefer_server_ciphers off;# 开启OCSP staplingssl_stapling on;ssl_stapling_verify on;}// 前端代理server {listen 80;charset utf-8;server_name 114.115.141.227;location / {root /server/tracking-suci/;index index.html;}
}// 后端代理server {listen 443;charset utf-8;server_name api.weisaisikeji.com;location / {proxy_pass http://114.115.141.227:10000;}
}// 容器创建docker run \
-p 80:80 \
-p 443:443 \
--name nginx \
-v /server/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /server/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /server/nginx/log:/var/log/nginx \
-v /server/nginx/html:/usr/share/nginx/html \
-v /server/tracking-suci:/server/tracking-suci \
-d nginx:latest// ssl证书写到容器内docker cp /server/nginx/conf/conf.d/fullchain.crt 5fba458300ec:/etc/nginx/conf.d/fullchain.crt
docker cp /server/nginx/conf/conf.d/private.pem 5fba458300ec:/etc/nginx/conf.d/private.pem
7. 安装Nacos
(1) 拉取镜像
docker pull nacos/nacos-server
(2) 挂载目录,用于映射到容器,目录按自己的情况创建
mkdir -p /server/nacos/logs/ #新建logs目录
mkdir -p /server/nacos/init.d/ #新建配置目录
vim /server/init.d/custom.properties #修改配置文件
(3) mysql新建nacos的数据库,并执行脚本 sql脚本地址如下
https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql
(4) 修改配置文件custom.properties
server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://xx.xx.xx.x:3306/nacos_devtest_prod?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=user
db.password=passnacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
nacos.naming.distro.taskDispatchThreadCount=1
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.naming.expireInstance=true
(5) 启动容器
docker run \
--name nacos -d \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /mydata/nacos/logs:/home/nacos/logs \
-v /mydata/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
nacos/nacos-server