欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

在Linux下的Docker中新建容器的方法

程序员文章站 2022-04-18 12:52:15
这篇文章主要介绍了在Linux下的Docker中新建容器的方法,文中的示例基于CentOS系统和Apache服务器,需要的朋友可以参考下... 15-05-28...

大家好,今天我们来学习如何使用一个docker镜像交互式地创建一个docker容器。当我们从镜像中启动一个docker进程,docker就会获取该镜像及其父镜像,并重复这个过程,直到到达基础镜像。然后联合文件系统(ufs)会在其顶层添加一个读写层。读写层被称之为容器,它包含了一些关于父镜像信息及一些其他的信息,如唯一id,网络配置和资源限制等。容器是有状态的,其状态可以从 运行态 切换到 退出态。一个处于 运行态的容器包含了在cpu上面运行的进程树,于其它在该主机上运行的进程相隔离,而退出态是指文件系统的状态,并保留了其退出值。你可以使用它来启动,停止和重启一个容器。

docker技术为it界带来了巨大的改变,它使得云服务可以用来共享应用和工作流程自动化,使得应用可以用组件快速组合,消除了开发、品质保证、产品环境间的摩擦。在这篇文章中,我们将会建立centos环境,然后用apache网络服务器提供一个网站服务。
这是一个快速且容易的教程,讨论我们怎样使用交互的shell,以交互的方式来创建一个容器。
1. 运行一个docker实例

docker首先会尝试从本地取得并运行所需的镜像,如果在本地主机上没有发现,它就会从docker公共注册中心拉取。这里,我们将会拉取镜像并在 docker 容器中创建一个fedora实例,并连接到它的 tty 上的bash shell。

   

复制代码
代码如下:
# docker run -i -t fedora bash

    在Linux下的Docker中新建容器的方法

    2.安装apache网络服务器

现在,在我们的fedora基本镜像实例准备好后,我们将会开始交互式地安装apache网络服务器,而不是为它创建dockerfile。为了做到这点,我们需要在终端或者shell运行以下命令。

   

复制代码
代码如下:
# yum update

    在Linux下的Docker中新建容器的方法

   

复制代码
代码如下:
# yum install httpd

   在Linux下的Docker中新建容器的方法

    退出容器的 tty。

   

复制代码
代码如下:
# exit

3.保存镜像

现在,我们要去保存在fedora实例里做的修改。要做到这个,我们首先需要知道实例的容器id。而为了得到id,我们又需要运行以下命令(lctt 译注:在容器外执行该命令)。

   

复制代码
代码如下:
# docker ps -a

在Linux下的Docker中新建容器的方法

    然后,我们会保存这些改变为一个新的镜像,请运行以下命令。

   

复制代码
代码如下:
# docker commit c16378f943fe fedora-httpd

    在Linux下的Docker中新建容器的方法

    这里,修改已经通过使用容器id保存起来了,镜像名字叫fedora-httpd。为了确认新的镜像是否在运行,我们将运行以下命令。

   

复制代码
代码如下:
# docker images

    在Linux下的Docker中新建容器的方法

    4. 添加内容到新的镜像

我们自己新的fedora apache镜像正成功的运行,现在我们想添加一些我们网站的网页内容到apache网络服务器,使得网站能够开箱即用。为做到这点,我们需要创建一个新的dockerfile,它会处理从复制网页内容到启用80端口的所有操作。要达到这样的目的,我们需要使用我们最喜欢的文本编辑器创建dockerfile文件,像下面演示的一样。

   

复制代码
代码如下:
# nano dockerfile

现在,我们需要添加以下的命令行到文件中。

   

复制代码
代码如下:
from fedora-httpd
add mysite.tar /tmp/
run mv /tmp/mysite/* /var/www/html
expose 80
entrypoint [ "/usr/sbin/httpd" ]
cmd [ "-d", "foreground" ]

    在Linux下的Docker中新建容器的方法

    这里,上述的dockerfile中,放在mysite.tar里的网页内容会自动解压到/tmp/文件夹里。然后,整个站点会被移动到apache的网页根目录/var/www/html/,命令expose 80会打开80端口,这样网站就能正常访问了。其次,入口点放在了/usr/sbin/https里面,保证apache服务器能够执行。
5. 构建并运行一个容器 

现在,我们要用刚刚创建的dockerfile创建我们的容器,以便将我们的网站添加到上面。为做到这,我们需要运行以下命令。

   

复制代码
代码如下:
# docker build -rm -t mysite

    在Linux下的Docker中新建容器的方法

    建立好我们的新容器后,我们需要要用下面的命令来运行容器。

   

复制代码
代码如下:
# docker run -d -p mysite

   在Linux下的Docker中新建容器的方法