【Docker-k8s学习和实战】(三)Docker初试:启动第一个docker容器;docker容器的运行、停止、重启以及镜像的删除

  • Post author:
  • Post category:其他


❤️ 专栏简介 :本专栏我们会从最基础的内容开始学习Docker的相关内容,循序渐进的掌握Docker知识并进行实战。

☀️ 专栏适用人群 :适用于具备基础 Linux 知识的 Docker 初学者,当然希望各位有经验的docker开发者不吝赐教。

🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。

🍄 专栏地址:

https://blog.csdn.net/anchenliang_1002/category_11878561.html

在这里插入图片描述

在这一节中我们会学习Docker实际的使用,包括

获取镜像



运行出容器



停止容器



重启容器



删除镜像

等操作;



启动第一个docker容器

启动docker容器的步骤如下:

首先我们需要先获取镜像,然后运行镜像,生成对应的容器;而我们想要使用的应用程序,就跑在容器中。

本节中,我们以

nginx为

例,利用

nginx

在容器中的运行启动、停止、重启等过程,来对容器的基本操作进行讲解。

什么?你不知道什么是nginx?不知道nginx能用来干什么?别怕,读完以下文章就能大致了解了。


【网络编程】从零开始搭建一个自己的网站(静态网页)

好,现在我们了解了nginx是一种web服务器,其可以运行出一个80端口的网站;首先我们想一下,如果我们是在宿主机上直接运行nginx,我们会怎么做?相信你看完上面的文章肯定已经了解了,下面我再来总结一下在宿主机上直接使用nginx的过程:

服务器开机 -> 安装nginx(yum install nginx)-> 修改nginx配置文件(nginx.conf)->启动nginx->客户端访问nginx

我们可以感觉到,整个过程还是比较耗时的,如果咱们仅仅有一台服务器,还感觉不到,但是,如果我们有几十上百台机器,都需要去安装nginx,即都要重复这个过程,这时候就知道有多繁琐了。好,那我们来看一下在容器环境中会怎么做。



一、运行出一个nginx 容器



1.1 第一步:获取镜像(docker pull)

相信你肯定有疑问,我是想运行一个nginx,第一步就是获取镜像;从哪里获取呢?但如何获取镜像呢?获取一个什么镜像呢?

下面我们就来介绍一下:

获取镜像,获取是从咱们配置好的docker镜像站中,去拉取nginx镜像;咱们啥时候配置过镜像站呢?其实就是上一篇文章(

【Docker-k8s学习和实战】(二)正式学习Docker:Docker的使用形式 && Docke的安装部署、启动

)中,2.2.2节中的“安装镜像加速器”部分的内容;如下所示

在这里插入图片描述

红框中框出来的地址就是我们配置好的镜像站了。那么我们的第一个疑问(从哪里获取镜像)已经解决了,即从配置好的镜像站中获取镜像;那第二个疑问,如何获取镜像呢?

利用以下指令可以获取我们需要的镜像:

#先去仓库中搜索一下nginx镜像文件是否存在
docker search nginx

结果如下:

在这里插入图片描述

即在仓库中找到了官方的nginx镜像文件(红框中的)。

然后我们就可以将nginx镜像拉取下来了:

#拉取下载一个名为nginx的镜像文件
docker pull nginx

执行结果如下:

在这里插入图片描述

我们可以发现图中有这么一段话:默认使用最新的tag标签(红框中的);什么意思?最新的?难道除了最新的还有其他的?标签又是什么?其实还真有其他的标签;这个我们后续再说。而且我们可以看到,在pull的时候,好像是pull了好多小文件下来,像是一层一层下载下来的。

不管怎么说,看到上图的运行结果,可以知道我们的nginx镜像下载成功了,来,我们查看一下:

docker image ls

在这里插入图片描述

可以看到,已经有nginx的镜像了,他的标签是latest,即最新版本的,镜像ID是605c77e624dd;创建时间是五个月之前,大小是141MB。



1.2 第二步:利用镜像运行出nginx容器(docker run)

那么有了镜像,我们就可以运行该nginx镜像,即运行出具体的nginx容器了;然后这个容器中,就跑着一个nginx服务了。

#运行镜像的命令docer run 参数  镜像的名字或id
# -d 后台运行容器
#-p  端口映射,使用方式(宿主机端口:容器内端口),例如12:34,此时访问宿主机的12端口,也就访问到了容器内的34端口
docer run -d -p 80:80 nginx

我们用一张图来详细了解一下-p端口映射是干啥的:

在这里插入图片描述

首先先看在未使用docker的情况中,在CentOS7上安装了nginx,并且打开了80端口,假设宿主机的ip是10.41.62.166,那么我们客户端就直接访问10.41.62.166:80就能访问到nginx的默认页面了。

然后是在使用docker的环境中,在docker容器内安装了nginx服务,如果我们没有经过端口映射,那我们直接访问10.41.62.166:80端口能访问到nginx服务嘛?很显然是不行的,因为我们访问10.41.62.166:80访问的是主机上的80端口,而nginx是运行在容器里的嘛,容器跟外面是隔离开的,所以肯定访问不到,那如何才能访问到呢,有没有一种方法,让我们在访问主机的某个端口时,固定的转接到容器内的相应端口呢?当然有,就是

使用端口映射

;我们使用

-p 80:80

,这样就把主机的80端口映射到了容器内的80端口,当我们再访问主机的80端口时,就转而访问容器内的80端口了,其实说白了就是一个桥梁的作用。

好,我们继续说回启动容器,执行以下命令运行容器:

docer run -d -p 80:80 nginx

运行结果如下:

在这里插入图片描述

docker run命令会返回一个容器的id,即2f5cdfebdd908a8e9245c93532521f95c691bfa172858690af956723507ef03c;

我们来查看一下容器是否在运行:

docker ps

结果如下:

在这里插入图片描述

这个结果我们可以看出来,现在在跑的容器的id是

2f5cdfebdd90

,此容器基于的镜像是

nginx

,创建时间是3分钟前,状态是已经运行了3分钟了,端口映射关系是容器里的80端口对应宿主机的80端口。如果是在公司的一台真实的服务器上,使用

docker ps

命令就可以很清晰的看出你们公司的服务器上都运行了哪些docker容器了。

此时我们可以访问宿主机的80端口,就能查看到容器内的80端口的应用是什么了。

先查看我们的主机ip:

ip a

在这里插入图片描述

可以看到ip是192.168.92.101(不写端口号默认就是80端口),来,在浏览器里访问一下:

在这里插入图片描述

成功访问到了nginx的默认界面。

此时查看一下我们主机的80端口是啥呢?如下图

在这里插入图片描述

可以看到主机的80端口被一个叫docker-proxy的占用了;因为我们知道了,这是docker起了一个代理程序,他将我们主机的80端口代理到了docker内的80端口了。



二、容器停止与容器重启



2.1 停止容器(docker stop)

停止容器的命令:

docker stop 容器id

过程如下:

先查看一下docker的id:

docker ps

在这里插入图片描述

可以看到nginx容器的id是

2f5cdfebdd90

,好,让我们来停止它:

#停止id号为2f5cdfebdd90的容器
docker stop 2f5cdfebdd90

停止成功也是会返回删除的容器的id,然后再用

docker ps

看一下就会发现docker容器已经没有了。如下图所示:

在这里插入图片描述

此时,如果我们再去访问80端口试一下:

在这里插入图片描述

会发现已经无法访问了,这是因为我们的docker容器已经被停止了,相应的,容器内的nginx服务也被杀死了,当然访问不到了。



2.2 重启容器(docker restart)

那怎么让容器重启起来呢?

#重启id号为2f5cdfebdd90的容器
docker restart 2f5cdfebdd90

此时再去访问80端口,发现又可以访问了,说明nginx容器又起来了。

在这里插入图片描述



三、删除镜像(docker rmi)

既然可以下载镜像,那肯定也可以删除镜像,下面我们记录一下删除镜像的指令:

首先查看一下我们本地有哪些镜像呢

docker image ls

在这里插入图片描述

可以看到,我的系统里只有nginx的镜像,他的标签是latest,即最新版本的,镜像ID是605c77e624dd;创建时间是五个月之前,大小是141MB。

下面我们可以删除nginx镜像了

#docker rmi + 镜像ID  删除镜像
docker rmi 605c77e624dd



版权声明:本文为AnChenliang_1002原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。