Dockerfile与DockerCompose

Docker的Image结构是怎样的?

  • 镜像是将应用程序 及其需要的 系统函数库、环境、配置、依赖 打包而成。

镜像结构

  • 入口( Entrypoint )
    • 镜像运行入口,一般是程序启动的脚本和参数
  • 层( Layer )
    • 在BaseImage基础上添加安装包、依赖、配置等,每次操作都形成新的一层。
  • 基础镜像( BaseImage )
    • 应用依赖的系统函数库、环境、配置、文件等

镜像是分层结构,每一层称为一个Layer
在这里插入图片描述

Dockerfile

  • Dockerfile 就是一个文本文件,其中包含一个个的 指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
指令 说明 示例
FROM 指定基础镜像 FROM centos:6
ENV 设置环境变量,可在后面指令使用 ENV key value
COPY 拷贝本地文件到镜像的指定目录 COPY 。/mysql-5.7.rpm /tmp
RUN 执行Linux的shell命令,一般是安装过程的命令 Run yum install gcc
EXPOSE 指定容器运行时监听的端口,是给镜像使用者看的 EXPOSE 8080
ENTRYPOINT 镜像中应用的启动命令,容器运行时调用 ENTRYPOINT java -jar xx.jar
更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/buider

示例:基于Ubantu镜像构建一个新镜像,运行一个java项目

  • 步骤1:新建一个空文件夹docker-demo
  • 步骤2: 拷贝课前资料中的docker-demojar文件到docker-demo这个目录
  • 步骤3:拷贝课前资料中的jdk8.tar.gz文件到docker-demo这个目录
  • 步骤4:拷贝课前资料提供的Dockerfile到docker-demo这个目录
  • 步骤5:进入docker-demo
  • 步骤6: 运行构建镜像命令:
    • docker build -t javaweb:1.0 .
    • -t 指的是tag 名称:版本号
    • 最后的 “.” 是指Dockerfile文件的所在目录,当前在此目录,所以用 “.”

Dockerfile:

#指定基础镜像
FROM ubuntu:16.04

#配置环境变量,JDK的安装目录
ENV JAVA DIR=/usr/local

#拷贝jdk和java项目的包6
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

#安装JDK
RUN cd $JAVA DIR
&& tar -xf ./jdk8.tar.gz&& mv ./jdk1.8._144 ./java8

#配置环境变量
ENV JAVA_HOME=$JAVA DIR/java8ENV PATH=$PATH:$JAVA HOME/bin

#暴露端口
EXPOSE 8099

#入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

DockerCompose

  • Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器
  • Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。相当于多个run命令的集合

Compose文件语法示例两种方式:

version:"3.8"
services:
	mysql:                                   #相当于 --name
		image: mysql:5.7.25  
		environment:                    #相当于 -e
			MYSQL_ROOT_PASSWORD: 123
		volumes:                                    #相当于 -v
			- /tmp/mysql/data:/var/lib/mysql
			- /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf
	Ruoyi :            # --name 临时构建
		build: .   #镜像构建目录
		ports:                       #相当于 -p
			8090: 8090

DockerCompose的详细语法参考官网: https://docs.docker.com/compose/compose-file/

下载配置DockerCompose

下载
curl -L
https://github.com/docker/compose/releases/download/1.29.1/docker-
compose-`uname -s`-`uname -m` > /usr/1ocal/bin/docker-compose

或者直接下载上传到 /usr/local/bin/

修改文件权限
chmod +x /usr/local/bin/docker-compose
Base自动补全命令
curl -L
https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现访问GitHub错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

docker-compose构建镜像并运行命令

# cd 要构建的文件目录内
docker-compose up -d  #up 构建并运行   down 停止并删除

更多命令 执行 --help查看

相关推荐

  1. DockerCompose

    2024-01-08 18:28:01       40 阅读
  2. DockerCompose的介绍、安装常用命令

    2024-01-08 18:28:01       19 阅读
  3. Dockerfile Docker Compose区别

    2024-01-08 18:28:01       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-08 18:28:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-08 18:28:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-08 18:28:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-08 18:28:01       18 阅读

热门阅读

  1. 信息学奥赛一本通:装箱问题

    2024-01-08 18:28:01       37 阅读
  2. TensorRT 自学笔记001 基础知识点和学习资源

    2024-01-08 18:28:01       41 阅读
  3. Android简单控件

    2024-01-08 18:28:01       30 阅读
  4. gunicorn基本使用

    2024-01-08 18:28:01       43 阅读
  5. golang如何生成csv文件

    2024-01-08 18:28:01       34 阅读
  6. Gin框架的数据校验

    2024-01-08 18:28:01       36 阅读
  7. 设计模式之开闭原则

    2024-01-08 18:28:01       41 阅读
  8. 数据库有哪些新方向?

    2024-01-08 18:28:01       44 阅读
  9. 在openEuler环境下快速编译GreatSQL RPM包

    2024-01-08 18:28:01       37 阅读