阿里云服务器linux CentOS 安装docker容器,并部署一个springCloud项目

简介:mysql,redis(单节点),consul(单节点),nginx,在docker内。springboot不在docker内,也就是在docker宿主机器上。
docker官网:https://docs.docker.com/engine/install/centos/
docker仓库:https://hub.docker.com/_/mysql?tab=description

1.安装docker

1.1卸载老的版本

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

1.2安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定的存储库。

 sudo yum install -y yum-utils
 sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

1.3安装最新版本的 Docker Engine 和 containerd,或者进入下一步安装特定版本:

 sudo yum install docker-ce docker-ce-cli containerd.io

1.4启动 Docker。

sudo systemctl start docker

1.5设置开机自启

sudo systemctl enable docker

1.6阿里云镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://rn2ij708.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2安装mysql

2.1安装mysql临时镜像

docker run -p 3369:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0

2.2需要远程登录mysql 需要做一下操作

#进入mysql bin目录
docker exec -it mysql /bin/bash
#登录mysql
mysql -u root -p
#切换数据库
use mysql
#修改账号host
update user set host = '%' where user = 'root';
#修改账号密码 
alter user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#查看用户当前信息
select user,host,plugin from user;
#刷新
flush privileges;

2.3查看docker mysql镜像的目录 以便准确挂载到雇主机器

#进入docker容器内
docker exec -it mysql /bin/bash
# 查找Docker内,MySQL配置文件my.cnf的位置
mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 

#查找数据文件位置 exit 退出docker容器以后
docker inspect mysql
 "Mounts": [
            {
                "Type": "volume",
                "Name": "89586be25ba94bb049e72271fbc59d51741920781ed9e29e4dc20c7db90a59fc",
                "Source": "/var/lib/docker/volumes/89586be25ba94bb049e72271fbc59d51741920781ed9e29e4dc20c7db90a59fc/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],



docker exec -it mysql  bash
配置文件在
/etc/mysql/my.cnf
拷贝文件到之指定目录
docker cp mysql:/etc/mysql/my.cnf  /home/mysql/conf
# 删除临时容器
docker rm -f mysql

2.4创建本地路径并挂载Docker内数据

docker run --restart=always \
-p 3369:3306  --name mysql \
-v /home/mysql/data:/var/lib/mysql   \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf   \
-v /home/mysql/log:/var/log/mysql  \
-v /home/mysql/mysql-files:/var/lib/mysql-files \
-e TZ=Asia/Shanghai  \
-e MYSQL_ROOT_PASSWORD=123456  \
-d mysql:8.0 
--name:为容器指定一个名字
-p:指定端口映射,格式为:主机(宿主)端口:容器端口
-d:后台运行容器,并返回容器 id

3安装redis

#配置文件目录   和  数据目录
注意:docker redis 默认无redis.conf 文件,如果需要,自行去下载
mkdir -p /home/docker/redis/conf && mkdir -p /home/docker/redis/data

#准备配置文件
cd /home/docker/redis/conf
wget https://raw.githubusercontent.com/antirez/redis/6.2.2/redis.conf

#运行
docker run -p 6379:6379 --name redis \
-v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /home/docker/redis/data:/data \
--restart=always  \
--privileged=true \
-d redis:6.2.2 /etc/redis/redis.conf --appendonly yes

参数解释
--restart=always                                            -> 开机启动容器,容器异常自动重启
-d                                                          -> 以守护进程的方式启动容器
--privileged=true                                           -> 提升容器内权限
-p 6379:6379                                                -> 绑定宿主机端口
-v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf  -> 映射配置文件
-v /home/docker/redis/data:/data                              -> 映射数据目录
--name redis                                                -> 指定容器名称
--appendonly yes                                            -> 开启数据持久化

如果搞不懂挂载目录,可以像安装mysql 先默认安装,然后查看目录。

#安装
docker run -p 6379:6379 --name redis  -d redis:6.2.2 redis-server

#查看
docker inspect redis

 "Mounts": [
            {
                "Type": "volume",
                "Name": "ffef00095809f501fe4b7c0835820e6bff3752274bfda4b5dff548f5711da1be",
                "Source": "/var/lib/docker/volumes/ffef00095809f501fe4b7c0835820e6bff3752274bfda4b5dff548f5711da1be/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

4安装nginx

#创建临时容器
docker run --name nginx  -p 80:80 -d nginx:1.20.0
#进入nginx目录
docker exec -it nginx bash

#查看nginx.cnf
cat /etc/nginx/nginx.conf
nginx.cnf

从这个配置文件可以看出
nginx的日志文件在 /var/log/nginx 目录下
很重要的一点 最后一行 引入了 /etc/nginx/conf.d/ 文件下所有的配置文件
通过查看default.conf 文件的信息 默认的页面路径 /usr/share/nginx/html


#创建挂载目录
mkdir -p /home/docker/nginx/conf
#然后将nginx的一些配置信息 copy到刚创建的目录中去
docker cp nginx:/etc/nginx/nginx.conf /home/docker/nginx
docker cp nginx:/etc/nginx/conf.d/default.conf /home/docker/nginx/conf
# 删除临时容器
docker rm -f nginx
#重新安装容器
docker run  --name nginx  -p 80:80 -p 443:443 \
--restart=always \
-v /home/docker/nginx/html:/usr/share/nginx/html \
-v /home/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/docker/nginx/logs:/var/log/nginx \
-v /home/docker/nginx/conf:/etc/nginx/conf.d \
-v /home/docker/nginx/cert:/etc/nginx/cert \
-d nginx:1.20.0

注:
1.nginx反向代理 不可以在使用127.0.0.1或者localhost访问宿主机器服务。可以使用ifconfig查看docker监听的ip。然后替代127.0.0.1。

5单节点consul

docker run -d -p 8500:8500 --restart=always --name=consul consul:1.10.2 agent -server -bootstrap -ui -node=consul-node1 -client='0.0.0.0'
-d: 后台运行容器,并返回容器ID;
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-name consul  指定容器名称,自定义
consul:1.10.2 指定镜像, 镜像名:标签名
agent: 表示启动 Agent 进程。
server:表示启动 Consul Server 模式。
client:表示启动 Consul Cilent 模式。
bootstrap:表示这个节点是 Server-Leader ,每个数据中心只能运行一台服务器。
技术角度上讲 Leader 是通过 Raft 算法选举的,但是集群第一次启动时需要一个引导 
Leader,在引导群集后,建议不要使用此标志。

6安装rabbitmq

docker pull rabbitmq:management 
#rabbitmq:management (镜像配有控制台)。
#创建挂载目录  mkdir...
docker run  --restart=always \
-p 5673:5672 -p 15673:15672 --name rabbitmq \
-v /home/rabbitmq/data:/var/lib/rabbitmq \
-v /home/rabbitmq/conf:/etc/rabbitmq  \
-v /home/rabbitmq/log:/var/log/rabbitmq  \
-d rabbitmq
#进入docker rabbitmq
docker exec -it rabbitmq bash
#开启控制台
rabbitmq-plugins enable rabbitmq_management
#guest 不支持远程访问,最好添加一个用户管理
#如果使用阿里云或者腾讯云 记得开放15673端口
#创建账号
rabbitmqctl add_user admin admin
#授权角色
rabbitmqctl set_user_tags admin administrator
#添加权限  成功输出 Setting permissions for user "admin" in vhost "/" ...
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

7常用命令

docker exec -it mysql /bin/bash
docker rmi -f 镜像名:删除镜像
docker start 容器名/容器id:启动容器
docker stop 容器名/容器id:停止容器
docker ps :查看运行的容器
docker ps -a:查看所用容器(已运行、已停止的都有)
docker rm -f 容器名/容器id:删除容器
docker exec -it 容器名/容器id bash:进入容器
docker logs 镜像名:常看日志
docker images 查看本地镜像

你可能感兴趣的:(阿里云服务器linux CentOS 安装docker容器,并部署一个springCloud项目)