Dockerfile是什么?描述出镜像文件需要的一些[依赖配置]和[环境变量]执行命令
DockerFile指令:
- FROM 指定父镜像: 基于哪个镜像image构建 指定基础镜像,必须为第一个命令
- MAINTAINER :维护者
- RUN: 容器创建的时候执行一段命令 构建镜像时执行的命令
- ADD: 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
- COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
- CMD:构建容器后调用,也就是在容器启动时才进行调用。 .sh执行文件
- ENV: 设置环境变量
- EXPOSE: 指定于外界交互的端口
- VOLUME 用于指定持久化目录
- WORKDIR 设置进入容器时的路径 默认访问的目录
1.1 案例一: 定制CentOS镜像名称 1.1.1 编写Dockerfile文件https://github.com/docker-library/tomcat/blob/385e8403a38fab7097d4c3fed2484caba7dfd099/8.5/jdk8/openjdk-slim-buster/Dockerfile
规范:
A.#描述注释
B.指令必须要大写,后面至少需要带至少一个参数;
C.指令是按照从上到下,顺序执行;
1.编写Dockerfile文件: #继承Docker Hub中的centos镜像文件 FROM centos #制作镜像文件作者 MAINTAINER mayikt-yushengjun #配置环境变了 MYPATH 环境变了名称 ENV MYPATH /usr #进入到容器中默认访问目录 /usr WORKDIR $MYPATH #安装 下载vim RUN yum -y install vim #外部访问端口号 EXPOSE 80 #容器启动成功后,自动进入到容器中 CMD /bin/bash1.1.2 dockerfile文件变成镜像文件
docker build---将该Dockerfile实现打包成镜像文件 比如: "docker build -f Dockerfile -t mycs:1 ." 说明: Dockerfile ------配置文件 mycs----打包镜像文件名称 1--- tag 版本号码1.1.3 运行镜像文件
比如:docker run -it mycs:11.2 案例二:将SpringBoot项目打包部署(使用原生方式) 1.2.1 打jarbao
自己的项目打包生成jar文件
1.2.2 编写Dockerfile文件Dockerfile文件
# 基础镜像使用java FROM java:8 # 作者 MAINTAINER tom # VOLUME 指定了临时文件目录为/tmp。 # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp VOLUME /tmp # 将jar包添加到容器中并更名为mayikt.jar ADD mayikt-mysql-demo-0.0.1-SNAPSHOT.jar mayikt.jar # 运行jar包 RUN bash -c 'touch /mayikt.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/mayikt.jar"] #暴露9999端口1.2.3 上传jar、dockerfile文件到服务上
jar /dockerfile 放到一个文件夹下
1.2.4 构建镜像文件比如: “docker build -f Dockerfile -t mysqldemo:1 .”
1.2.5 运行容器比如:“docker run -it -p 8080:9999 mysqldemo:1”
1.2.6 访问http:// 120.48.28.131:8080/getTeams-他
响应结果:
[{“id”:1,“teamName”:“架构组”},{“id”:2,“teamName”:“测试组”},{“id”:3,“teamName”:“java组”},{“id”:4,“teamName”:“前端n组”}]
二、Docker Compose 容器编排技术 补充: 常用Docker命令docker 安装redis:
docker run -p 6379:6379 --name redis -v /data/redis/conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
- 查看docker 启动日志
docker logs -f 容器id
- docker 查看redis版本:
#docker exec -it container-name-or-id redis-server -v [root@VM-0-6-centos ~]# docker exec -it redis redis-server -v Redis server v=6.2.6 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=1527eab61b27d3bf [root@VM-0-6-centos ~]#



