Docker 学习 02
一、 Dockerfile命令含义
-
COPY
-
复制指令,从上下文目录中复制文件或者目录到容器里指定路径
-
COPY [--chown=<user>:<group>] <源路径1>... <目标路径> COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"]
-
-
ADD
-
通过这个命令加入的文件,如果文件为压缩文件,会自动解压复制并解压到目标路径
-
ADD [--chown=<user>:<group>] <源路径1>... <目标路径> ADD [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"]
-
-
CMD
-
该命令为在容器启动时,默认要运行的命令
-
CMD <shell 命令> CMD ["<可执行文件或命令>","<param1>","<param2>",...] CMD ["<param1>","<param2>",...] # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数
-
-
ENTRYPOINT
-
类似于 CMD 命令,但是他不会被 docker run 的命令行参数指定的指令所覆盖,这些命令参数会被当做参数送给ENTRYPOINT一起运行,如果想要覆盖它可以使用 --entrypoint 选项
-
ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
-
-
ENV
-
设置环境
-
ENV <key> <value> ENV <key1>=<value1> <key2>=<value2>...
-
-
ARG
-
与ENV作用一致,只是作用域不一样,他的设置堆Dockerfile内有效
-
ARG <参数名>[=<默认值>]
-
-
VOLUME
-
定义匿名数据卷
-
VOLUME ["<路径1>", "<路径2>"...] VOLUME <路径>
-
-
EXPOSE
-
端口声明
-
xxxxxxxxxx EXPOSE <端口1> [<端口2>...]
-
-
WORKDIR
-
指定工作目录
-
WORKDIR <工作目录路径>
-
-
USER
-
指定执行后续命令的用户和用户组
-
USER <用户名>[:<用户组>]
-
-
HEALTHCHECK
-
指定某个程序或者指定来监控docker容器服务的运行状态
-
HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况的命令 HEALTHCHECK NONE:如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令 HEALTHCHECK [选项] CMD <命令> : 这边 CMD 后面跟随的命令使用,可以参考 CMD 的用法。
-
-
ONBUILD
-
延迟构建命令的执行
-
ONBUILD <其它指令>
-
-
LABEL
-
给镜像添加一些元数据,以键值对的形式
-
LABEL <key>=<value> <key>=<value> <key>=<value> ...ss
-
二、通过Dockerfile部署Spring Boot项目
-
首先先随便写一个Spring Boot项目在此,不在过多赘述
-
在服务器上新建一个名为本项目名的文件夹
如 我的项目名为 tallybookRearEnd ,所以我就创建了一个 tallybookRearEnd 文件夹;
ps: 文件夹不是关键,只是为了好识别
-
然后将Spring Boot项目打包,放到该目录下,可以使用
scp命令上传jar如:
scp F:/Program/SeparateDevelopment/Tally-Book/tallybookRearEnd/target/tallybook-0.0.1-SNAPSHOT.jar root@47.96.147.206:tallybookRearEnd/注意,无论是本地还是远端的文件夹最好中间不要带空格以免出现
Invalid scp command parameters这个错误 -
编写 Dockerfile
-
在刚刚创建的文件夹下输入
vim Dockerfile以创建 Dockerfile -
在文件中输入如下内容
# 从java:8中开始构建镜像 FROM java:8 # 作者 MAINTAINER fall <time_lock_t@163.com> # 将容器中的/tmp的数据持久化到Docker数据为文件夹中 VOLUME /tmp # 加入jar文件 ADD tallybook-0.0.1-SNAPSHOT.jar /tallybook-0.0.1-SNAPSHOT.jar # 开放容器端口 EXPOSE 8088 # 相当于在启动容器时,运行此命令 ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/tallybook-0.0.1-SNAPSHOT.jar"] -
然后开始构建镜像
在当前文件下,输入
docker image build -t [项目名]:tag .ps: 镜像名应为小写字符
使用
docker images如果看到如下:REPOSITORY TAG IMAGE ID CREATED SIZE tallybookrearend 1.0 38687ac6d64f 7 seconds ago 691MB
即为成功
-
-
运行镜像
输入
docker run -d --name [容器名] -p [映射端口] [镜像名]:tag使用
docker ps如果看到以下:CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 391e5102e94a tallybookrearend:1.0 "java -Djava.securit…" 4 seconds ago Up 3 seconds 0.0.0.0:8088->8088/tcp tallybookrearend即为成功