Docker 常用容器安装

2023-09-25 4 0

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
代码编程
赞赏

相关文章

eclipse中更改SVN账号的步骤
eclipse中配置tomcat插件的步骤
eclipse中安装svn插件的步骤
按月统计员工登录情况及日期函数的运用
软件项目版本号设置
TexturePacker 图片打包工具