阿里云服务器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 查看本地镜像

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容