SpringBoot 与 Docker

Docker

1、简介

Docker是一个开源的应用容器引擎。

2、核心

docker主机(Host):安装了docker的程序的机器(安装在操作系统之上)
docker客户端(client):客户端通过命令行护着其他工具来使用docker
docker仓库(Register):用来保存各种打包好的镜像
docker镜像(image):软件打包好的镜像,放在docker仓库中
docker容器(Container):镜像启动后的实例称为一个容器。独立运行的一个或者一组应用。
使用步骤

  • 1,安装docker
  • 2、去docker仓库找到这个软件对应的镜像
  • 3、使用docker运行这个镜像,这个镜像就会生成一个docker容器
  • 4、对容器的启动停止就是对软件的启动停止

3、安装docker(in Linux)

1、查看centos版本,必须是3.10以及以上版本
uname -r 
2、安装docker
yum install docker
3、输入y,确认安装,等待complete来完成安装
4、systemctl start docker来启动docker
docker -v 来查看版本
5、开启启动docker
systemctl enable docker
6、停止docker
systemctl stop docker

4、常用操作

镜像操作
1、搜索docker仓库
docker search mysql
2、现在我们拉去镜像
docker pull mysql:[tag版本]
3、查看所有镜像
docker images
4、删除镜像
docker rmi 镜像id
容器操作

软件镜像-运行镜像(安装程序)-产生容器(正在运行的软件)

1、搜索镜像
docker search tomcat
2、下载镜像【默认tomcat:latest】
docker pull tomcat
3、依据镜像首次开启容器
docker run --name mytomcat -d tomcat:latest
4、查看运行中的容器
docker ps 
5、停止容器
docker stop 容器ID
6、查看所有容器
docker ps -a
7、启动容器
docker start 容器id
8、删除容器【必须是停止状态】
docker rm 容器id 
9、启动一个端口映射的tomcat
docker run -d  -p 8888:8080 tomcat
-d 后台影响
-p 映射端口
10、查看防火墙状态
service firewalld status
11、关闭防火墙
service firewalld stop
12、查看容器日志
docker logs

更多的命令,请参考官方文档
一个镜像可以启动多个容器,并且每一个都是独立的。互不干扰。

5、环境搭建

我们可以在Docker Images在线库中安装我们需要的各种镜像

mysql【错误版本】

[root@ecs-s6-medium-2-linux-20190906163518 ~]# docker pull mysql //拉取mysql
[root@ecs-s6-medium-2-linux-20190906163518 ~]# docker run --name mysql01 -d 62a9f311b99c//运行mysql 
bbe756f0cad3fa02e9ee5f93f05009321ef6d14dddfffd70004f7b188be74074
[root@ecs-s6-medium-2-linux-20190906163518 ~]# docker ps//查看运行中的容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

//发现运行后出现了exited错误。
[root@ecs-s6-medium-2-linux-20190906163518 ~]# docker ps -a//查看所有容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
bbe756f0cad3        62a9f311b99c        "docker-entrypoint..."   26 seconds ago      Exited (1) 25 seconds ago                       mysql01

//于是我们查看一下日志
[root@ecs-s6-medium-2-linux-20190906163518 ~]# docker logs bbe756f0cad3
error: database is uninitialized and password option is not specified 
  You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
//明白了其实是因为在创建mysql容器的时候没有设定mysql的root密码。或者设定空密码权限与随机密码。
一怒之下我们删除这个镜像
[root@ecs-s6-medium-2-linux-20190906163518 ~]# docker rm bbe756f0cad3
bbe756f0cad3
 [root@ecs-s6-medium-2-linux-20190906163518 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
//现在就没有镜像了

mysql【正确版本(伪)】

[root@ecs-s6-medium-2-linux-20190906163518 ~]# docker run --name mysql-1 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
0c97c45ddeba7b0e3a4fc6495f70bb622f6fa47eca4a4223505b31092aca126c
[root@ecs-s6-medium-2-linux-20190906163518 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
0c97c45ddeba        mysql               "docker-entrypoint..."   4 seconds ago       Up 3 seconds        3306/tcp, 33060/tcp   mysql-1
[root@ecs-s6-medium-2-linux-20190906163518 ~]# 

navicat连接发现还是不行。想了一下原来是因为没有做端口映射

mysql【正确版本】

//停止上一个mysqldocker
[root@ecs-s6-medium-2-linux-20190906163518 ~]# docker stop 0c97c45ddeba 
0c97c45ddeba
//完全版的运行
[root@ecs-s6-medium-2-linux-20190906163518 ~]# docker run -p 3306:3306  --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
9d6043ae38a7c470e4902e734f61ac362c672a8ceaf1d54b1e74af52ed4b6777
[root@ecs-s6-medium-2-linux-20190906163518 ~]# 

ps:若是云端docker,需要到相应的后台开启3306端口的白名单

至此,docker环境下的mysql就搭建完成了。

几个其他的mysql操作
docker run -v my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
//把主机的/my/custom的文件挂载到mysqldocker的/etc/mysql/conf.d文件夹里
改mysql的配置文件就只需要把mysql配置文件放在
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
docker run --net=host --restart=always --privileged=true -v /usr/docker_dat/mysql/data:/var/lib/mysql --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v /etc/localtime:/etc/localtime:ro -d mysql --lower_case_table_names=1

--restart=always 跟随docker启动
--privileged=true 容器root用户享有主机root用户权限
-v 映射主机路径到容器
-e MYSQL_ROOT_PASSWORD=root 设置root用户密码
-d 后台启动
--lower_case_table_names=1 设置表名参数名等忽略大小写

这样就完成了Mysql的全部docker镜像安装。可以按照这个步骤去安装redis等其他镜像

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值