Docker 实战教程之从入门到提高 (五)(上)

简介: 本系列的前四篇文章,我们学习了如何在 Ubuntu 操作系统安装 Docker,并且通过实战练习,了解了 Docker 和宿主机操作系统文件目录互相隔离的实现原理,以及 Docker Volume 的工作原理。通过动手对 Nginx Docker 镜像进行修改,达到自定义其首页显示的目的。

本系列的前四篇文章,我们学习了如何在 Ubuntu 操作系统安装 Docker,并且通过实战练习,了解了 Docker 和宿主机操作系统文件目录互相隔离的实现原理,以及 Docker Volume 的工作原理。通过动手对 Nginx Docker 镜像进行修改,达到自定义其首页显示的目的。

  • Docker 实战教程之从入门到提高 (一)
  • Docker 实战教程之从入门到提高 (二)
  • Docker 实战教程之从入门到提高 (三)
  • Docker 实战教程之从入门到提高 (四)


在第四篇文章的最后一个练习,我们介绍了如何将一个开发好的 Web 应用,放在 Docker 容器里运行。本文从此基础出发,介绍如何将这个 web 应用放在 Docker 容器内部后,通过 dockerfile 制作一个新的镜像。

练习1:使用 dockerfile 制作包含指定 web 应用的镜像

新建一个文件夹 jerry-build, 将 您的 web 应用放到这个文件夹里,我的 web 应用放在文件夹 webapp 里。在 jerry-build 文件夹里新建一个文件 dockerfile:

image.png

这个dockerfile内容很简单,就三行:

FROM nginx:stable
COPY webapp/ /usr/share/nginx/html/webapp/
RUN ls -la /usr/share/nginx/html/webapp*

我们执行命令 docker build .

该命令成功地将包含了我们 web 应用的 webapp 文件夹内的所有文件打到 nginx 镜像内:

image.png

使用选项 -t 指定生成镜像的名称 jerry-nginx-image:

image.png

镜像成功生成后,就可以用 docker run 命令执行这个镜像了:

docker run -d -p 1082:80 jerry-nginx-image:1.0

image.png

使用命令 docker images 能查看到我们刚才制作的镜像,大小为109MB。

image.png

下一个练习会介绍如何将这个打好的镜像发布到 Docker hub 中。

练习2:如何将 dockerfile 制作好的镜像发布到 Docker hub 上

首先得在 docker hub 上注册一个帐号:

image.png

然后创建一个新的 repository,用于存放 Docker 镜像。操作方法和在 Github 里创建代码仓库一致。

image.png

image.png

创建好之后的仓库看起来是这样的:

image.png

docker ps 拿到当前容器的 ID:

image.png

使用 docker commit 提交,作用类似程序员熟悉的 git commit:

docker commit 53de4188b702 i042416/ui5-nginx

image.png

docker login 登录 docker hub:

image.png

成功登录之后用 docker push 将本地镜像推送到 docker hub:

docker push i042416/ui5-nginx:latest

image.png

得到成功推送的消息:

image.png

推送成功之后,到 docker hub 上查看生成的 tag:latest 和镜像尺寸:45MB。image.png

到另一台机器上:

docker run -it i042416/ui5-nginx:

从输出能发现,因为本地镜像不存在,所以 docker run 自动从 docker hub 上 pull 这个image:

image.png

然后用命令 docker run -d -p 1080:80 i042416/ui5-nginx 运行:

image.png

之后 localhost:1080/webapp 即可访问我的 web 应用:

image.png

image.png

目录
相关文章
|
11天前
|
运维 监控 安全
构建高效自动化运维体系:Ansible与Docker的协同实战
【5月更文挑战第25天】 在当今快速迭代的软件发布环境中,自动化运维成为确保部署效率和可靠性的关键。本文通过深入分析Ansible和Docker技术,探索它们如何协同工作以构建一个高效的自动化运维体系。文章不仅介绍了Ansible的配置管理功能和Docker容器化的优势,还详细阐述了将两者结合的实践策略,旨在帮助读者理解并实现更智能、更灵活的基础设施管理。
|
1天前
|
存储 Docker 容器
记录Docker搭建私有仓库的步骤教程
记录Docker搭建私有仓库的步骤教程
9 0
|
13天前
|
Shell iOS开发 Docker
|
16天前
|
Cloud Native 测试技术 数据库
【云原生之Docker实战】使用Docker部署flatnotes笔记工具
【5月更文挑战第17天】使用Docker部署flatnotes笔记工具
58 8
|
19天前
|
存储 JSON 安全
Docker 的 overlay2 扩容教程
Docker 的 overlay2 扩容教程
74 3
|
21天前
|
监控 安全 Cloud Native
【云原生之Docker实战】使用Docker部署Ward服务器监控工具
【5月更文挑战第11天】使用Docker部署Ward服务器监控工具
45 4
|
21天前
|
Cloud Native 安全 Linux
【云原生之Docker实战】使用Docker部署mBlog微博系统
【5月更文挑战第10天】使用Docker部署mBlog微博系统
28 2
|
21天前
|
Ubuntu 应用服务中间件 Shell
Docker入门
Docker入门
35 0
|
21天前
|
测试技术 持续交付 Docker
Docker in Docker原理与实战
Docker in Docker原理与实战
12 0
|
21天前
|
存储 Ubuntu Linux
Docker 从入门到实践:Docker介绍
Docker 从入门到实践:Docker介绍