SpringBoot之Docker

一、何为Docker?

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,
然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。

运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操作系统,安装好后什么都有了;

二、Docker核心概念
docker镜像(Images):Docker 镜像是用于创建 Docker 容器的模板。软件打包好的镜像;放在docker仓库中;
docker容器(Container):容器是独立运行的一个或一组应用。镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
docker客户端(Client):客户端通过命令行或者其他工具使用,连接docker主机进行操作;
Docker API(https://docs.docker.com/reference/api/docker_remote_api)与 Docker 的守护进程通信
docker主机(Host):一个物理或者虚拟的机器用于执行Docker 守护进程和容器。安装了Docker程序的机器(Docker直接安装在操作系统之上);
docker仓库(Registry):Docker 仓库用来保存镜像,可以理解
为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。


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

3、安装Docker

1)、安装linux虚拟机和镜像

http://mirrors.aliyun.com/centos/7/isos/x86_64/

Centos7.1安装步骤图解:https://blog.csdn.net/qq_33233768/article/details/74929702

CentOS7中systemctl的使用:https://blog.csdn.net/u012486840/article/details/53161574

2)、虚拟机设置与登录

设置虚拟机网络;桥接网络=选好网卡==接入网线;

Linux Redhat ens33不显示IP问题:https://blog.csdn.net/zhengzhaoyang122/article/details/79120895

CentOS7使用如下重启网络设置:

systemctl restart network

设置好网络以后使用命令重启虚拟机的网络:

service network restart 

查看linux的ip地址:

ip addr

在linux虚拟机上安装docker:

1、检查内核版本,必须是3.10及以上
uname ‐r
注意:如果不是需要升级:使用:yum update
2、安装docker
yum install docker
3、输入y确认安装
4、启动docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker ‐v
Docker version 1.12.6, build 3e8e77d/1.12.6
5、开机启动docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi‐user.target.wants/docker.service to
/usr/lib/systemd/system/docker.service.
6、停止docker
systemctl stop docker
4、Docker常用命令&操作

1)、镜像操作


Docker仓库:https://hub.docker.com/

docker pull mysql

tag:https://hub.docker.com/r/library/mysql/tags/


容器操作
软件镜像(QQ安装程序)----运行镜像----产生一个容器(正在运行的软件,运行的QQ);


更多命令 https://docs.docker.com/engine/reference/commandline/docker/

1、搜索镜像
[root@localhost ~]# docker search tomcat
2、拉取镜像
[root@localhost ~]# 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
[root@localhost ~]# docker run ‐d ‐p 8888:8080 tomcat
‐d:后台运行
‐p: 将主机的端口映射到容器的一个端口    主机端口:容器内部的端口
10、为了演示简单关闭了linux的防火墙
service firewalld status ;查看防火墙状态
service firewalld stop:关闭防火墙
11、查看容器的日志
docker logs container‐name/container‐id
更多命令参看
https://docs.docker.com/engine/reference/commandline/docker/
可以参考每一个镜像的文档

docker run ‐d ‐p 8888:8080 tomcat #这样使用ip:8888即可以访问docker的tomcat
systemctl stop firewalld
systemctl status firewalld

修改不同的端口映射即可开启多个不同的Tomcat了

安装MySQL示例

docker pull mysql

错误的启动

[root@localhost ~]# docker run ‐‐name mysql01 ‐d mysql
42f09819908bb72dd99ae19e792e0a5d03c48638421fa64cce5f8ba0f40f5846
mysql退出了
[root@localhost ~]# docker ps ‐a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS
                         PORTS               NAMES
42f09819908b        mysql               "docker‐entrypoint.sh"   34 seconds ago      Exited
(1) 33 seconds ago                            mysql01
538bde63e500        tomcat              "catalina.sh run"        About an hour ago   Exited
(143) About an hour ago                       compassionate_
goldstine
c4f1ac60b3fc        tomcat              "catalina.sh run"        About an hour ago   Exited
(143) About an hour ago                       lonely_fermi
81ec743a5271        tomcat              "catalina.sh run"        About an hour ago   Exited
(143) About an hour ago                       sick_ramanujan
//错误日志
[root@localhost ~]# docker logs 42f09819908b
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;这个三个参数必须指定一个

正确的启动

[root@localhost ~]# docker run ‐‐name mysql01 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql
b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS  
           PORTS               NAMES
b874c56bec49        mysql               "docker‐entrypoint.sh"   4 seconds ago       Up 3
seconds        3306/tcp            mysql01

做了端口映射

[root@localhost ~]# docker run ‐p 3306:3306 ‐‐name mysql02 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d
mysql
ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS  
           PORTS                    NAMES
ad10e4bc5c6a        mysql               "docker‐entrypoint.sh"   4 seconds ago       Up 2
seconds        0.0.0.0:3306‐>3306/tcp   mysql02

docker启动容器端口映射错误:https://blog.csdn.net/wan_guo_shi/article/details/79137950

几个其他的高级操作:

docker run ‐‐name mysql03 ‐v /conf/mysql:/etc/mysql/conf.d ‐e MYSQL_ROOT_PASSWORD=my‐secret‐pw
‐d mysql:tag
把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面
改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/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
指定mysql的一些配置参数

猜你喜欢

转载自blog.csdn.net/qq_35508033/article/details/80722671