docker安装mysql redis_Docker安装Mysql和Redis以及构建部署应用镜像
为了方便本地测试项目,为了方便开启新的环境,为了方便部署,打算本地利用Docker安装Mysql和Redis。
搭建Springboot项目,编写Dockerfile,打包构建镜像。
简单使用docker-compose启动服务。
简述docker-compose和K8S。
环境
系统:mac
Docker Engine:19.03.8
Mysql:5.7,磁盘挂载目录:/Users/yclxiao/Program/volume/mysql
Redis:5.0.8,磁盘挂载目录:/Users/yclxiao/Program/volume/redis
安装Mysql-5.7
拉取官方镜像
docker pull mysql:5.7
复制代码
查看镜像库
docker images
复制代码
创建mysql的挂载的目录
mkdir -p /Users/yclxiao/Program/volume/mysql/data /Users/yclxiao/Program/volume/mysql/conf /Users/yclxiao/Program/volume/mysql/logs
复制代码
创建cnf文件
cd /Users/yclxiao/Program/volume/mysql/conf
touch my.cnf
复制代码
创建容器,将数据、日志、配置文件,映射到本机
docker run -p 3306:3306 --name mysql -v /Users/yclxiao/Program/volume/mysql/conf:/etc/mysql/conf.d -v /Users/yclxiao/Program/volume/mysql/logs:/logs -v /Users/yclxiao/Program/volume/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=rootpwd -d mysql:5.7
复制代码-d:后台运行容器
-p:将容器的端口映射到本机的端口
-v:将主机目录挂载到容器的目录
-e:设置参数
启动容器
docker start mysql
复制代码
docker run xxx 和 docker start xxx 区别?
docker run:
只有在第一次运行时使用,将镜像放到容器中,以后再次启动容器的时候,只需要使用docker start就可以了。
docker run 相当于执行了2个命令:
docker create:将镜像放入到容器中
docker start:启动容器,变成运行中的容器
docker start:
启动已经存在的容器
用Navicat等工具测试是否能连上
用户名:root
密码:rootpwd
安装Redis-5.0.8
在宿主机挂载目录下新建redis相关目录
/Users/yclxiao/Program/volume/redis/conf
/Users/yclxiao/Program/volume/redis/data
在/Users/yclxiao/Program/volume/redis/conf下
touch redis.conf
复制代码
拉取官方镜像,查看镜像
docker pull redis:5.0.8
docker images
复制代码
启动容器,redis:5.0.8镜像名称
docker run -d --name redis -p 6379:6379 -v /Users/yclxiao/Program/volume/redis/conf/redis.conf:/redis.conf -v /Users/yclxiao/Program/volume/redis/data:/data redis:5.0.8 redis-server --appendonly yes
复制代码
-d:让容器运行在后台
-p:前面是暴露出去的端口,后面是容器内部的服务端口
-v:将宿主机目录挂载到容器的/data目录,使用:
--name:此容器的别名
--appendonly:启用数据持久化保存
redis-server --appendonly yes:在容器执行redis-server启动命令,并且启动redis持久化配置
查看正在运行的容器
docker ps
复制代码
RDM工具连接测试OK
Docker常用命令
docker search #从registry仓库搜索镜像
docker pull #从仓库下载镜像到本地
docker images #列出所有镜像
docker tag #为镜像起一个别名
docker rmi 镜像名 #删除某个镜像
docker rmi $(docker images -q) #删除所有镜像
docker push #将一个镜像push到registry仓库中
docker build -t . #构建进行,: .不可少
docker create #创建一个容器但是不启动它
docker run #创建并启动一个容器
docker start #启动一个停止状态的容器
docker ps -aq #列出所有容器的id
docker ps #列出正在运行的容器
docker ps -a #查看所有进程
docker stop 容器id #停止某个容器
docker rm 容器id #删除某个容器
docker stop $(docker ps -aq) #停止所有容器
docker rm $(docker ps -aq) #删除所有容器
docker kill #发送信号给容器,默认SIGKILL
docker exec #进入到容器里执行命令
docker inspect #深入容器内部获取容器所有信息
编写Dockerfile
Dockerfile是docker构建镜像的基础,也是docker区别于其他容器的重要特征,正是有了Dockerfile,docker的自动化和可移植性才成为可能。
FROM,从一个基础镜像构建新的镜像
FROM openjdk:8-jdk-alpine
复制代码
MAINTAINER,维护者信息
MAINTAINER yclxiao
复制代码
ENV,设置环境变量
ENV TESTVAR 123
复制代码
RUN,运行shell命令
RUN xxxxxx
复制代码
ADD,将外部文件拷贝到镜像里,src可以为url
ADD xxxxx /data/xxxxxx
复制代码
WORKDIR /path/to/workdir,设置工作目录
WORKDIR /var/www
复制代码
USER,设置用户ID
USER nginx
复制代码
VULUME,设置volume,设置挂载卷
VOLUME ['/data']
复制代码
EXPOSE,暴露哪些端口
EXPOSE 8080 8081
复制代码
ENTRYPOINT ["executable","param1","param2"] 执行命令
ENTRYPOINT ["/usr/sbin/nginx"]
复制代码
CMD ["param1","param2"]
CMD ["start"]
复制代码
docker创建、启动container时执行的命令,如果设置了ENTRYPOINT,则CMD将作为参数
示例:利用Dockerfile构建一个java应用的镜像
FROM openjdk:8-jdk-alpine
ENV TZ=Asia/Shanghai
#如果直接docker build命令打包镜像(非maven插件的形式),则需要加上这段变量
#ENV JAR_FILE=target/blog-dbpool-main-0.0.1-SNAPSHOT.jar
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
VOLUME /tmp
#pom.xml中dockerfile插件定义的参数
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
复制代码
构建Java工程
搭建带有Dockerfile文件的Springboot工程,pom配置docker插件,构建镜像推送镜像,启动容器。
配置dockerfile-maven-plugin插件,官方推荐使用dockerfile-maven-plugin,不建议使用docker-maven-plugin:
本地maven的setting,在.m2文件夹里,注意一定要有servers,否则配置不生效
docker.io
yclxiao
xxxxxx
复制代码
构建镜像,推送仓库:
直接在dockerfile目录下,执行docker命令:
docker build -t yclxiao/blog-dbpool-main:0.0.1-SNAPSHOT .
docker push yclxiao/blog-dbpool-main:0.0.1-SNAPSHOT
复制代码
利用maven插件:
mvn clean package dockerfile:build
mvn clean package dockerfile:push
复制代码
执行docker images,可以在本地仓库看到此镜像。
查看dockerHub仓库https://hub.docker.com/,可以看到此镜像
创建启动容器:
docker run -p 8080:8080 yclxiao/blog-dbpool-main:0.0.1-SNAPSHOT [-d]
利用Docker-Compose部署
容器多了之后,必然需要一种管理容器的工具,那么docker-compose应运而生,docker-compose是用于定义和运行本机的多个docker容器的工具,负责实现对Docker容器集群的快速编排,可以使用yml文件来配置应用程序需要的所有服务。然后使用命令,从yml文件配置中创建并启动所有服务。
两个重要概念:
服务(service):一个应用的容器,实际可以包括若干运行相同镜像的容器实例。
项目(project):由一组关联的应用容器组成的一个完整的业务单元,在docker-compose.yml文件中定义。
在Dockerfile同级目录下,编写docker-compose.yml,示例:
version: '3.7'
# 定义服务
services:
# 指定服务名称,例如spring-boot服务
app-server:
build:
context: . # 配置需要构建Dockerfile的路径 相对于docker-compose.yml
dockerfile: Dockerfile
# 指定服务运行的端口
ports:
- "8080:8080" # 将本机8080端口映射到容器8080端口
restart: always
# 需要依赖的服务 率先构建
depends_on:
- db
- redis
#environment: # 设置环境变量
#SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/airTicket?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
#SPRING_DATASOURCE_USERNAME: root
#SPRING_DATASOURCE_PASSWORD: 123456
#SPRING_REDIS.HOST: redis
db:
# 指定服务使用的镜像
image: mysql:5.7
# 指定容器名称
container_name: mysql5.7
ports:
- "3306:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpwd
volumes:
- /Users/yclxiao/Program/volume/mysql/conf:/etc/mysql/conf.d
- /Users/yclxiao/Program/volume/mysql/logs:/logs
- /Users/yclxiao/Program/volume/mysql/data:/var/lib/mysql
redis:
image: redis:5.0.8
# 指定容器名称
container_name: redis5.0.8
volumes:
- /Users/yclxiao/Program/volume/redis/conf/redis.conf:/redis.conf
- /Users/yclxiao/Program/volume/redis/data:/data
command: ["redis-server", "--protected-mode", "no", "--appendonly", "yes"]
hostname:
redis
ports:
- "6379:6379"
复制代码然后执行命令,本地已经下载的镜像创建的容器,不会再下载创建了:
docker-compose build #根据docker-compose.yam构建完整镜像
docker-compose up #直接运行所有服务
docker-compose up -d #后台运行所有服务
docker-compose stop #停止所有容器
docker-compose ps #列出所有容器信息
复制代码docker-compose build , docker-compose up之后,输出日志正常,访问OK:http://localhost:8080/swagger-ui.html
Docker-Compose和K8S区别
Docker是容器技术的核心、基础,Docker Compose是一个基于Docker的单主机容器编排工具(容器管理工具),功能并不像Kubernetes那么丰富,Kubernetes是基于Dcoker的跨主机的容器管理平台。
关于找一找教程网
本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[Docker安装Mysql和Redis以及构建部署应用镜像]http://www.zyiz.net/tech/detail-119530.html
docker安装mysql redis_Docker安装Mysql和Redis以及构建部署应用镜像相关推荐
- 《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
文章目录 8.Docker常规安装简介 8.1 docker常规安装总体步骤 8.2安装tomcat 8.3 安装mysql 8.3.1 docker hub上面查找mysql镜像 8.3.2 从do ...
- docker常用命令,安装常用实例,一步式安装mysql
刚来公司,跟公司测试环境项目的服务器,环境是linux Centos7.2 所有的tomcat都挂载在docker容器下,所以也就学习了一些简单的docker指令(学习之前请了解什么是docker, ...
- docker下安装nacos 并使用mysql数据库
没做出来 腾讯云 有机会用虚拟机试试 参考资料 https://www.e-learn.cn/content/java/2357340 https://blog.csdn.net/xieqing_x ...
- docker建多个mysql_《容器化系列二》利用Docker容器化技术安装多个mysql
前提说明 安装的Linux系统版本为Centos7.x 一.安装docker并测试 1.安装yum相关工具包 ///安装yum相关工具包 yum install -y yum-utils device ...
- docker mysql容器安装vim
由于 linux 下 mysql 区分大小写,所以需要修改 mysql 配置文件 在 [mysqld] 下增加一项属性 lower_case_table_names = 1 ,然后重启 mysql 服 ...
- Docker部署免安装版tomcat+mysql+其它乱七八糟软件(包含解释为什么这样安装及同理安装的其他方式)
前言:在学习使用Docker中,发现所有Docker案例都是直接就开始下载(pull)镜像然后命令叭叭叭的,对于刚接触linux系统和docker的完全看不懂,所以写了此份教程作为记录. 说明:因查找 ...
- rap2搭建,mysql,redis,nginx安装,node环境安装,rap2安装
所需环境 1.mysql 2.redis 3.nginx安装 4.npm/nodejs环境 5.rap2-delos端安装 6.客户端dolores环境搭建 1.mysql安装 CentOS7的yum ...
- Linux使用Docker安装Nacos并配置MySQL数据源,将Springboot的配置文件部署到Nacos
Linux使用Docker安装Nacos并配置MySQL数据源,将Springboot的配置文件部署到Nacos 前言 一.Docker中安装配置Nacos 安装Docker 拉取Nacos镜像 启动 ...
- docker入门实践,安装指定版本的mysql镜像
本文以安装mysql5.7为例 查找镜像仓库 含有mysql关键字的记录,这里选择了stars最高,即第1条 $ docker search mysql NAME DESCRIPTION STARS ...
最新文章
- 资料 | 开源! ICCV 2021 最佳学生论文pixsfm
- 五轴编程_HyperMILL五轴编程培训HyperMILL 软件的特点
- java中什么是递归_java中什么是递归
- 深入理解Java的equals和hashCode方法
- 几乎所有的成功都是厚积薄发
- swf缓存文件在哪里_面试官:mybatis一级缓存二级缓存的区别都不知道,知道门在哪吧...
- CodeIgniter的快速操作
- Linux安装net的工具,centos7安装netbox(不错开源网络管理工具) – 运维那些事
- Spring框架中的单例Bean是线程安全的吗
- new arraylist内存_如何避免内部类中的内存泄漏
- 云栖大会 | 马云提出“新制造”战略将影响全球
- shell脚本if和switch语句编写案例
- 5G 基站功耗,到底有多可怕?
- 科技四巨头展望:战线***升级 软硬界限模糊
- 电脑上免费的录屏软件有哪些?分享六款录屏小工具,超好用
- 虚拟化: 物理CPU与VCPU的关系 || 内存上限说起 VMware内存分配初探
- 计算机键盘不能用怎么办,电脑键盘空格键失灵无法使用怎么办|电脑键盘空格键失灵的解决方法...
- 同一无线络下电脑会打不开个别的网站网页,而手机却可以打开。
- HTML学生个人网站作业设计:旅游景点网站设计——北京故宫(9页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
- html如何生成条形码,前端如何生成条形码---JsBarcode