在上一篇Docker文章之后,本文将讨论如何将Docker容器保存到新镜像中,删除容器以及在容器中运行Nginx Web服务器。
一、如何运行和保存Docker容器
1、在此示例中,我们将运行并保存一个基于Ubuntu的 Docker容器,将在其中安装Nginx服务器。但是在对容器提交任何更改之前,请先使用以下命令启动容器,该命令将Nginx守护程序更新并安装到Ubuntu映像中:
# docker run ubuntu bash -c "apt-get -y update"
# docker run ubuntu bash -c "apt-get -y install nginx"
如果提示错误“E: Unable to locate package nginx”,则需要使用交互式CLI连接到容器并安装nginx,如下所示。
# docker run -it ubuntu bash
# apt install nginx
# exit
2、接下来,在安装Nginx软件包之后,发出命令docker ps -l以获取正在运行的容器的ID或名称。
# docker ps -l
并通过运行以下命令应用更改:
# docker commit 5976e4ae287c ubuntu-nginx
这里,5976e4ae287c代表容器ID,ubuntu-nginx代表已提交更改保存的新镜像的名称。
为了查看新镜像是否已经成功创建,只需运行docker images命令,就会显示所有保存的镜像列表。
# docker images
容器内部的安装过程可能很快完成,这导致容器未运行(容器已停止)。在这种情况下,该docker ps命令将不会显示任何输出,因为没有容器在运行。
为了能够仍然得到容器的id,运行docker ps -a | head -3输出最近的容器,并根据创建容器时发出的命令和退出状态来识别容器。
3、另外,你也可以通过运行docker run -it ubuntu bash命令主动进入容器会话,并进一步执行apt-get install nginx命令。当命令运行时,使用Ctrl-p+Ctrl-q键脱离容器,即使Nginx安装过程结束,容器也会继续运行。
# docker run -it ubuntu bash
# apt-get install nginx
然后,用docker ps获取正在运行的容器id,并提交修改。完成后,使用docker attach重新进入容器控制台,输入exit停止容器。
# docker ps
# docker attach 3378689f2069
# exit
4、为了进一步测试最近的镜像是否已经正确提交(在这种情况下,Nginx服务已经安装),请执行以下命令以生成一个新容器,如果成功安装了Nginx二进制文件,它将输出:
# docker run ubuntu-nginx whereis nginx
5、要删除一个容器,使用针对容器ID或名称的rm命令,可以使用docker ps -a命令获得:
# docker ps -a
# sudo docker rm 36488523933a
二、如何在Docker容器中运行Nginx
6、在这部分,我们将集中介绍如何在Docker内部使用前面创建的ubuntu-nginx镜像运行和访问一个网络服务,比如Nginx网络服务器,其中安装了Nginx守护进程。
首先你需要做的是创建一个新的容器,映射主机-容器端口,并通过发出下面的命令进入容器shell。
# docker run -it -p 81:80 ubuntu-nginx /bin/bash
# nginx &
这里,-p选项将主机端口暴露给容器端口。虽然主机端口可以是任意的,但前提条件是它应该是可用的(其他主机服务不应该监听它),容器端口必须是内部守护进程监听的端口。
连接到容器会话后,在后台启动Nginx守护进程,按Ctrl-p + Ctrl-q键脱离容器控制台。
7、现在,运行docker ps以获取正在运行的容器的状态。您还可以通过发出以下命令来查看主机网络套接字:
# docker ps
或者
# netstat -tlpn
8、为了访问Nginx容器提供的页面,请从LAN中的远程位置打开浏览器,然后使用HTTP协议键入计算机的IP地址。
9、要停止容器,请运行以下命令,后跟容器ID或名称:
# docker ps
# docker stop fervent_mccarthy
# docker ps
作为停止正在运行的容器的替代方法,进入容器shell命令提示符并键入exit完成进程:
# docker attach fervent_mccarthy
# exit
请注意,使用这种容器来运行Web服务器或其他类型的服务最适合只用于开发目的或测试,因为这些服务只在容器运行时处于活动状态。退出容器会破坏所有正在运行的服务或所做的任何更改。
A5互联https://www.a5idc.net/