Docker学习笔记——DockerFile

Dockerfile 是用来构建docker镜像的文件,由一行一行的命令组成,它的本质是命令参数脚本

构建步骤:

  1. 编写一个dockerfile文件
  2. Docker build 构建成一个镜像
  3. Docker run 运行镜像
  4. Docker push 发布镜像(Docker Hub、阿里云镜像仓库)

1、DockerFile构建过程

基础知识

  1. 每个保留关键字(指令)都必须是大写

  2. 执行从上到下

  3. # 表示注释

  4. 每个指令都会创建提交一个新的镜像层,并提交
    在这里插入图片描述

DockerFile是面向开发的,我们以后发布项目,做镜像,就需要编写Dockerfile文件,不用担心,这个文件十分简单

Docker镜像逐渐成为企业交付的标准,必须掌握

步骤:开发,部署,运维

  1. DockerFile:构建文件,定义了一切步骤,源代码
  2. DockerImages:通过DokerFile构建生成的镜像,最终发布和运行的产品
  3. Docker容器:容器就是镜像运行起来提供服务器

2、DockerFile的指令

以前的话我们就是使用别人的镜像,现在我们可以自己写一个镜像

参数说明

FROM		# 基础镜像,一切从这里开始构建
MAINTAINER	# 镜像是谁写的,姓名+邮箱
RUN			# 镜像构建的时候需要运行的命令
ADD			# 步骤:tomcat镜像,这个tomcat压缩包|添加内容
WORKDIR		# 镜像工作目录
VOLUME		# 挂载到的目录位置
EXPOSE		# 暴露端口配置
CMD			# 指定这个容器启动的时候要运行的命令,只有最后一个会剩下,可被替代
ENTRYPOINT	# 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD		# 当构建一个被继承 DockerFile 这个时候就会运行ONBUILD 的指令,触发指令
COPY		# 类似ADD,将我们文件拷贝到镜像中
ENV			# 构建的时候需要设置的环境变量

在这里插入图片描述

3、实战测试

创建一个自己的centos

# 1、构建dockerfile文件
[root@iZbp12zsvvo3kfr5wvnm4lZ dockerfile]# vim mydockerfile-centos
[root@iZbp12zsvvo3kfr5wvnm4lZ dockerfile]# cat mydockerfile-centos
FROM centos
MAINTAINER minami<1643433638@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash

# 2、通过build命令构建镜像
# 命令 docker build -f dockerfile文件路径 -t 镜像名:[tag]
Successfully built 1e8d644ece07
Successfully tagged mycentos:0.1

# 3、测试
# 命令 docker run -it mycentos:0.1

在这里插入图片描述
我们可以通过 docker history 镜像id 来查看镜像的历史变更

在这里插入图片描述

# 构建dockerfile文件
[root@iZbp12zsvvo3kfr5wvnm4lZ dockerfile]# vim dockerfile-cmd-test
FROM centos
CMD ["ls","-a"]
# 生成镜像
[root@iZbp12zsvvo3kfr5wvnm4lZ dockerfile]# docker build -f dockerfile-cmd-test -t cmdtest .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM centos
 ---> 5d0da3dc9764
Step 2/2 : CMD ["ls","-a"]
 ---> Running in 18b0dc71faaa
Removing intermediate container 18b0dc71faaa
 ---> e24fd8b97a95
Successfully built e24fd8b97a95
Successfully tagged cmdtest:latest
# 运行容器
[root@iZbp12zsvvo3kfr5wvnm4lZ dockerfile]# docker run cmdtest

4、实战:Tomcat镜像

步骤:

1、准备镜像文件

在这里插入图片描述

2、编写DockerFile

FROM centos
MAINTAINET minami<1643433638@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u241-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.53.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORK $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_241
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.53
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.53
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.53/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.53/bin/logs/catalina.out

3、构建镜像

docker build -t mytomcat:1.0

4、启动镜像

docker run -it -p 8080:8080 --name mytomcat mytomcat:1.0

5、访问测试

这里访问自己的ip地址加端口号:

http://192.168.40.106:8080/

如果出现了tomcat引导页面,即访问成功

6、发布项目(由于做了卷挂载,我们直接在本地编写项目就可以发布了)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">
</web-app>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
Hello World!<br/>
<%
System.out.println("------my test web logs------");
%>
</body>
</html>

发现:项目部署成功,可以直接访问ok

我们以后开发的步骤:需要掌握Dockerfile的编写,我们之后的一切都是使用docker镜像来发布运行

5、发布自己的镜像

DockerHub

  1. 地址:https://hub.docker.com/ 注册账号

  2. 确定这个账号可以登录

  3. 在我们服务器上提交自己的镜像

    [root@iZbp12zsvvo3kfr5wvnm4lZ tomcat]# docker login -u minamizh
    Password:
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded
    
  4. 登录完毕后就可以提交镜像了,就是一步,docker push

    [root@iZbp12zsvvo3kfr5wvnm4lZ tomcat]# docker push diytomcat:1.0
    The push refers to repository [docker.io/library/diytomcat]
    50407e5bb6ba: Preparing
    8b1daebed8ff: Preparing
    357a9d5c59ff: Preparing
    0b55622edce5: Preparing
    74ddd0ec08fa: Preparing
    
    # 一定要带版本号
    

    提交也是按照层级来进行提交的

阿里云镜像服务

  1. 找到阿里云
  2. 找到镜像服务
  3. 创建命名空间
  4. 创建容器镜像

小结

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
docker-compose 是一个用于定义和运行多个容器的工具,而 Dockerfile 是用于构建 Docker 镜像的文件。在使用 docker-compose 运行多个容器时,可以通过 Dockerfile 来定义每个容器所需的镜像。 以下是使用 docker-compose 结合 Dockerfile 的基本步骤: 1. 创建一个新的目录,并在该目录中创建一个名为 `docker-compose.yml` 的文件,用于定义容器组成和配置。 2. 在同一目录中,为每个容器创建一个文件夹,并在每个文件夹中创建一个 Dockerfile,用于构建该容器的镜像。可以根据需要,在 Dockerfile 中指定所需的基础镜像、软件包安装、文件复制等操作。 3. 在 `docker-compose.yml` 文件中定义每个容器的配置。使用 `services` 关键字来定义每个服务,并指定该服务使用的镜像和其他配置项。可以参考下面的示例: ```yaml version: "3" services: web: build: ./web # 指定构建 web 服务的 Dockerfile 所在路径 ports: - "8000:8000" # 指定端口映射 volumes: - ./app:/app # 挂载本地目录到容器内部 db: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=secret - MYSQL_DATABASE=mydatabase ``` 在上述示例中,定义了两个服务:`web` 和 `db`。`web` 服务使用 `./web` 目录中的 Dockerfile 构建镜像,映射本地端口 8000 到容器内部的 8000 端口,并挂载 `./app` 目录到容器内部。 `db` 服务使用官方的 `mysql:latest` 镜像,并设置了环境变量。 4. 运行 `docker-compose up` 命令来启动容器。docker-compose 会根据 `docker-compose.yml` 文件中的配置构建并启动容器组。 使用 docker-compose 结合 Dockerfile 可以更方便地定义和管理多个相关的容器,提高开发和部署的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值