小飞学习Docker之使用容器 您所在的位置:网站首页 docker容器实验心得 小飞学习Docker之使用容器

小飞学习Docker之使用容器

2023-07-08 08:59| 来源: 网络整理| 查看: 265

在继续本文之前,首先要确认你已经安装了Docker,确保Docker已经就位。第一步就是执行sudo docker info命令检查相关环境。

通过上面一章节我们已经了解到容器相当于一个跑起来的镜像,是一个运行的执行环境,那下面通过使用docker运行nginx来看下容器相关的一些操作。

运行Nginx容器

首先可以使用 docker run 命令来创建 Nginx 容器,执行如下命令。

docker run --name containerName -p 8080:80 -d nginx

来让我们先看下命令。

首先我们执行docker run,会先从本地查看有没有该镜像,如果有执行起来一个容器;如果没有就去默认的镜像仓库(这里是Docker Hub)拉取镜像到本地,然后再起一个容器。--name:给容器起一个唯一名字,方便后续使用定位;如果没有这个指令,docker 会随机生成一个名字。-p:将宿主机端口与容器端口映射,这样通过docker 的网桥,可以通过宿主机地址访问到容器内部。8080是宿主机的端口,80 是容器端口。通过这种暴露方式我们就可以通过http://localhost:8080 访问nginx 的主页。-d 是指以后台形式启动,同样有-it 使用伪终端在前端输出,后面会提到

执行完可以看下效果:

问题来了,因为是后台运行,我们怎么知道容器已经正常起来了?

检查容器健康情况

在真正生产环境上我们要判断容器是否健康,可以从浅至深的来检查几个方面。

容器本身的运行情况

可以通过 docker ps 命令,查看正在运行的容器,并检查是否有目标容器,关注状态

docker ps

另外我们从上面也可以看出是将宿主机的8080端口映射到容器的80端口了。

业务指标

业务指标就有很多,比如说端口是否正常被占用、程序是否正常启动、日志是否打印正常等等,像这个demo而言,只需要看下nginx首页是否可以正常访问。

然后访问后,进一步查询容器日志,可以看到访问日志

docker logs nginx # 容器名称

进入容器内部

走到这里,其实一个容器应用已经可以使用了,但问题是我们想进一步修改内容,或者说进去看业务日志,那怎么办?其实容器提供了一种伪tty的方式让我们在终端进入到容器内部,类似于ssh

docker exec -it nginx /bin/sh

上面的命令通过docker exec,搭配 -it 还有 /bin/sh 模拟一个终端,让我们直接于容器内部交互。执行完之后,我们就可以像平常linux系统进行修改了,举个例子,修改nginx 主页内容

cd /usr/share/nginx/html vim index.html

我们其实发现业务代码放到容器里面,那如果有多个实例岂不是要都修改?这里呢,可以理解这种方式是无状态的实例,也就说容器不与其他有依赖,易于扩展。可以使用编排工具,将修改后的镜像分批分发替换老镜像完成版本的迭代。

当然还有另外一种方式,就是使用数据卷。

挂载数据卷

数据卷是一个虚拟目录,指向宿主机的某个目录,这样将容器和数据分离,同时也可以让多个容器共享同一份数据。

可以在创建容器的时候,通过 -v 参数让宿主机的一个目录挂载到容器的制定目录下。

docker run --name nginx -v /opt/html:/usr/share/nginx/html -p 8080:80 -d nginx

这里是将宿主机的/opt/html挂载到容器下的/usr/share/nginx/html下,这样不管修改哪一侧,都会同步。

容器常用命令总结

容器常用命令

操作命令

常用参数说明

docker run

创建启动容器

-it:可交互的伪终端,进入容器内部

--name:为容器起名

--rm:运行完毕删除容器

-d:容器后台运行

-v:卷挂载

docker ps

列出正在运行的容器

docker exec 

进入容器内部执行

-it:交互终端执行

docker rm

删除容器

docker start | stop

启动或停止容器

docker logs

查询运行日志

docker inspect

获取容器配置信息

--format '{{.NetworkSettings.IPAddress}}' 容器名称



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有