linux(centos7) docker安装mysql,redis,nginx,idea docker插件部署前后端分离项目

一、安装docker

1.更新yum包,并安装需要的软件包,yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖

yum -y upgrade
yum install -y yum-utils device-mapper-persistent-data lvm2

2.设置 yum 源(以下任选其一)

yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)

 备注:安装前一定卸载干净之前安装过的docker(没安装过不用执行以下命令)

yum remove docker  docker-common docker-selinux docker-engine

3.查看docker可用版本

yum list docker-ce --showduplicates | sort -r

4.选择版本安装docker:yum install docker-ce-版本号

yum -y install docker-ce-17.12.1.ce-1.el7.centos

5.启动docker

systemctl start docker

#设置开机自启
systemctl enable docker  

二、安装 mysql

1.拉取mysql5.7镜像(mysql版本自行选择)

docker pull mysql:8

1.1如果拉取镜像出现(Error response from daemon: missing signature key)这个报错,这时就需要配置etc/docker/目录下的daemon.json文件,如果目录下这个文件不存在,就在这个目录下创建该文件,主要功能是更换阿里镜像源(daemon.json 文件是 Docker 的守护进程配置文件,用于配置 Docker 守护进程的行为和选项。在这个文件中,你可以指定各种 Docker 守护进程的配置选项,例如镜像源、存储驱动、日志配置等)内容如下

{
    "registry-mirrors": [
        "https://your-aliyun-mirror.mirror.aliyuncs.com"
    ]
}

然后必须重启docker服务,这个配置才能生效

systemctl restart docker

2.查看拉取的mysql镜像,确保镜像拉取成功并且存在

docker images

d3eaf1379d0c42f9a842608c026f5394.png

3.创建宿主机映射目录 (容器文件映射到当前宿主机,不用直接操作mysql容器的配置文件)

mkdir -p /root/mysql/data /root/mysql/logs /root/mysql/conf

进到root/mysql/conf下创建mysql配置文件(修改mysql配置时,改当前创建的文件即可)

cd /root/mysql/conf
touch my.cnf

修改my.cnf文件

[mysqld]
#设置日志时间与系统时间一致(否则就算容器时间与系统时间一致,日志时间还是晚8小时,所以必须配置)
log_timestamps=SYSTEM
sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

4.创建mysql容器,将数据,日志,配置文件映射到宿主机

如果启动容器失败是文件权限问题 docker run 后可配置上参数 --privileged=true

-v命令是将容器内部配置文件挂载到宿主机 (后续修改配置文件直接修改绑定的宿主机文件,不用进入到容器内部修改,因为很麻烦,肯定没有我们操作宿主机快)

-p命令是将容器内的端口映射到宿主机(这样就能通过宿主机ip(就是服务器公网ip)+映射的这个端口直接跟当前容器通信,后续再聊容器相互之间的通信)

这两个基本命令,容器比较常用,后续还会用到,就不再阐述了

-v /etc/localtime:/etc/localtime 系统时间挂载到容器,解决容器时间晚8小时的问题

docker run -p 3306:3306 -d -it --name mysql --restart=always -v /etc/localtime:/etc/localtime -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=设置的密码 mysql:8

5.用工具测试连接

如果连接不上(确保防火墙是否端口开放,确保服务器安全策略组端口是否开放)

三、安装redis

1.拉取redis镜像,不标注镜像版本的话,默认拉取最新稳定版latest

docker pull redis

2.创建挂载目录及配置文件

mkdir -p /root/redis/data
cd /root/redis
touch redis.conf

3.编辑redis配置文件(复制以下内容到redis.conf,注意修改文件内redis启动密码)

protected-mode no
port 6379
tcp-backlog 511

#设置redis密码
requirepass 你的密码

timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 30
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes

4.启动redis容器

--log日志处理

redis redis-server /etc/redis/redis.conf 加载配置文件启动

--appendonly yes 开启redis持久化

docker run --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 -d -it --name redis --restart=always -v /etc/localtime:/etc/localtime -v /root/redis/redis.conf:/etc/redis/redis.conf -v /root/redis/data:/data redis redis-server /etc/redis/redis.conf  --appendonly yes

5.用工具测试连接

如果连接不上(确保防火墙是否端口开放,确保服务器安全策略组端口是否开放)

三、安装nginx(重中之重,一定仔细一步步走)

1.拉取镜像并创建nginx宿主机挂载目录

docker pull nginx
# 创建挂载目录
mkdir -p /root/nginx/conf
mkdir -p /root/nginx/log
mkdir -p /root/nginx/html

2.复制启动容器内的配置文件到宿主机,并删除容器重新设置参数再启动

# 生成容器
docker run --name nginx -p 80:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /root/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /root/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /root/nginx/


# 删除正在运行的nginx容器
docker rm -f nginx

#设置好参数重新运行
docker run -p 80:80 -p 443:443 -d -it --name nginx --restart=always -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/conf/conf.d:/etc/nginx/conf.d -v /root/nginx/log:/var/log/nginx -v /root/nginx/html:/usr/share/nginx/html nginx:latest

3.至此通过宿主机ip(安全策略组以及防火墙80和443端口一定要开放)已经能访问到nginx页面。后面再聊通过配置文件部署前端dist以及代理后端接口

a42def2058fd41debb7e0978c8573610.png

 四、配置远程访问docker的密钥,方便后续通过IDEA docker插件来操作docker(方便nginx挂载,不用次次命令到容器内部操作)不配置密钥直接开放端口访问的话,服务器会被攻击的体无完肤,说多了都是泪

原文地址:https://blog.csdn.net/qq_2453548221/article/details/126260893原文作者写的非常详尽,大家可以先去看看(以下是搬运的原文)

1.一定细心一步步看清楚走,否则最后连接不上!!!

#1.先在/usr/local目录下创建个文件夹,这里取名叫ca,然后进入ca文件夹中
mkdir -p /usr/local/ca
cd /usr/local/ca

#2.执行下面的命令,需要输入密码,自由指定,两次输入保持一致并记住即可.
openssl genrsa -aes256 -out ca-key.pem 4096

#3.根据提示分别输入国家,省份,城市,组织,等一系列信息(可以随便输,无所谓的其实)
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

#4.生成server-key.pem,输入下面命令敲回车即可.
openssl genrsa -out server-key.pem 4096

#5.把下面的$Host换成你自己服务器外网的IP或者域名:比如:openssl req -subj “/CN=192.168.1.0” -sha256…
openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr

#6.配置白名单,也就是你接下来要允许那些ip可以连接到服务器的docker,因为已经是ssl连接,所以我推荐配置0.0.0.0,也就是所有Ip都可以连接(但只有拥有证书的才可以连接成功),这样配置好之后公司其他人也可以使用.如果你不想这样,那你可以配置Ip,用逗号分隔开.下面的$Host依旧是你服务器外网的IP或者域名,请自行替换.(这里如果你使用的是服务器Ip的话,请将前面的DNS换成IP,否则配下来连接还是不会成功,如果你使用的是服务器域名,那么就用DNS就可以了)
echo subjectAltName = DNS:$HOST,IP:0.0.0.0 >> extfile.cnf

#7.执行下面语句:
echo extendedKeyUsage = serverAuth >> extfile.cnf

#8.执行下面语句,然后输入前面设置过的密码,用以生成ca-key.
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out server-cert.pem -extfile extfile.cnf

#9.生成客户端所需的key.pem,依旧在该服务器下执行下面命令,到时候把生成好的几个公钥私钥拷出去即可.
openssl genrsa -out key.pem 4096
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
echo extendedKeyUsage = clientAuth >> extfile.cnf

#10.生成cert.pem,需要输入前面设置的密码:
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out cert.pem -extfile extfile.cnf
rm -v client.csr server.csr

#11.修改权限:
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem

#12.归集服务器证书:
cp server-*.pem  /etc/docker/
cp ca.pem /etc/docker/

#13.修改docker配置:
vi /lib/systemd/system/docker.service

将ExecStart=/usr/bin/dockerd
替换为:
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock

#14.重新加载daemon并重启docker
systemctl daemon-reload
systemctl restart docker 

#15.然后使用工具比如winscp,或者xshell,把你当前所在的/usr/local/ca文件夹里的拷贝到你本地电脑的某个文件夹里

2.先安全策略组和防火墙开放2376端口(如果防火墙是关闭状态则不用处理防火墙)再idea docker插件选择密钥文件夹连接,现在就不怕被攻击了

下载docker插件,然后配置

fd6b6542973d40fa9d23134fce4bdc11.png

 最终就能可视化docker的镜像还有容器,如果idea 使用docker 出现Cannot obtain deployments: java.lang.NullPointerException 异常,在SSH终端输入以下命令创建docker初始化数据卷解决

docker volume create

350b176a2adf471fb38264f4b04759e4.png

 以上就能通过插件直接挂载nginx的前端dist文件目录,上图左侧是宿主机目录,右侧是容器内部目录(dist挂载目录宿主机随便配置,容器内的地址必须在   /usr/share/nginx/   下面才能生效)

未完待续敬请期待!有不明白的同学请留言,一定给你安排明白

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的问题,我尽量简要地回答。 1. Docker部署: a. 安装Docker的依赖:yum install -y yum-utils device-mapper-persistent-data lvm2 b. 添加Docker的yum源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo c. 安装Docker:yum install docker-ce d. 启动Docker:systemctl start docker e. 设置Docker开机自启动:systemctl enable docker 2. Mysql部署: a. 安装Mysql的依赖:yum install -y wget b. 下载Mysql的yum源:wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm c. 安装Mysql的yum源:yum localinstall -y mysql80-community-release-el7-3.noarch.rpm d. 安装Mysql:yum install -y mysql-community-server e. 启动Mysql:systemctl start mysqld f. 查看Mysql的初始密码:grep 'temporary password' /var/log/mysqld.log g. 登录Mysqlmysql -u root -p h. 修改Mysql的密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password'; 3. Elasticsearch的部署: a. 安装Elasticsearch的依赖:yum install -y java-1.8.0-openjdk b. 下载Elasticsearch:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz c. 解压Elasticsearch:tar -zxvf elasticsearch-7.10.1-linux-x86_64.tar.gz d. 进入Elasticsearch目录:cd elasticsearch-7.10.1/ e. 启动Elasticsearch:./bin/elasticsearch 4. Redis部署: a. 安装Redis的依赖:yum install -y gcc make b. 下载Redis:wget http://download.redis.io/releases/redis-6.0.9.tar.gz c. 解压Redis:tar -zxvf redis-6.0.9.tar.gz d. 进入Redis目录:cd redis-6.0.9/ e. 编译Redis:make f. 启动Redis:./src/redis-server 5. Nginx部署: a. 安装Nginx的依赖:yum install -y gcc pcre-devel openssl-devel b. 下载Nginx:wget http://nginx.org/download/nginx-1.18.0.tar.gz c. 解压Nginx:tar -zxvf nginx-1.18.0.tar.gz d. 进入Nginx目录:cd nginx-1.18.0/ e. 编译Nginx:./configure --prefix=/usr/local/nginx --with-http_ssl_module f. 安装Nginx:make && make install g. 启动Nginx:/usr/local/nginx/sbin/nginx 6. Kafka的部署: a. 安装Kafka的依赖:yum install -y java-1.8.0-openjdk b. 下载Kafka:wget https://dlcdn.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz c. 解压Kafka:tar -zxvf kafka_2.13-3.0.0.tgz d. 进入Kafka目录:cd kafka_2.13-3.0.0/ e. 启动Zookeeper:bin/zookeeper-server-start.sh config/zookeeper.properties f. 启动Kafka:bin/kafka-server-start.sh config/server.properties 以上是大致的步骤,具体的细节可能会有所不同,还请您根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值