对于想了解docker重启redis、mysql数据丢失的解决方法的读者,本文将提供新的信息,我们将详细介绍docker重启后数据丢失,并且为您提供关于CentOS7中Docker安装tomcat、r
对于想了解docker 重启 redis、mysql 数据丢失的解决方法的读者,本文将提供新的信息,我们将详细介绍docker重启后数据丢失,并且为您提供关于CentOS7中Docker安装tomcat、redis、mysql 8.0、docker springboot 集成 redis、mysql 应用部署、docker 入坑 4 搭建 mongoldb、redis、mysql、docker 入坑4 搭建mongoldb、redis、mysql的有价值信息。
本文目录一览:- docker 重启 redis、mysql 数据丢失的解决方法(docker重启后数据丢失)
- CentOS7中Docker安装tomcat、redis、mysql 8.0
- docker springboot 集成 redis、mysql 应用部署
- docker 入坑 4 搭建 mongoldb、redis、mysql
- docker 入坑4 搭建mongoldb、redis、mysql
docker 重启 redis、mysql 数据丢失的解决方法(docker重启后数据丢失)
官方文档:
所以 mysql 应如下启动:
docker run --name mysql -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=密码 -v /windows盘符/指定的文件夹路径:/var/lib/mysql mysql --sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION --lower_case_table_names=1
redis:
docker run -p 6379:6379 -d -v /windows盘符/指定的文件夹路径:/data redis:5.0 redis-server --requirepass ''redis密码'' --appendonly yes
多看官方文档,里面有详细的说明
CentOS7中Docker安装tomcat、redis、mysql 8.0
一、CentOS7安装Docker
1、检查内核版本,必须是3.10及以上
[root@iz2zeizzt8ihoeoyopzzyhz ~]# uname -r
3.10.0-514.26.2.el7.x86_64
2、使用 yum install docker进行安装
[root@iz2zeizzt8ihoeoyopzzyhz ~]#yum install docker
下载确认后出现Complete!则表示成功
3、启动docker
[root@iz2zeizzt8ihoeoyopzzyhz ~]# systemctl start docker
4、查看docker版本
[root@iz2zeizzt8ihoeoyopzzyhz ~]# docker -v
Docker version 1.13.1, build 94f4240/1.13.1
5、开机启动docker
[root@iz2zeizzt8ihoeoyopzzyhz ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
二、Docker安装tomcat并部署war工程
1、拉取tomcat镜像
可以在https://hub.docker.com/r/library/tomcat/ 进行搜索(不指定版本默认安装最新版)
2、安装tomcat
[root@iz2zeizzt8ihoeoyopzzyhz ~]# docker pull tomcat
3、查看所有镜像
[root@iz2zeizzt8ihoeoyopzzyhz ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/tomcat latest 56219f61066f 51 minutes ago 463 MB
4、启动tomcat
[root@iz2zeizzt8ihoeoyopzzyhz ~]# docker run --name tomcat8080 -d -p 8080:8080 tomcat
a3d4f36dca9865619b48c325c06f5147c92230e369051a60e82fb461eb6f1e20
--name :给容器命名
-d : 后台运行
-p:端口映射
5、查看运行的tomcat
[root@iz2zeizzt8ihoeoyopzzyhz ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3d4f36dca98 tomcat "catalina.sh run" 5 seconds ago Up 4 seconds 0.0.0.0:8080->8080/tcp tomcat8080
然后在浏览器输入 ip:8080可访问默认的tomcat界面
6、部署war工程
首先上传war包到服务器,比如我上传到/home路径下
[root@iz2zeizzt8ihoeoyopzzyhz ~]# ll
total 212532
-rw-r--r-- 1 root root 17231526 Nov 22 2017 admin-controller.war
7、将war包复制到docker容器的tomcat中
可以参考以下两篇博文:
https://blog.csdn.net/qq_32351227/article/details/78673591
https://blog.csdn.net/leafage_m/article/details/72082011
具体我的操作如下:
获取长长的那个ID(tomcat8080是我启动的tomcat起的名字)
[root@iz2zeizzt8ihoeoyopzzyhz ~]# docker inspect -f ''{{.Id}}'' tomcat8080
a3d4f36dca9865619b48c325c06f5147c92230e369051a60e82fb461eb6f1e20
查看容器中tomcat地址(a3d4f36dca98是tomcat的id)
[root@iz2zeizzt8ihoeoyopzzyhz ~]# docker exec -it a3d4f36dca98 /bin/bash
root@a3d4f36dca98:/usr/local/tomcat#
将tomcat中webapps下的默认文件都删除
root@a3d4f36dca98:/usr/local/tomcat# cd webapps/
root@a3d4f36dca98:/usr/local/tomcat/webapps#
root@a3d4f36dca98:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager ----这些文件都删掉
root@a3d4f36dca98:/usr/local/tomcat/webapps#
将war包cp进tomcat的webapps路径下(docker cp 本地文件路径 ID全称:容器路径)
[root@iz2zeizzt8ihoeoyopzzyhz ~]# docker cp admin-controller.war a3d4f36dca9865619b48c325c06f5147c92230e369051a60e82fb461eb6f1e20:/usr/local/tomcat/webapps/admin-controller.war
restart下就能访问部署的项目了
三、Docker安装redis
1、拉取redis镜像(推荐使用Docker中国的镜像加速)
[root@iz2zeizzt8ihoeoyopzzyhz ~]# docker pull registry.docker-cn.com/library/redis
2.启动redis
[root@iz2zeizzt8ihoeoyopzzyhz ~]# docker run -d -p 6379:6379 --name redis6379 bfcb1f6df2db
然后就可以使用redis客户端工具RedisDesktopManage本地进行操作了
四、Docker安装mysql 8
1、拉取mysql镜像
[root@iz2zeizzt8ihoeoyopzzyhz ~]# docker pull mysql
2.启动mysql
[root@iz2zeizzt8ihoeoyopzzyhz ~]# docker run -p 3309:3306 --name mysql3309 -e MYSQL_ROOT_PASSWORD=root -d mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
连接客户端会出现问题:本地连接不上
解决:
#Docker-mysql8.0客户端无法连接
进入容器bash并进入mysql命令行
docker exec -it mysql3306 bash
root@eb3dbfb0958f:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
…
mysql>
//使用mysql数据库
mysql>use mysql
//修改数据库
mysql> ALTER USER ''root''@''%'' IDENTIFIED WITH mysql_native_password BY ''root'';
//重新修改密码后可连接成功
mysql> alter user ''root''@''%'' identified by ''root'';
//刷新数据库
mysql> flush privileges;
然后本地就能连接成功了。
docker springboot 集成 redis、mysql 应用部署
- 使用 docker 安装 redis
查找镜像:docker search redis
拉取 redis 镜像:docker pull redis
查找本地的镜像:docker images redis
- 默认无密码执行命令
在redis的基础上run一个容器:docker run -d -p 6379:6379 [imageid] 执行成功,返回容器id
2. 密码版
docker run -d --name redis -p 6379:6379 redis --requirepass 123456 参数解释:-d是在后端执行,-p 6379:6379 指定端口,前面一个是宿主机暴露端口,后面一个是容器端口
3. redis 客户端连接命令:docker exec -it 0b63b7eacc29 redis-cli
- mysql 的安装步骤同上,在容器创建的时候,脚本修改:
docker run -p 3306:3306 --name mysql -v /root/docker/mysql/conf:/etc/mysql/conf.d -v /root/docker/mysql/logs:/logs -v /root/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- 最后启动打包发布应用
Dockerfile
# 基础镜像使用Java
FROM java:8
# 作者
MAINTAINER Bruce Shaw
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
RUN mkdir /pm/
# 拷贝当前下面的所有lib到docker下面temp
ARG JAR_FILE=/target/*.jar
ADD ${JAR_FILE} /pm/
# 容器入口点,在指定容器启动程序及参数
ENTRYPOINT ["java", "-cp", "/pm/*", "com.you.PmWebApplication"]
# 指定容器需要映射到主机的端口
EXPOSE 8010
创建镜像
docker build -f Dockerfile .
启动项目
docker run -d -p 8010:8010 -p 8085:8085 --link mysql:mysql --link redis:redis [imageId] --name pm
-d 后台启动 -p 指定端口 可以多个成组 --link 连接宿主的 mysql 和容器内部的 mysql;redis 同理 --name pm 指定容器名称
docker 查看日志
docker logs [containId] -f
-f 参数 可以查看实时的日志
docker 入坑 4 搭建 mongoldb、redis、mysql
搭建 mongodb
$ docker run --name mongo -it -d -p 27017:27017 -v ~/docker-data/mongo:/data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo
$ docker exec -it mongo /bin/bash
# mongo -u admin -p 123456
然后我们添加一个用户:
db.createUser({
{
user: "spring",
pwd: "123456",
roles: [
role: "readWrite", db: "demo"
]
}
})
在 java 的配置文件:
spring.data.mongodb.uri=mongodb://spring:123456@localhost:27017/demo
搭建 redis
$ docker run --name redis-server -it -d -p 6379:6379 -v ~/docker-data/redis:/data/db redis redis-server --appendonly yes
$ docker exec -it redis-server redis-cli
搭建 mysql
1、拉取官方镜像(我们这里选择 5.7,如果不写后面的版本号则会自动拉取最新版)
docker pull mysql:5.7 # 拉取 mysql 5.7
docker pull mysql # 拉取最新版mysql镜像
2、一般来说数据库容器不需要建立目录映射
sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- –name:容器名,此处命名为
mysql
- -e:配置信息,此处配置 mysql 的 root 用户的登陆密码
- -p:端口映射,此处映射 主机 3306 端口 到 容器的 3306 端口
- -d:源镜像名,此处为 mysql:5.7
3、如果要建立目录映射
duso docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
- -v:主机和容器的目录映射关系,":" 前为主机目录,之后为容器目录
4、连接 mysql
sudo docker exec -it mysql /bin/bash
mysql -uroot -p123456
5、使用 java 的 jdbc 测试
1 import java.sql.*;
2
3 public class JdbcTest {
4 public static void main(String[] args) {
5 Connection connection = null;
6 PreparedStatement preparedStatement = null;
7 ResultSet resultSet = null;
8 try
9 {
10 //加载数据驱动
11 Class.forName("com.mysql.jdbc.Driver");
12 //通过驱动管理类获取数据库连接
13 connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8","root","123456");
14 System.out.println("创建数据库连接成功");
15 //定义sql语句?表示占位符
16 String sql = "select * from user where username = ?";
17 //获取预处理statement
18 preparedStatement = connection.prepareStatement(sql);
19 //设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
20 preparedStatement.setString(1,"zhangsan");
21 //向数据库发出sql查询,查询出结果集
22 resultSet = preparedStatement.executeQuery();
23 //遍历查找结果集
24 while (resultSet.next()){
25 System.out.println(resultSet.getString("id") + ""
26 + resultSet.getString("username"));
27 }
28 } catch (Exception e) {
29 e.printStackTrace();
30 }finally {
31 //释放资源
32 if(resultSet != null){
33 try{
34 preparedStatement.close();
35 }catch (SQLException e){
36 e.printStackTrace();
37 }
38 }
39 if(connection != null){
40 try{
41 connection.close();
42 }catch (SQLException e){
43 e.printStackTrace();
44 }
45 }
46 }
47 }
48 }
5、数据库:
6、驱动
mysql-connector-java-5.1.36
7、在 idea 中添加 lib 文件夹,在文件夹 lib 中添加驱动的 jar 包,然后
下面的方式待验证:
1、在宿主机上创建 /mysql/data 和 /mysql/conf
2、docker run --name mysql -d --rm -v /home/mantishell/mysql/conf:/etc/mysql/conf.d -v /home/mantishell/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
3、ALTER USER ''root''@''%'' IDENTIFIED WITH mysql_native_password BY ''123456'';
docker 入坑4 搭建mongoldb、redis、mysql
搭建mongodb
$ docker run --name mongo -it -d -p 27017:27017 -v ~/docker-data/mongo:/data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo
$ docker exec -it mongo /bin/bash
# mongo -u admin -p 123456
然后我们添加一个用户:
db.createUser({
{
user: "spring",
pwd: "123456",
roles: [
role: "readWrite", db: "demo"
]
}
})
在java的配置文件:
spring.data.mongodb.uri=mongodb://spring:123456@localhost:27017/demo
搭建redis
$ docker run --name redis-server -it -d -p 6379:6379 -v ~/docker-data/redis:/data/db redis redis-server --appendonly yes
$ docker exec -it redis-server redis-cli
搭建mysql
1、拉取官方镜像(我们这里选择5.7,如果不写后面的版本号则会自动拉取最新版)
docker pull mysql:5.7 # 拉取 mysql 5.7
docker pull mysql # 拉取最新版mysql镜像
2、一般来说数据库容器不需要建立目录映射
sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- –name:容器名,此处命名为
mysql
- -e:配置信息,此处配置mysql的root用户的登陆密码
- -p:端口映射,此处映射 主机3306端口 到 容器的3306端口
- -d:源镜像名,此处为 mysql:5.7
3、如果要建立目录映射
duso docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
- -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录
4、连接mysql
sudo docker exec -it mysql /bin/bash
mysql -uroot -p123456
5、使用java的jdbc测试
1 import java.sql.*;
2
3 public class JdbcTest {
4 public static void main(String[] args) {
5 Connection connection = null;
6 PreparedStatement preparedStatement = null;
7 ResultSet resultSet = null;
8 try
9 {
10 //加载数据驱动
11 Class.forName("com.mysql.jdbc.Driver");
12 //通过驱动管理类获取数据库连接
13 connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8","root","123456");
14 System.out.println("创建数据库连接成功");
15 //定义sql语句?表示占位符
16 String sql = "select * from user where username = ?";
17 //获取预处理statement
18 preparedStatement = connection.prepareStatement(sql);
19 //设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
20 preparedStatement.setString(1,"zhangsan");
21 //向数据库发出sql查询,查询出结果集
22 resultSet = preparedStatement.executeQuery();
23 //遍历查找结果集
24 while (resultSet.next()){
25 System.out.println(resultSet.getString("id") + ""
26 + resultSet.getString("username"));
27 }
28 } catch (Exception e) {
29 e.printStackTrace();
30 }finally {
31 //释放资源
32 if(resultSet != null){
33 try{
34 preparedStatement.close();
35 }catch (SQLException e){
36 e.printStackTrace();
37 }
38 }
39 if(connection != null){
40 try{
41 connection.close();
42 }catch (SQLException e){
43 e.printStackTrace();
44 }
45 }
46 }
47 }
48 }
5、数据库:
6、驱动
mysql-connector-java-5.1.36
7、在idea中添加lib文件夹,在文件夹lib中添加驱动的jar包,然后
下面的方式待验证:
1、在宿主机上创建/mysql/data和/mysql/conf
2、docker run --name mysql -d --rm -v /home/mantishell/mysql/conf:/etc/mysql/conf.d -v /home/mantishell/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
3、ALTER USER ''root''@''%'' IDENTIFIED WITH mysql_native_password BY ''123456'';
我们今天的关于docker 重启 redis、mysql 数据丢失的解决方法和docker重启后数据丢失的分享就到这里,谢谢您的阅读,如果想了解更多关于CentOS7中Docker安装tomcat、redis、mysql 8.0、docker springboot 集成 redis、mysql 应用部署、docker 入坑 4 搭建 mongoldb、redis、mysql、docker 入坑4 搭建mongoldb、redis、mysql的相关信息,可以在本站进行搜索。
本文标签: