Dockerfifile其实就是我们用来构建Docker镜像的源码,当然这不是所谓的编程源码,而是一些命令的组

合,只要理解它的逻辑和语法格式,就可以编写Dockerfifile了。

简单点说,Dockerfifile的作用:它可以让用户个性化定制Docker镜像。因为工作环境中的需求各式各

样,网络上的镜像很难满足实际的需求。

常见命令:

镜像构建示意图:

可以看到,新镜像是从基础镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一

RUNCMDENTRYPOINT的区别?

RUN:用于指定 docker build 过程中要运行的命令,即是创建 Docker 镜像(image)的步骤

CMD:设置容器的启动命令, Dockerfifile 中只能有一条 CMD 命令,如果写了多条则最后一条生效,

CMD不支持接收docker run的参数。

ENTRYPOINT:入口程序是容器启动时执行的程序, docker run 中最后的命令将作为参数传递给入口

程序 ,ENTRYPOINY类似于 CMD 指令,但可以接收docker run的参数 。

使用Dockerfifile制作服务镜像:

我们利用Dockerfifile制作一个Eureka注册中心的镜像

1)上传服务jar包到linux

2)编写Dockerfile

cd /root
chmod dockerDemo
cd dockerDemo
touch Dockerfile  
vim Dockerfile

# 内容如下
FROM openjdk:8-jdk-alpine
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE 10086
ENV TZ=Asia/Shanghai
RUN apk add --no-cache tzdata
ENTRYPOINT ["java","-jar","/app.jar"]

3)构建镜像

#  docker build --build-arg JAR_FILE=JAR包名.jar -t 镜像名:版本 .

# 例如:
docker build --build-arg JAR_FILE=NetWorkDDNS-1.0.0.jar -t ddns:v1 .

4)查看镜像是否创建成功

docker images 

5)创建容器

#前台运行
docker run -i  --network=yyy --name=ddns -p 10086:10086 ddns:v1 
# 后台运行
docker run -d  --network=yyy --name=ddns -p 10086:10086 ddns:v1 

6)访问容器

http://192.168.66.101:10086

7)推送hub

打标签

docker tag ddns:v4 www.itzaj.com:338/yyy/ddns:v4

报错解决

unauthorized: unauthorized to access repository: yyy/ddns, action: push: unauthorized to access repository: yyy/ddns, action: push


docker login www.itzaj.com:338
输入你的 用户名和密码  admin 用户是不行的 添加一个新用户
创建一个项目叫 yyy  并添加用户到这个项目

推送

 docker push www.itzaj.com:338/yyy/ddns:v4