一.安装
请查看官方文档https://docs.docker.com/docker-for-windows/install/,win10和mac都可以安装,所以大家可以本机装一个玩玩。
二.镜像&容器
镜像可以理解成war包,容器可以理解成tomcat,镜像可以更新不同的版本,容器可以启停,查看日志,配置参数。
镜像
查找镜像
docker search <镜像名称>
eg.
docker search tomcat
OFFICIAL表示是否是官方镜像,每个镜像会有多个版本(官方交Tags),具体每个版本的描述可以去DockerHub上查看。
下载镜像。如果没有版本号默认下载最新版本。
docker pull <镜像名称>:<版本号>
查看镜像列表
docker images
删除镜像
docker rmi <IMAGE ID>
eg.
docker rmi 5e35e350aded
docker commit基本用不到。
容器
查看正在运行的容器
docker ps
查看所有容器
docker ps -a
DockerHub上每个镜像的描述里都有详细的容器启动说明,使用镜像前最好阅读下。
启动容器
docker run <镜像名称>:<版本号>
常用的参数:
参数 | 说明 |
---|---|
-d | 后台启动,无日志输出 |
--rm | 容器停止后自动删除容器。 |
-p <宿主机端口号>:<容器端口号> | 映射容器端口到宿主机。注意是小写 p,docker 网络模式默认是 bridge,如果不映射端口,就只能用容器的 ip 去访问了,实际使用中是不可能这样访问的。所以端口一定要映射。 |
--name <自定义容器名称> | 不指定的话,docker 会自动生成一个名字。这个最好指定下,自定义容器名称可以用来方便地操作容器。 |
-v <宿主机文件路径>:<容器文件路径> | 把容器里的目录挂载到宿主机。默认可读写。 |
启动一个空的tomcat容器
docker run -d --name tomcat8 -p 8082:8080 -v ~/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8.5.49-jdk8
这里我把本地的 ~/tomcat/webapps 目录挂载到容器的 tomcat 目录,容器启动的时候就会包含 ~/tomcat/webapps 里的项目。
docker run 相当于把war包放入tomcat启动,我们可以用同一个镜像启动多个不同的容器。
查看容器ip
docker exec -it <容器名称> IP a
docker exec -it tomcat8 ip a
查看容器日志
docker logs -f <容器名称>
docker logs -f tomcat8
进入容器内部
docker exec -it <容器名称> bash
docker exec -it tomcat8 bash
停止容器
docker stop <容器名称>
启动一个停止的容器
docker start <容器名称>
删除容器
docker rm <容器名称>
删除容器前 需要先停止容器
3.dockerfile
用-v 挂载本地目录的方式启动tomcat,可以达到部署项目的目的。我们使用Dockerfile可以直接把项目变成镜像,也可以达到部署项目的目的。
参数 | 说明 |
---|---|
FROM | 使用的基础镜像 |
MAINTAINER | 作者 |
RUN | 构建新镜像时执行的命令。 |
COPY | 拷贝文件到新镜像中。 |
EXPOSE | 提示新镜像可以映射的端口号。这个实际上是没有意义的,最终哪些端口映射到宿主机还是要 -p 指定。 |
dockfie文件一般放在开发工程的根目录下。
在dockfile所在路径下执行命令,生成镜像
docker build -t <镜像名称>:<版本号>
dockerfile构建的时候是会使用缓存的,只有当dockfile有修改的情况下才会不使用缓存,如果要强制dockerfile不使用缓存构建,可以使用--no-cache参数
docker build --no-cache -t <镜像名称>:<版本号>
有时候开发工程中会有两套 Dockerfile 配置,可以 -f 命令指定构建时使用的 Dockerfile 文件。在现在主流的 IDE(IDEA、VSCode)中使用<字符串>.Dockerfile(例如:slim.Dockerfile) 命名的 Dockerfile 文件会被识别。
docker build -t <镜像名称>:<版本号> -f <Dockerfile 文件名> .