计算机系统应用教程网站

网站首页 > 技术文章 正文

dockerfile入门 dockersfile

btikc 2024-09-27 01:14:31 技术文章 8 ℃ 0 评论

镜像

###docker 该镜像名和标签

Docker tag 镜像名:标签名 新镜像名:新标签名

###Docker 的镜像分层

Hello world 的dockerfile

FROM scrath

COPY hello /

CMD ["/hello/"]

Sratch 从零开始构建,白手起家的一个镜像

###Base镜像

Bootfs: 内核空间

Rootfs: 用户空间

###镜像分层 Dockerfile

///镜像的构成概念:

Dockerfile镜像有缓存机制,但是注意:缓存机制对于镜像所处的层数必须一致,否则无法使用缓存。

分层的特性

FROM scratch 不依赖其他镜像,从scratch(从零开始)构建。

FROM centos 基础镜像,其他镜像可以在此基础上进行扩展,通常都是各种linux发行版的docker镜像,比如Ubuntu,Debian,centos等。

Docker镜像在运行时直接使用docker宿主机的kernel(bootfs内核空间),不同基础镜像的区别主要是rootfs(用户空间)不同。

启动镜像的时候,一个新的可写层会加载到镜像的顶部,这一层通常称为"容器层",之下是"镜像层"。容器层可以读写,镜像层只允许读取。

dockerfile镜像有一个缓存机制。注意:缓存机制对于镜像所处的层数必须一致,否则无法使用缓存

[root@docker01 ~]# cat Dockerfile 文件名首字母大写

FROM centos

RUN yum -y install net-tools

RUN yum -y install httpd

CMD ["/bin/bash"]

///运行Dockerfile文件

[root@docker01 ~]# docker build -t new_centos .

-t:代表镜像名称

. :代表Dockerfile文件在本目录下,注意:同一目录下只能有一个Dockerfile

RUN:: 运行容器使执行的shell命令

例如:

RUN ["yun","install","httpd"]

RUN yum -y install httpd

ENV: 设置容器环境变量

例如:ENV MYSQL_ROOT_PASSWORD 123.com

COPY: 拷贝文件或目录到镜像容器中,根ADD类似,但不具备自动下载或自动解压

ENTRYPOINT: 运行容器时执行的shell命令

HEALTHCHECK: 健康检查

USER: 为RUN、CMD、ENTRYPOINT执行命令指定运行用户

ARG: 构建时指定一些参数

例如:

FROM centos

ARG user

USER: $user

注意:RUN在building时运行,可以写多条

CMD和ENTRYPOINT在运行CONTARNER时运行,只能写一条,如果写多条,最后一条生效

使用dockerfile搭建Nginx示例:

[root@docker01 ~]# cat Dockerfile

FROM centos

COPY nginx-1.14.0.tar.gz /

RUN tar zxf nginx-1.14.0.tar.gz

WORKDIR nginx-1.14.0

RUN yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel zlib zlib-devel

RUN useradd -s /sbin/nologin -M nginx

RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx

RUN make && make install

RUN ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

RUN nginx -t

CMD ["/usr/local/sbin/nginx"]

创建dockerfile文件

[root@docker01 ~]# cat Dockerfile

FROM centos

COPY nginx-1.14.0.tar.gz /

RUN tar zxf nginx-1.14.0.tar.gz

WORKDIR nginx-1.14.0

RUN yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel zlib zlib-devel

RUN useradd -s /sbin/nologin -M nginx

RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx

RUN make && make install

RUN ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

RUN nginx -t

CMD ["/usr/local/sbin/nginx"]

基于dockerfile文件创建镜像

基于创建的镜像运行容器nginx_02 并映射端口

进入容器后更改显示界面

在容器中查看nginx是否启动

在终端中验证

在虚拟机中进行访问映射的7777端口

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表