SpringBoot与Docker
1、Docker是一个开源的应用容器引擎;不是虚拟机,是一个轻量级容器技术,但却实现了虚拟机的功能。
2、相关概念及介绍
Docker主机(Host):安装了docker程序的机器(Docker直接安装在操作系统上面的);
Docker客户端(Client):连接Docker主机进行操作
Docker仓库(Registry):用来保存各种打包好的软件镜像;
Docker镜像(Images):软件打包好的镜像;放在Docker仓库里面
Docker容器(Container):镜像启动以后的容器就称为一个实例;容器就是独立运行的一个或一组应用
使用Docker的步骤
1、安装Docker
2、去Docker仓库找到这个软件对应的镜像
3、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器,容器就代表当前正在运行的应用;
4、对容器的启动停止就是对软件的启动停止
centos7镜像系统操作
步骤1、检查内核版本,必须是3.10及以上
uname -r查看内核版本 Docker要求Centos系统的内核版本高于3.10
如果内核版本不够使用yum update升级软件包及内核
2、安装docker
yum install docker
3、输入y确认安装
4、启动 docker
systemctl start docker
查看docker的版本
docker -v
将docker服务设为开机启动 systemctl enable docker
停止docker
systemctl stop docker
docker search 软件
去仓库里面搜索mysql的镜像
例如:docker search mysql
默认的话就是去docker hub(https://hub.docker.com/)搜索一些软件的镜像
docker pull 镜像 (去docker hub上面抓取相应到镜像到本地)
例如 docker pull mysql(默认拉取最新版本的)
docker pull mysql:5.6下载5.6版本的mysql
docker images查看docker所有的镜像
docker rmi image-id 删除指定的本地镜像
2)、docker容器操作
软件的镜像(可以类比QQ的安装程序)----运行镜像----产生一个容器(正在运行的软件,运行的QQ);
步骤
1、搜索镜像
docker search tomcat
2、拉取镜像
docker pull tomcat
3、根据镜像启动容器
docker run --name mytomcat(自己取的名字) -d(后台运行) tomcat(镜像):latest(tag标签)
[root@iZbp16pad23826w5ejwmafZ ~]# docker run --name myTomcat -d tomcat
6e12d92d4f45a054a2657e4fe6c9af6d4171100754203442efec7fb68fd72a57(当出现这一串项目唯一id之后,容器就运行起来了)
4、查看运行中的容器列表
docker ps
5、停止运行中的容器
docker ps查看容器的container id或者names
docker stop container id或者 names
docker stop myTomcat
6、查看所有的容器
docker ps -a 查看所有的容器
docker ps是查看所有在运行中的容器
7、启动容器
docker start (容器id或者自己创建的名字)
docker start myTomcat
删除容器
docker rm container-id(容器id或者自己定义的名字)
docker rm myTomcat
9、启动一个做了端口映射的tomcat
docker run --name container-name -d image-name(--name:自定义容器名,-d:后台运行,image-name:指定镜像模板)
docker run --name container-name -d -p 6379:6379 image-name(--name:自定义容器名,-d:后台运行,image-name:指定镜像模板)
-p:将主机端口(映射到)容器内部的端口 主机端口:容器端口
docker run (--name myTomcat(自定义容器名) 可选) -d(后台运行) -p(端口映射) 8888(docker内部端口):8080(主机端口) tomcat
将虚拟机内部的8888端口映射到主机的8080端口
如果没有自定义名字的话,docker会自定义一个名字
service firewalld status; 查看防火墙状态
service firewalld stop; 关闭防火墙
容器日志 docker logs container-name/container-id
3)、安装mysql示例
从docker hub上面抓取mysql,命令:docker pull mysql
mysql退出了
[root@iZbp16pad23826w5ejwmafZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7339e147ea1 mysql "docker-entrypoint..." 2 minutes ago Exited (1) 2 minutes ago mySql
0c2204646d93 tomcat "catalina.sh run" About an hour ago Up About an hour 0.0.0.0:8888->8080/tcp myTomcat
错误日志
[root@iZbp16pad23826w5ejwmafZ ~]# docker logs e7339e147ea1
2020-04-12 08:47:54+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
2020-04-12 08:47:54+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2020-04-12 08:47:54+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
2020-04-12 08:47:54+00:00 [ERROR] [Entrypoint]: 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
这三个参数必须制指定一个
正确启动
[root@iZbp16pad23826w5ejwmafZ ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
78634f8daa1d8c338b577a11699f920a1de7673383753354ee252b32104add60