官网地址:Docker Documentation | Docker Documentation
命令:https://docs.docker.com/engine/reference/commandline/container/
github的demo: GitHub - docker/labs: This is a collection of tutorials for learning how to use Docker with various tools. Contributions welcome.
启动:systemctl start docker
停止:systemctl stop docker
查看状态:systemtcl status docker
docker使用c/s结构
【图片截自官网】
Docker client 是大多数用户主要的用于操作docker的方式。它是一个命令行工具,允许用户输入docker命令(通过REST API 与Docker daemon进行通讯)调 Docker daemon执行相关操作。
Docker daemon是一个后台服务,监听api请求,进而对docker中的各种对象进行管理(如:image、container、network等),以及与其他的daemon交互。
Docker registries是一个存放image的地方。dockerhub是docker中默认的公共的仓库。用户可以从仓库拉取、推送镜像,以及删除等管理操作。我们可以在dockerhub注册账号,使用docker push
Docker objects
image:镜像是一个只读的模板,层级结构。包含着一系列用于创建容器的的指令(也可以理解为运行所需的一切要素条件),每行指令就构建镜像的一层。
container:容器是一个可运行的镜像的实例。一个容器包含了应用和它所需的所有依赖配置。从根本上说容器是一个与其他容器、主机相隔离而运行的进程。 容器与其他容器分享使用主机的内核。 当容器运行时,会在在只读的镜像层外多了一个可读写的容器层,通过容器层可以与用户文件系统交互。
【图片截自官网】
要删除一个正在运行的容器前需要停止它。
例如:docker run alpine
1、docker client 连接docker daemon
2、会现在本地docker库中找镜像,找不到就会去仓库中下载(仓库可用)
3、docker daemon 创建容器并运行它
如果是:docker run alpine ls -l
Dockerfile:定义了构建image的指令,每一条指令都会在image上创建一个层。当修改了Dockerfile的内容需要重新构建镜像,只会重建被修改的层。
官网文档介绍:
官方demo :https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
命令 :Dockerfile reference | Docker Documentation
使用Dockerfile将springboot项目构建成一个镜像,实现容器化,需要考虑怎么将运行应用所涉及的环境进行容器化。例如:如果想将整个应用所运行的所有环境制成一个镜像,就需要从操作系统镜像开始构建,再上增加数据库、web服务器、应用程序等。然而这样并不时一种好的方式,因为操作系统可以直接使用主机,数据库可以使用相应的官方镜像,应用程序可以和web服务器一起构建一个镜像。这些容器进行编排使用,这样更合理。
运行Springboot项目有两种方式:
我们采用第二种方式。以一个jre镜像为基础,将应用程序复制到这个jre的文件目录中
Dockerfile内容:
#构建基础镜像
FROM openjdk:8u275-jre-buster
#将jar包复制到镜像中
COPY ip.jar ip.jar
#指定当容器被运行时容器需要执行的命令,此命令就是启动应用程序
ENTRYPOINT ["java","-jar","/ip.jar"]
使用docker build命令构建image
修改代码后需要重新构建image,只需要再次执行build命令
docker build -t
-t 表示给镜像指定tag为
构建成功后可通过run命令运行镜像
docker run -p 8080:8080
-p 8080:8080 表示将左边主机的端口绑定到右边的容器的端口上,即访问左边主机端口就能访问到右边容器的端口。