微服务技术栈SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式(三):Docker

本文介绍了Docker的基础概念、环境配置,包括安装阿里云镜像加速,详细讲解了Docker的基本操作如镜像管理、容器操作和数据卷挂载,以及Dockerfile自定义镜像和Docker-Compose的使用实例。还涉及了私有镜像仓库的搭建和配置。
摘要由CSDN通过智能技术生成


一、基本介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、环境配置

Docker安装与配置阿里云镜像加速

三、Docker基本操作

3.1 镜像操作

在这里插入图片描述
在这里插入图片描述
dockerHub官网:https://hub.docker.com
在这里插入图片描述
下面演示的是保存镜像为压缩包、删除镜像、加载镜像的操作:
在这里插入图片描述

3.2 容器操作

在这里插入图片描述

3.2.1 演示命令run、ps、logs

在这里插入图片描述
在这里插入图片描述
以上便可通过:域名:宿主机端口 访问 例如:192.168.150.101:80访问得到以下结果

在这里插入图片描述

阿里云linux云服务器公网地址无法访问最常见两个问题解决方法:请参见

3.2.2 演示命令exec、rm、exit(退出)

在这里插入图片描述

  1. 查看容器状态:
    docker ps
    添加-a参数查看所有状态的容器
  2. 删除容器:
    docker rm
    不能删除运行中的容器,除非添加 -f 参数
  3. 进入容器:
    命令是docker exec -it [容器名] [要执行的命令]
    exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐的

3.3 数据卷

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.3.1 直接挂载

在这里插入图片描述

在这里插入图片描述

3.3.2 宿主机挂载

在这里插入图片描述

docker 安装 mysql

在这里插入图片描述

创建一个mysql容器如下

docker run \
 --name mysql \
 -e MYSQL_ROOT_PASSWORD=123456 \
 -p 3306:3306 \
 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
 -v /tmp/mysql/data:/var/lib/mysql \
 -d \
 mysql:5.7.25

此时在data目录下可以看到文件,并且在navicat也可以看见数据库文件
在这里插入图片描述
在这里插入图片描述

3.3.3 两种方式的对比

在这里插入图片描述

四、Dockerfile自定义镜像

镜像是将应用程序程序需要的系统函数库、环境、配置、依赖打包而成。镜像是分层结构,每层称为一个Layer。
在这里插入图片描述
在这里插入图片描述
方式一
在这里插入图片描述

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

方式二:利用其他人制作好的镜像(如java:8-alpine)

在这里插入图片描述

# 指定基础镜像
FROM java:8-alpine

COPY ./docker-demo.jar /tmp/app.jar

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

五、Docker-Compose

Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!
Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。
DockerCompose的详细语法参考官网:https://docs.docker.com/compose/compose-file/
在这里插入图片描述

5.1 CentOS7安装DockerCompose

  1. 下载
    Linux下需要通过命令下载:
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

如果下载速度较慢,或者下载失败,可以使用课前资料提供的docker-compose文件:上传到/usr/local/bin/目录也可以。

  1. 修改文件权限
# 修改权限
chmod +x /usr/local/bin/docker-compose
  1. Base自动补全命令:
# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

5.2 案例

在这里插入图片描述
docker-compose

version: "3.2"

services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"
  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql"
      - "$PWD/mysql/conf:/etc/mysql/conf.d/"
  userservice:
    build: ./user-service
  orderservice:
    build: ./order-service
  gateway:
    build: ./gateway
    ports:
      - "10010:10010"

六、Docker镜像服务

6.1 配置安装

搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。官网地址:https://hub.docker.com/_/registry

  1. 简化版镜像仓库

Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

搭建方式比较简单,命令如下:

docker run -d \
    --restart=always \
    --name registry	\
    -p 5000:5000 \
    -v registry-data:/var/lib/registry \
    registry

命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

  1. 带有图形化界面版本

首先要配置Docker信任地址

我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:
注意:["192.168.150.101:8080"]不能写成["http:/192.168.150.101:8080"],因为registry1.3以上不支持http

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["192.168.150.101:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

然后使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=传智教育私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

接下来创建文件并启动服务

mkdir registry-ui  # 创建目录
cd registry-ui/  # 进入文件夹
touch docker-compose.yml  # 创建文件,然后将上述内容复制进去
docker-compose up -d  # 创建容器

然后通过 http://服务器地址:8080/ 访问,如下
在这里插入图片描述
将nginx:latest镜像推送到私有仓库中

# 推送镜像到私有镜像服务必须先tag,步骤如下:
# 1.重新tag本地镜像,名称前缀为私有仓库的地址:192.168.150.101:8080/
docker tag nginx:latest 192.168.150.101:8080/nginx:1.0
# 2.推送镜像
docker push 192.168.150.101:8080/nginx:1.0
# 3. 拉取镜像
docker pull 192.168.150.101:8080/nginx:1.0

一定要注意:如果使用的是云服务器部署注意在安全组中将5000和8080端口打开

上述全过程:

# 1.修改/etc/docker/daemon.json 添加 {insecure-registries":["192.168.150.101:8080"]}

# 2.重启docker
systemctl daemon-reload
systemctl restart docker

# 3.创建文件夹和配置文件yml
mkdir /tmp/registry-ui
cd /tmp/registry-ui
touch docker-compose.yml

# 4.在配置文件中添加内容

# 5.启动容器
docker-compose up -d

# 6.拉取nginx,创建本地镜像,并推送
docker pull nginx
docker tag nginx:latest 39.107.236.163:8080/nginx:1.0
docker push 39.107.236.163:8080/nginx:1.0

# 7.停止、删除所有容器,删除所有镜像
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi -f $(docker images -q)
  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
运维项目经验是很宝贵的,以下是基于Nginx+Nacos+MySQL+Redis+RabbitMQ的运维项目经验: 1. Nginx Nginx是一款高性能的Web服务器和反向代理服务器。在运维过程中,需要对Nginx进行配置和监控,以确保其运行稳定。 - 配置 Nginx配置文件的路径为"/etc/nginx/nginx.conf",可以使用编辑器进行修改,如vi、nano等。在配置文件中,需要注意以下几点: - worker_processes:指定工作进程数,一般根据CPU核心数进行设置。 - pid:指定进程ID的存储路径。 - error_log:指定错误日志的存储路径。 - access_log:指定访问日志的存储路径。 - http:指定HTTP协议的配置项,如代理服务器、缓存等。 - server:指定服务器的配置项,如监听端口、域名等。 - 监控 可以使用Nginx自带的状态模块,通过访问"http://localhost:8080/nginx_status"来获取Nginx的状态信息。也可以通过第三方监控工具进行监控,如Zabbix、Grafana等。 2. Nacos Nacos是一款开源的服务发现、配置管理和动态DNS解析系统。在运维过程中,需要对Nacos进行部署和配置,以确保其正常运行。 - 部署 Nacos的部署可以使用Docker、Kubernetes等容器化技术进行部署,也可以直接下载二进制包进行部署。在部署过程中,需要注意以下几点: - 需要占用的端口:Nacos默认使用8848端口。 - 数据库配置:Nacos需要使用MySQL或者MariaDB作为数据存储的后端,需要进行相关的数据库配置。 - 配置文件的修改:Nacos的配置文件位于conf目录下,可以根据实际情况进行修改。 - 配置 在Nacos中,需要进行以下配置: - 服务注册:通过Nacos的API,将需要注册的服务注册到Nacos中。 - 配置管理:将需要管理的配置文件上传到Nacos中,并设置相应的命名空间、数据ID和分组。 3. MySQL MySQL是一款流行的关系型数据库管理系统。在运维过程中,需要对MySQL进行配置和监控,以确保其运行稳定。 - 配置 MySQL的配置文件的路径为"/etc/my.cnf",可以使用编辑器进行修改,如vi、nano等。在配置文件中,需要注意以下几点: - port:指定MySQL的监听端口。 - bind-address:指定MySQL的监听地址。 - max_connections:指定MySQL的最大连接数。 - log-error:指定错误日志的存储路径。 - slow-query-log:指定慢查询日志的存储路径。 - 监控 可以使用MySQL自带的状态变量和性能指标,通过执行"SHOW STATUS"和"SHOW VARIABLES"语句来获取MySQL的状态信息。也可以通过第三方监控工具进行监控,如Zabbix、Grafana等。 4. Redis Redis是一款高性能的内存数据库。在运维过程中,需要对Redis进行配置和监控,以确保其运行稳定。 - 配置 Redis的配置文件的路径为"/etc/redis/redis.conf",可以使用编辑器进行修改,如vi、nano等。在配置文件中,需要注意以下几点: - bind:指定Redis的监听地址。 - port:指定Redis的监听端口。 - daemonize:指定Redis是否以守护进程的方式运行。 - logfile:指定Redis的日志文件路径。 - maxclients:指定Redis的最大连接数。 - 监控 可以使用Redis自带的命令,如"INFO",来获取Redis的状态信息。也可以通过第三方监控工具进行监控,如Zabbix、Grafana等。 5. RabbitMQ RabbitMQ是一款开源的消息队列系统。在运维过程中,需要对RabbitMQ进行部署和配置,以确保其正常运行。 - 部署 RabbitMQ的部署可以使用Docker、Kubernetes等容器化技术进行部署,也可以直接下载二进制包进行部署。在部署过程中,需要注意以下几点: - 需要占用的端口:RabbitMQ默认使用5672端口。 - 用户名和密码:在RabbitMQ中,需要使用用户名和密码进行身份验证,需要进行相应的用户配置。 - 配置 在RabbitMQ中,需要进行以下配置: - 队列的创建:通过RabbitMQ的API,创建需要使用的队列。 - 交换机的创建:通过RabbitMQ的API,创建需要使用的交换机。 - 路由键的绑定:通过RabbitMQ的API,将队列和交换机进行绑定,并指定相应的路由键。 总体来说,基于Nginx+Nacos+MySQL+Redis+RabbitMQ的运维项目经验需要对以上组件进行深入理解和熟练掌握,才能更好地进行运维管理。在实践中,需要不断积累经验和总结,以便能够更好地应对各种问题和挑战。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值