一、docker基础概念
Docker是用GO语言开发的应用容器引擎,基于容器化,沙箱机制的应用部署技术。
docker的本质是线程隔离,不是像虚拟机一样有完整的隔离
部署docker的基础流程:通过Dockerfile生成docker镜像—>让docker容器跑起来—>docker容器中跑服务。
Dockerfile
Dockerfile 的文件名是固定的,不能编辑。它是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
介绍命令参数:
FORM:定制的镜像都是基于 FROM 的镜像,这里的 openjdk 就是定制需要的基础镜像,后续操作都是基于openjdk
VOLUME:挂载一个数据卷,这里因为没有名称,所以是一个默认的数据卷(后面详细解释)
ADD:添加一层镜像到当前镜像,这里就是添加SpringBootTest镜像到当前层,并改名app.jar
EXPOSE:暴漏端口,因为我们的自己的端口是8003,所以我们暴漏8003
ENTRYPOINT:设定容器启动时第一个运行的命令及其参数,这里就是容器以启动就执行 java -jar /app.jar
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD learn-docker-storage-2.0-SNAPSHOT.jar app.jar
EXPOSE 8003
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
二、操作
打包镜像
docker bulid -t 仓库名/镜像名:tag .
参数解释:
-t: 镜像的名字及标签,一般命名规则是 仓库名/镜像名:tag,
仓库名:一般是私服或者dockerhub等地址,如果忽略默认就是dockerhub的地址docker.io/library/
镜像名称:就是我们的自己的服务名称,可以随意命名
tag:就是我们的版本号
.:这个 . 表示当前目录,这实际上是在指定上下文的目录是当前目录,docker build 命令会将该目录下的内容打包交给 Docker 引擎以帮助构建镜像。
运行镜像
# 运行容器
docker run -d -p 8003:8003 learn-docker-storage:0.0.1
# 查看运行中的容器
docker ps
参数解释:
-d:后台运行
-p:映射端口,将宿主机的8080端口映射到docker内部的8080端口上
查看日志
docker logs -f 74c239792266
删除容器
先停止容器
docker stop 容器id
再删除容器
docker rm 容器id
注意:已经停止的容器可以使用docker rm 容器ID删除容器,但是对于运行中的容器可以加上-f参数强制删除
查看容器详情
docker inspect learn-docker-storage|grep Mounts -A20
查看网络列表
可以通过docker network ls命令查看网络列表
# 查看网络列表
docker network ls