Docker的应用场景
常用的8个Docker的真实使用场景,分别是简化配置、代码流水线管理、提高开发效率、隔离应用、整合服务器、调试能力、多租户环境、快速部署。
Docker的安装与启动
注:系统为macOS
MAC下Docker Desktop下载地址
- 下载完成后,进行安装。
终端输入docker –version查看docker版本
>docker verison
>Docker version 19.03.2, build 6a30dfc
- 查看docker下的镜像,使用docker images命令
- 查询docker下所有容器,使用docker container ls --all
- 启动docker下面的hello-world镜像
SpringBoot部署
- 编写Dockerfile
使用touch命令创建Dockerfile文件,并使用vim加入如下内容
FROM java:8
VOLUME /tmp
ADD gsg-1.0.1.jar app.jar
RUN bash -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar"]
- 创建镜像
前提:进入Dockerfile文件夹
命令:docker build -t [tag] .
-t:镜像的名字与标签
. : 表示在当前文件夹的Dockerfile创建镜像
tips:使用docker images 查看创建的镜像 - 运行镜像
命令:docker run --name [container-name] -d -p [host-port]:[container-port] [image-name]
container-name:容器别名
image-name:镜像名称
-d:后台运行
-p:[host-port]:[container-port]
tips:端口映射指的是容器端口映射到宿主机端口。
举个栗子:
docker run --name hello-world -d -p 8081:8080 docker-hello
说明:容器名为hello-world,镜像名为docker-hello,端口映射为8081:8080即在主机上通过localhost:8081或者127.0.0.1:8081访问到容器的8080端口
MySql部署(以5.7版本为例)
- 查看docker仓库中的mysql
命令:docker search mysql - 拉取mysql镜像到本地系统
命令:docker pull mysql:[version] - 启动mysql镜像
命令:
docker run --name mysql5.7 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
命令说明:
-p 3306:3306:将容器的3306端口映射到宿主机的3307端口
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
tips:如果在项目中使用mysql数据库,且在docker中进行了mysql数据库的配置启动,需要修改项目的数据库连接配置。
如何修改?
- 使用docker inspect CONTAINER_ID 查询mysql容器Ip
命令:docker inspect mysql
- 将项目中的数据库连接的localhost更改为上图的IPAddress
原因分析: 在Docker上为容器分配的ip一般不会是127.0.0.1,所以使用localhost无法映射到容器的ip地址。
至此, 在Docker中部署springboot与mysql实现完成。接下来即可在主机中使用localhost:8081访问springboot项目。同时也可以使用数据库可视化工具对mysql进行访问,只需要将url的地址修改为localhost:3307。
Docker常用命令
FROM命令
目的:指定基础镜像
特点:需要写在其他指令之前,之后的指令都依赖于该指令指定的镜像。
语法:
FROM [image]
FROM [image>]:
FROM [image]@
示例:FROM java:8
ADD命令
目的:复制文件
语法:ADD [src] [dest]
从src复制文件到容器的dest。src可以是Dockerfile所在目录的相对路径。
示例:
ADD spring-boot-docker.jar app.jar
(拷贝文件并且重命名)
VOLUME命令
目的:
1.加载本地目录下的配置文件到容器目标地址下
2.使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可共享其他容器。
语法:
VOLUME ["<路径1>","<路径2>"…]
VOLUME <路径>
示例:
VOLUME /tmp
VOLUME 指向了一个 /tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的 /var/lib/docker目录下创建一个临时文件并把它链接到容器中的 /tmp目录
docker exec命令
docker exec -it CONTAINER_ID bash
进入容器终端并且的保留为容器终端的输入形式.
docker inspect命令
docker inspect CONTAINER_ID
查询某个容器的ip