Linux中国
1.73K subscribers
777 photos
6.34K links
Linux 中国官方 Telegram 频道
Download Telegram
如何创建一个 Docker 镜像

在这篇文章中,我们将学习创建 Docker 镜像的基本知识。Media

via https://linux.cn/article-9541-1.html
如何创建一个 Docker 镜像

Media前面的文章 中,我们学习了在 Linux、macOS、以及 Windows 上如何使用 Docker 的基础知识。在这篇文章中,我们将学习创建 Docker 镜像的基本知识。我们可以在 DockerHub 上得到可用于你自己的项目的预构建镜像,并且也可以将你自己的镜像发布到这里。我们使用预构建镜像得到一个基本的 Linux 子系统,因为,从头开始构建需要大量的工作。你可以使用 Alpine( Docker 版使用的官方版本)、Ubuntu、BusyBox、或者 scratch。在我们的示例中,我将使用 Ubuntu。在我们开始构建镜像之前,让我们先“容器化”它们!我的意思是,为你的所有 Docker 镜像创建目录,这样你就可以维护不同的项目和阶段,并保持它们彼此隔离。
$ mkdir dockerprojectscd dockerprojects
现在,在 dockerprojects 目录中,你可以使用自己喜欢的文本编辑器去创建一个 Dockerfile 文件;我喜欢使用 nano,它对新手来说很容易上手。
$ nano Dockerfile
然后添加这样的一行内容:
FROM Ubuntu
Media使用 Ctrl+Exit 然后选择 Y 去保存它。现在开始创建你的新镜像,然后给它起一个名字(在刚才的目录中运行如下的命令):
$ docker build -t dockp .
(注意命令后面的圆点)这样就创建成功了,因此,你将看到如下内容:
Sending build context to Docker daemon 2.048kBStep 1/1 : FROM ubuntu---> 2a4cca5ac898Successfully built 2a4cca5ac898Successfully tagged dockp:latest
现在去运行和测试一下你的镜像:
$ docker run -it Ubuntu
你将看到 root 提示符:
root@c06fcd6af0e8:/#
这意味着在 Linux、Windows、或者 macOS 中你可以运行一个最小的 Ubuntu 了。你可以运行所有的 Ubuntu 原生命令或者 CLI 实用程序。Media我们来查看一下在你的目录下你拥有的所有 Docker 镜像:
$docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdockp latest 2a4cca5ac898 1 hour ago 111MBubuntu latest 2a4cca5ac898 1 hour ago 111MBhello-world latest f2a91732366c 8 weeks ago 1.85kB
你可以看到共有三个镜像:dockp、Ubuntu、和 hello-world, hello-world 是我在几周前创建的,这一系列的前面的文章就是在它下面工作的。构建一个完整的 LAMP 栈可能是一个挑战,因此,我们使用 Dockerfile 去创建一个简单的 Apache 服务器镜像。从本质上说,Dockerfile 是安装所有需要的包、配置、以及拷贝文件的一套指令。在这个案例中,它是安装配置 Apache 和 Nginx。你也可以在 DockerHub 上去创建一个帐户,然后在构建镜像之前登入到你的帐户,在这个案例中,你需要从 DockerHub 上拉取一些东西。从命令行中登入 DockerHub,运行如下所求的命令:
$ docker login
在登入时输入你的用户名和密码。接下来,为这个 Docker 项目,在目录中创建一个 Apache 目录:
$ mkdir apache
在 Apache 目录中创建 Dockerfile 文件:
$ nano Dockerfile
然后,粘贴下列内容:
FROM ubuntuMAINTAINER Kimbro Staken version: 0.1RUN apt-get update && apt-get install -y apache2 && apt-get clean && rm -rf /var/lib/apt/lists/*ENV APACHE_RUN_USER www-dataENV APACHE_RUN_GROUP www-dataENV APACHE_LOG_DIR /var/log/apache2EXPOSE 80CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]
然后,构建镜像:
docker build -t apache .
(注意命令尾部的空格和圆点)这将花费一些时间,然后你将看到如下的构建成功的消息:
Successfully built e7083fd898c7Successfully tagged ng:latestSwapnil:apache swapnil$
现在,我们来运行一下这个服务器:
$ docker run -d apachea189a4db0f7c245dd6c934ef7164f3ddde09e1f3018b5b90350df8be85c8dc98
发现了吗,你的容器镜像已经运行了。可以运行如下的命令来检查所有运行的容器:
$ docker psCONTAINER ID IMAGE COMMAND CREATEDa189a4db0f7 apache "/usr/sbin/apache2ctl" 10 seconds ago
你可以使用 docker kill 命令来杀死容器:
$docker kill a189a4db0f7
正如你所见,这个 “镜像” 它已经永久存在于你的目录中了,而不论运行与否。现在你可以根据你的需要创建很多的镜像,并且可以从这些镜像中繁衍出来更多的镜像。这就是如何去创建镜像和运行容器。想学习更多内容,你可以打开你的浏览器,然后找到更多的关于如何构建像 LAMP 栈这样的完整的 Docker 镜像的文档。这里有一个帮你实现它的 Dockerfile 文件。在下一篇文章中,我将演示如何推送一个镜像到 DockerHub。你可以通过来自 Linux 基金会和 edX 的 “介绍 Linux” 免费课程来学习更多的知识。via: https://www.linux.com/blog/learn/intro-to-linux/2018/1/how-create-docker-image作者:SWAPNIL BHARTIYA 译者:qhwdw 校对:wxy本文由 LCTT 原创编译,Linux中国 荣誉推出Media

via https://linux.cn/article-9541-1.html?utm_source=rss&utm_medium=rss
为初学者提供的 uniq 命令教程及示例

该命令会帮助你轻松地从文件中找到重复的行。它不仅用于查找重复项,而且我们还可以使用它来删除重复项,显示重复项的出现次数,只显示重复的行,只显示唯一的行等。Media

via https://linux.cn/article-9542-1.html
AI 和机器学习中暗含的算法偏见

我们又能通过开源社区做些什么?Media

via https://linux.cn/article-9543-1.html
在树莓派上运行 DOS 系统

不同的 CPU 架构意味着在树莓派上运行 DOS 并非唾手可得,但其实也没多麻烦。Media

via https://linux.cn/article-9544-1.html
如何在 Windows 10 上开启 WSL 之旅

WSL 可以让你访问 Windows 上的 Linux Bash shell。Media

via https://linux.cn/article-9545-1.html
使用 ncurses 进行颜色编程

Jim 给他的终端冒险游戏添加了颜色,演示了如何用 curses 操纵颜色。Media

via https://linux.cn/article-9546-1.html
Google Kubernetes Engine(GKE)使用初探

本文只是一个入门指南,主要指导能快速开始上手基于 Google Cloud Platform 的 GKE 服务(k8s 托管服务)。Media

via https://linux.cn/article-9547-1.html
用示例讲解 Linux gunzip 命令

在本文中,我们会使用一些简单、易于理解的例子来解释 gunzip 命令的用法。Media

via https://linux.cn/article-9549-1.html
使用 GitHub 和 Python 实现持续部署

这篇教程将展示如何使用 Python 和 Flask 框架来搭建一个简单的持续部署(CD)服务。Media

via https://linux.cn/article-9550-1.html
CIO 真正需要 DevOps 团队做什么?

DevOps 团队需要 IT 领导者关注三件事:沟通、技术债务和信任。Media

via https://linux.cn/article-9548-1.html
可怕的万圣节 Linux 命令

什么命令可能会显示鬼、巫婆和僵尸的图像?哪个会鼓励“不给糖果就捣蛋”的精神?Media

via https://linux.cn/article-9552-1.html
面向企业的最佳 Linux 发行版

所有这些可选的 Linux 具有的一个共同点是它们都是企业级 Linux 发行版 —— 所以你可以期待更高程度的功能性,当然还有支持程度。Media

via https://linux.cn/article-9553-1.html
自从上个 LTS 版本之后,Ubuntu 18.04 LTS 有什么新变化?

让我们回顾一下 Ubuntu 这两年有什么变化。Media

via https://linux.cn/article-9554-1.html
TIC2018 趣谈 | 区块链、人工智能大热 云计算竟是落地推手

5 月 15 日的 Think in Cloud 2018(以下简称“TIC2018”)大会,将解读三者之间有趣的关系,与你一同构想和探索云计算的全新应用场景。Media

via https://linux.cn/article-9555-1.html
什么是 Linux “oops”?

Linux 内核正在盯着你,当它检测到系统上运行的某些东西违反了正常内核行为时,它会关闭系统并发出一个“oops”!Media

via https://linux.cn/article-9556-1.html
11 个超棒的 Vi 技巧和窍门

是否你刚刚接触 Vi 还是想进阶,这些技巧可以很快让你成为高级用户。Media

via https://linux.cn/article-9557-1.html
如何在Linux的终端测试网速

学习如何在 Linux 终端使用命令行工具 speedtest 测试网速,或者仅用一条 python 命令立刻获得网速的测试结果。Media

via https://linux.cn/article-9558-1.html
Linux 系统中 sudo 命令的 10 个技巧

sudo 表示 “superuser do”。 它允许已验证的用户以其他用户的身份来运行命令。其他用户可以是普通用户或者超级用户。然而,大部分时候我们用它来以提升的权限来运行命令。Media

via https://linux.cn/article-9559-1.html
初识 Python: global 关键字

在 Python 中,global 关键字允许你修改当前范围之外的变量。它用于创建全局变量并在本地上下文中更改变量。Media

via https://linux.cn/article-9561-1.html
首届学生开源年会 SOSCON 将于 6 月在重庆大学举办

届时将有来自国内各大高校社区及国外高校学生参加。Media

via https://linux.cn/article-9562-1.html