栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Dockerfile&Docker-Compose

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Dockerfile&Docker-Compose

Dockerfile&Docker-Compose
  • Dockerfile
    • 1.Docker远程API开放
    • 2.Dockerfile文件说明
    • 3.项目集成Dockerfile
    • 4.Idea插件集成Dockerfile

Dockerfile

dockerfile介绍:
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。。 Docker通过读取Dockerfile中的指令自动生成镜像。

1.Docker远程API开放

Docker 服务端开放 Remote API,Docker服务器默认只支持本地访问,所以需要开放远程调用权限。

#编辑daemon.json
vi /etc/docker/daemon.json

#往daemon.json中添加远程端口和地址
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
#添加完后的内容
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"],
"registry-mirrors":["https://almtd3fa.mirror.aliyuncs.com"]
}

上面配置了Docker API远程访问端口,我们接下来配置自动启动:

#创建(或修改)文件/etc/systemd/system/docker.service.d/override.conf,添加内容如下
##Add this to the file for the docker daemon to use different ExecStart
parameters (more things can be added here)
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
#执行systemctl命令使得配置生效
systemctl daemon-reload
#重启Docker服务
systemctl restart docker

执行命令 netstat -ntlp 查看相应 2375 端口是否开启监听状态。

#安装net-tools
yum install net-tools

#端口查看
netstat -ntlp

2.Dockerfile文件说明

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,# 为Dockerfile 中的注释。
Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以# 字符开头则被视为注释。可以在Docker文件中使用 RUN , CMD, FROM ,EXPOSE,ENV 等指
令。

1. FROM:指定基础镜像,必须为第一个命令

2. MAINTAINER: 维护者信息

3. RUN:构建镜像时执行的命令

4. ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget

5. COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
6. CMD:构建容器后调用,也就是在容器启动时才进行调用。

7. ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。

8. LABEL:用于为镜像添加元数据

9. ENV:设置环境变量

10. EXPOSE:指定于外界交互的端口

11. VOLUME:用于指定持久化目录

12. WORKDIR:工作目录,类似于cd命令

13. USER:指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。使用USER指定用户时,可以使用用户名、UID或GID,或是两者的组合。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户

14. ARG:用于指定传递给构建运行时的变量

15. ONBUILD:用于设置镜像触发器

以下是一个小例子:

下面是一个很形象的总结:

3.项目集成Dockerfile

项目中可以直接使用Dockerfile,基于 docker-maven-plugin 插件使用非常方便,我们在项目中首先引入依赖:

#配置奖项REPOSITORY,例如 hailtaxi/driver 可以按照如下配置添加到pom.xml中

#镜像前部分
hailtaxi
#镜像后部分
driver

        #引入插件依赖

com.spotify
docker-maven-plugin
1.0.0

    
    http://192.168.211.145:2375
    ${docker.image.prefix}/${docker.image.name}
    
    src/main/docker
    
        
            /
            ${project.build.directory}
            ${project.build.finalName}.jar
        
    


关于插件更多参数,大家可以参考下面列表:

引入插件之后,我们需要在项目中创建 Dockerfile 配置文件,创建
src/main/docker/Dockerfile ,配置如下:

#基础镜像
FROM java:8
#挂载目录
VOLUME /tmp
#将hailtaxi-driver-1.0-SNAPSHOT.jar添加到容器中
ADD hailtaxi-driver-1.0-SNAPSHOT.jar /driver.jar
#指定容器启动程序及参数
ENTRYPOINT ["java","-jar","/driver.jar"]

我们需要把自己的项目创建成镜像并发布,需要先安把当前工程打包(或者安装到Maven本地仓库):

我们接下来在maven面板中找到Plugins>docker>docker:build,双击它,此时会创建容器。

控制台会输出镜像信息:

此时我们可以看到IDEA的 Services 中有Docker信息,可以看到服务器上的Docker镜像和容器,如下图:

我们可以选择 hailaxi/driver:lastest右键创建容器:

此时我们需要填写容器名字以及创建容器所需的额外参数,如下图:

容器创建后,在Containers中会显示当前已经创建好的容器,点击容器,可以选择 Show Log 查看日志,如下图:

4.Idea插件集成Dockerfile

上面集成Dockerfile用到了插件包,我们可以直接使用Idea插件集成Dockerfile要更简单,操作如下:

配置完成后,点击执行,如下图:

执行完成后,在Idea的Services中会显示容器和镜像,如下图:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/643797.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号