注册账号
- 点击访问 DockerHub 创建一个仓库
- Username 后续作为仓库的唯一标识,不能乱取
- 之后可进入 Repository 创建仓库
编写Docker相关文件
- Dockerfile
- build.sh 一个打包命令,可以不创建直接在终端执行该命令
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 |
Java项目示例
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local
# 拷贝jdk和java项目的包
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.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
- 上述代码多数都用于配置jdk了,比较麻烦
- 使用已经配置好jdk的基础镜像可以实现相同效果
# 指定基础镜像
FROM java:8-alpine
# 拷贝java项目的包
COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
build.sh
用于根据Dockerfile
构建镜像的shell脚本
docker build -f ./Dockerfile -t bytelog/imagename .
bytelog
为dockerhub账号的用户名(Username),二者必须相同imagename
要和仓库名称一致
上传镜像
- 执行
build.sh
构建镜像 - 上传至DockerHub(Windows下载DockerDesktop并登录注册的账号)
- 进入仓库DockerHub查看结果