docker file命令解释大全
1. docker file基础指令
dockerfile组成 | 指令 |
---|---|
基础镜像指令 | FROM |
维护者信息 | MAINTAINER |
镜像操作指令 | RUN COPY. ADD、EXPOSE等 |
容器启动时执行 | CMD、ENTRYPOINT |
2. Dockerfile指令详解
Dockerfile指令 | 使用说明 |
---|---|
FROM | 第一条指令必须为FROM指令,指定Base镜像 |
MAINTAINER | 指定维护者信息 |
RUN | 在当前镜像基础上执行指定命令 |
CMD | 启动容器时执行的命令 |
EXPOSE | Docker服务端容器暴露的端口号 |
ENV | 指定一个环境变量 |
ADD | 将复制指定的源路径到容器中的目标路径 |
COPY | 复制本地主机的源路径(为Dockerfile所在目录的相对路径)到容器中的目标路径 |
ENTRYPOINT | 配置容器启动后执行的命令,并且不可被docker run提供的参数覆盖 |
VOLUME | 创建一个可以从本地主机或其他容器挂载的挂载点 |
USER | 通过该命令指定运行用户 |
WORKDIR | 为后续的RUN、CMD、ENTRYPOINT指令配置工作目录 |
ONBUILD | 配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令 |
1. 使用docker file构建第一个springBoot项目
上传一个apps.jar的springBoot包
2. 编写Dockerfile文件
vim Dockerfile
Dockerfile内容为下放:
FROM java:8
VOLUME /tmp
ADD apps.jar /apps.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/apps.jar"]
3. 使用docker构建
docker build -t apps .
4. 使用docker 启动镜像
docker run -d -p 8888:8888 --name apps apps
5. 查看容器apps的日志命令:
docker logs -f -t --tail 200 apps
至此helloWord级别的docker的springBoot应用就可以了
2.2 使用env命令传入动态变量供容器使用
这里使用sh脚本的方式传入的ENTRYPOINT的方式未解决传入失效的问题
FROM baseimage
VOLUME /tmp
WORKDIR /usr/website/app
RUN ls
RUN mkdir -p /usr/website/app && \
cd /usr/website/app
RUN ls
COPY startup.sh /usr/website/app
COPY apps.jar /usr/website/app
RUN chmod +x /usr/website/app/startup.sh
#定义的默认参数
ENV XMSTEST 20M
# 打印一下默认值
RUN echo 'XMSTEST=' $XMSTEST
#启动脚本时要把变量传入
CMD sh /usr/website/app/startup.sh $XMSTEST
#!/bin/bash
XMSTEST=$1
echo "XMSTEST=" ${XMSTEST}
java -Xms:${XMSTEST} -Djava.security.egd=file:/dev/./urandom -jar apps.jar
启动容器即可
#启动命令
docker run -p 8888:8888 -e XMSTEST="90M" -d --name apps apps
3. docker 容器相关操作
当docker run 后相关的images就会成为container
#查看所有container
docker container ls -a
#通过container id 删除container
docker rm 1c4586fe95ee
4. docker images相关操作
1. 查看所有镜像
docker image ls
2. 删除镜像
通过repository删除
docker rmi bigni/test3
#通过image id 删除
docker rmi e2b5b08cc31c
5.docker maven
环境:
- jdk1.8
- maven
- docker(最新版)
1:pom.xml增加docker相关插件
<build>
<finalName>springBootDocker</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<imageName>docker-springBoot:v1</imageName>
<baseImage>java</baseImage>
<entryPoint>["java","-jar","/${project.build.finalName}}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}}</directory>
<include>${project.build.finalName}</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
2:源码包上传到Linux系统
3:使用maven命令构建
mvn clean package docker:build
docker images