镜像是分层结构,每一层称为一个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 |
更新详细语法说明,请参考官网文档: | https://docs.docker.com/engine/reference/buider |
示例:基于Ubantu镜像构建一个新镜像,运行一个java项目
Dockerfile:
#指定基础镜像
FROM ubuntu:16.04
#配置环境变量,JDK的安装目录
ENV JAVA DIR=/usr/local
#拷贝jdk和java项目的包6
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._144 ./java8
#配置环境变量
ENV JAVA_HOME=$JAVA DIR/java8ENV PATH=$PATH:$JAVA HOME/bin
#暴露端口
EXPOSE 8099
#入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
Compose文件语法示例两种方式:
version:"3.8"
services:
mysql: #相当于 --name
image: mysql:5.7.25
environment: #相当于 -e
MYSQL_ROOT_PASSWORD: 123
volumes: #相当于 -v
- /tmp/mysql/data:/var/lib/mysql
- /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf
Ruoyi : # --name 临时构建
build: . #镜像构建目录
ports: #相当于 -p
8090: 8090
DockerCompose的详细语法参考官网: https://docs.docker.com/compose/compose-file/
curl -L
https://github.com/docker/compose/releases/download/1.29.1/docker-
compose-`uname -s`-`uname -m` > /usr/1ocal/bin/docker-compose
或者直接下载上传到 /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
curl -L
https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
如果这里出现访问GitHub错误,需要修改自己的hosts文件:
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
docker-compose构建镜像并运行命令
# cd 要构建的文件目录内
docker-compose up -d #up 构建并运行 down 停止并删除
更多命令 执行 --help
查看