dockerfile的命令都是大写的,比如:FROM、RUN等
一条指令构建一层, 创建一个新的容器
3.1.FROM基础镜像
必须是第一条指令
FROM nginx服务镜像
FROM ubuntu 基础的操作系统镜像
Scratch空白镜像
FROM scratch 不以任何镜像为基础
3.2.COPY复制文件到容器中
COPY ./test test
容器中当前路径是/
等价于COPY ./test /test
3.3.RUN执行命令
新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。
Shell格式
RUN echo ‘
Hello, Docker!
’ > /usr/share/nginx/html/index.html #注释Shell命令后面可以加注释, 必须空格隔开
Exec格式
RUN [“可执行文件”, “参数1”, “参数2”]
2层镜像, 增加了构建部署的时间
FROM nginx
RUN #注释
RUN echo ‘
Hello, Docker!
’ > /usr/share/nginx/html/index.html #行尾注释简化成1层镜像
FROM nginx
RUN #注释
RUN echo ‘
Hello, Docker!
’ > /usr/share/nginx/html/index.html #行尾注释3.4.Demo1:格式
构建镜像, 制定镜像名称, 后面方便删除
sudo docker build -t ng:v3 .
查看镜像
启动容器, --name指定容器名称, 方便使用和删除
光标在左下角闪烁
新开窗口
查看容器
进入容器
Ctrl+c关闭容器
删除容器
删除镜像
3.5.Demo2:java项目
Dockerdemo项目
Idea中maven-Package打包后,
Windows用java -jar user.jar启动成功
Linux上 git拉取代码
Pom.xml路径下, 编辑Dockerfile文件
FROM openjdk:8
COPY ./target/user.jar app.jar
ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","–spring.profiles.active=dev"]
-Djava.security.egd=file:/dev/./urandom解决tomcat随机数的问题, 但是我不加的话也是成功的.
Docker build -t user .
docker run --name us2 -d -p 9003:9001 user
用9003端口访问服务了
user ok
docker run --name us3 -d -p 9002:9001 user
启动两个容器, 就是应用集群了
用nginx负载均衡