本文主要和大家分享关于docker容器存于新镜像中、删除容器及在容器内运行Nginx web服务器的流程。运行和保存一个基于Ubuntu的docker容器,更改容器前先用命令启动容器,还要更新Nginx守护程序并安装到Ubuntu映像中。
# docker run ubuntu bash -c "apt-get -y update"
# docker run ubuntu bash -c "apt-get -y install nginx"
如果结果出现无法找到包Nginx的提示,这说明要用交互式CLI连接容器并安装Nginx:
# docker run -it ubuntu bash
# apt install nginx
# exit
完成后,运行以下命令查找正在运行的容器ID和名称:
#docker ps -l
保存更改:
# docker commit 5999e9ae999c ubuntu-nginx
上述中,5999e9ae999c表示容器ID,Ubuntu-Nginx表示已保存并提交更改的新镜像名称。查看新图像是否创建成功,可以查询已保存的图像列表:
# docker images
存在一种情况是容器中安装过程完成效率高,出现容器未运行/已停止情况,这是以上命令不会输出任何结果,因为判断出当前并没有容器在运行。可以运行以下命令查询近期的容器运行并根据创建容器时发出命令和退出状态识别容器:
docker ps -a | head -3
运行以下命令可以主动加入容器会话并执行后续命令:
docker run -it ubuntu bash
命令运行时,要用密钥和容器分离:
Ctrl-p + Ctrl-q
在Nginx安装完成后容器也会继续运行:
#docker run-it ubuntu bash
#apt-get install nginx
获取正在运行容器ID并提交更改:
docker ps
再重新进入容器控制台docker attach并输入exit以停止容器:
# docker ps
# docker attach 3378689f2069
# exit
想再次确认最近图像是否正确提交(假设验证是否已安装Nginx),可以通过生成一个新容器,如Nginx二进制文件已成功安装会输出:
# docker run ubuntu-nginx whereis nginx
删除容器需要用rm针对容器ID/名称,再用以下命令:
# docker ps -a
# sudo docker rm 36488523933a
Nginx安装完成后想用docker来运行,首先需要创建一个新容器,映射主机容器端口:
#docker run-it-p 81:80 ubuntu-nginx/bin/bash
#nginx&
其中p选项是主机端口公开给容器端口,这个主机端口没有限定但前提是保证端口可用且其他主机服务不应侦听该端口,容器的端口应该是属于内部守护程序正在监听的端口。
当连接到容器会话,需要在后台启动nginx守护程序并通过按键Ctrl-p + Ctrl-q与容器控制台分离。
获取当前运行容器状态:
# docker ps
或
# netstat -tlpn
访问nginx容器页面,可以从LAN远程位置打开浏览器,用HTTP协议输入主机IP地址。如果需要停止容器,需要运行(需要加上容器ID):
# docker ps
# docker stop fervent_mccarthy
# docker ps
还可以进入容器shell命令提示符输入exit:
# docker attach fervent_mccarthy
# exit
以上步骤适用于docker运行web服务器或其他开发测试等服务,只有在容器运行时才处于活动状态,推出容器会停止全部正在运行的服务或所做任何更改。