Version: 中文
docker file
利用 Docker 创建镜像运行 Jar 文件
1. 创建 Dockerfile 文件
FROM java:8
MAINTAINER 3795
ADD FileServer.jar file-server.jar
COPY config config
EXPOSE 9000
ENTRYPOINT ["java", "-jar", "file-server.jar"]
- FROM: 基础镜像,基于 jdk8 镜像开始
- MAINTAINER:作者
- ADD:将 jar 文件添加(复制)到镜像内,
FileServer.jar
源 jar 文件,file-server.jar
复制得到的 jar 文件。 - COPY: 将应用的配置文件也拷贝到镜像中。
- EXPOSE:声明端口
- ENTRYPOINT:docker 启动时,运行的命令,这里容器启动时直接运行 jar 服务。
在添加或复制文件到镜像中时,如果不指定目标路径,则默认将文件添加到容器的
/
路径下。
2. 构建镜像
先看 Dockerfile 所在的目录
在当前目录下执行命令:
docker build -t file-server:test .
- file-server: 镜像的名称
- test: 镜像的
tag
,如果不写,则默认为latest
.
: 这个.
一定不能忘记,最后的.
代表本次执行的上下文路径,ADD FileServer.jar file-server.jar
,中间的FileServer.jar
在哪里,就是根据这个.
确定的,在上述 Dockerfile,表示将当前文件夹下的FileServer.jar
和config
文件夹添加到容器中。
查看镜像:
构建成功!
3. 运行镜像
docker run -d --name file-server-test -p 9000:9000 -v /project/file-server:/project/file-server file-server:test
容器运行情况
可以看到容器成功运行了。
4. 将镜像提交到 DockerHub 中
4.1 注册 DockerHub 账号并创建仓库
略,我创建了一个名为file-server
的仓库
参考: Docker 仓库管理
4.2 使用 docker login
略
4.3 提交镜像
docker tag <existing-image> <hub-user>/<repo-name>[:<tag>]
如果我们只要容器,怎么把容器提交到仓库呢?
将容器先制作为镜像,再上传。
docker commit <exiting-Container> <hub-user>/<repo-name>[:<tag>]
这里的 tag 不指定就是 latest。
4.5 push 镜像到远程仓库
docker push <hub-user>/<repo-name>:<tag>
耗时可能会稍长一些。
到仓库中查看镜像:
这样推送到仓库就成功了,后面可以直接docker pull
再docker run
就可以运行了。
Dockerfile 常用命令
命令 | 描述 |
---|---|
FROM | 基础镜像 |
MAINTAINER | 维护者信息 |
ADD | 添加文件到镜像(自动解压) |
COPY | 添加文件到镜像(不解压) |
USER | 设置运行 RUN 指令的用户 |
ENV | 设置环境变量 |
RUN | 镜像制作时执行的命令 |
ENTRYPOINT | 容器启动时执行的命令(无法被覆盖) |
CMD | 容器启动时执行的命令(多条 CMD 只执行最后一条) |
EXPOSE | 声明要打开的端口 (实际还是要 docker run -p port1:port2 才行) |
VOLUME | 目录映射 |
ONBUILD | 构建时自动执行的命令 |
容器的相关博文
Was this helpful?