docker构建镜像(一)

之前都是在拉取已经构建好了的带有定制内容的镜像,如果需要修改自己的镜像,并且需要更新和管理这些镜像,构建镜像的方法如下。
(1)docker commit 命令
(2)docker build命令和douckerfile文件
不推荐使用第一种,第二种的方法更灵活、更强大。
一般来说,我们不是真正的构建新镜像,而是基于一个已有的基础镜像,如ubuntu等,从而构建新镜像。当然也有从零构建一个全新的镜像的方法。

1 创建docker hub 账号

构建镜像需要共享和发布镜像,需要将镜像推送到docker hub或者用户自己私有的registy中。
登陆

docker login

2 commit提交镜像

创建要定制的ubunut容器并进入修改,apt安装apache。
commit提交并查看

docker commit 34fe jyh/apache2
docker images jyh/apache2

在这里插入图片描述
docker commit 只是提交的容器镜像与容器的当前状态有差异的部分,所以就显得更新非常轻量。
也可以在提交时指定更多的数据(包括标签)来详细描述所做的修改。

docker commit -m"a new custom image" -a"James Turnabull" 34fe jyh/apache2:webserver

-m t指定新创建的镜像的提交信息,-a用来列出该镜像的作者信息,最后为该镜像增加了一个webserver的标签。
在这里插入图片描述
从提交的镜像中创建一个新容器

docker run -it jyh/apache2:webserver /bin/bash

验证里面确实包括apache
在这里插入图片描述

3 Dockerfile构建镜像

在空目录下创建Dockerfile文件

 mkdir static_web
cd static_web/
touch Dockerfile
vim Dockerfile

Dockerfile 文件内容如下。

#Version:0.0.1
FROM ubuntu:14.04
MAINTAINER James Turnbull "1967760537@qq.com"
RUN apt-get update && apt install -y nginx
RUN echo 'Hi,I am in your container' \
		>/usr/share/nginx/html/index.html
EXPOSE 80

使用Dockerfile构建新镜像

docker build -t="jyh/static_web" .

-t 为新镜像设置了仓库和名称,也可以在后面使用:+标签 为新镜像添加标签。
. 表示docker构建需要到本地目录中找Dockerfile文件,也也可指定git仓库的源地址来指定Dockerfile的位置。
如:git@github.com:xxx/xxxx

在这里插入图片描述
从新镜像里面启动容器

docker run -d -p 80 --name static_web jyh/static_web nginx -g "daemon off;"

-d docker以分离式的方式在后台运行,比较适合类似nginx守护进程这样的需要长时间运行的进程。
nginx -g “daemon off;” 为需要在容器中运行的命令
-p 是用来控制docker在运行时应该公开哪些网络端口给外部宿主机。
-p是用来指定容器的端口映射到宿主机的端口上!宿主机会随机选择一个位于32768-610000之间比较大的端口上。
在这里插入图片描述 查看docker的映射情况

docker  ps -l

在这里插入图片描述上图所示,容器中的80端口被映射到了宿主机的49154端口上
查看容器的端口映射情况如下。

docker  port f04c 80

在这里插入图片描述
指定将容器中的端口映射到docker宿主机的某一特定端口上。

docker run -d -p 8081:8080 --name static_web5 jyh/static_web nginx -g "daemon off;"

将容器中的8080端口映射到宿主机的8081端口上。
在这里插入图片描述使用-P参数可以用来对外公开在Dockerfile中通过EXPOSE指令公开的所有端口。

docker run -d  -P --name static_web2 jyh/static_web nginx -g "daemon off;"

使用curl 连接到容器

curl localhost:49154

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker 构建镜像是通过编写 Dockerfile 文件来指定构建镜像的步骤和配置。Dockerfile 是由多条指令构成的,每一条指令对应于 Docker 镜像中的每一层。Dockerfile 中的每个指令都会创建一个新的镜像层,这个层可以理解为一个临时的容器。每个指令都会在当前的层上进行操作,执行完后,当前层的状态将被记录下来并成为下一层的基础。这样就实现了镜像分层的原理。 在构建 Docker 镜像时,可以根据需要使用不同的指令,例如使用 FROM 指令选择基础镜像,使用 RUN 指令执行命令,使用 COPY 指令复制文件,使用 EXPOSE 指令暴露端口等等。通过这些指令的组合,可以按照需求来构建具有特定功能和配置的镜像。 举例来说,可以通过编写 Dockerfile 来构建一个包含 SSH 服务的镜像。在 Dockerfile 中,可以使用基础镜像、安装 SSH 服务的指令来构建,最后可以通过构建镜像来运行 SSH 服务。同样的原理也适用于构建其他类型的镜像,例如包含 Systemctl 或 Tomcat 的镜像。 总结来说,Docker 构建镜像是通过编写 Dockerfile 文件,使用多条指令来指定构建镜像的步骤和配置。每个指令都会创建一个新的镜像层,实现了镜像分层的原理。可以根据需求选择不同的指令来构建具有特定功能和配置的镜像。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Dockerfile构建镜像](https://blog.csdn.net/gcc001224/article/details/125864815)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜大大的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值