Docker 和 Nginx:构建敏捷且高性能的 Web 应用程序环境 (docker logs)
简介
Docker 和 Nginx 是在 Web 应用程序开发和部署中广泛使用的两个功能强大的工具。Docker 提供了一种容器化应用程序的方式,使其可以轻松地打包并部署到任何环境。Nginx 是一款高性能的 Web 服务器,可以处理高流量和并发连接。结合使用时,Docker 和 Nginx 可以创建一个敏捷且高性能的 Web 应用程序环境。Docker 容器的好处
Docker 容器提供了许多好处,使其适用于 Web 应用程序开发和部署:-
隔离: 容器提供了一个er 和 Nginx 来构建高性能的 Web 应用程序环境。以下是一些现实世界的示例:
- Netflix: Netflix 使用 Docker 来部署和管理其流媒体平台,其中包括数千个容器。
- Spotify: Spotify 使用 Nginx 来处理其音乐流媒体服务的大量流量。
- Uber: Uber 使用 Docker 和 Nginx 来部署和管理其移动应用程序。
结论
Docker 和 Nginx 是 Web 应用程序开发和部署的强大工具。通过将这两个工具结合起来,您可以创建敏捷、可扩展和高性能的环境。这样做的好处包括隔离、可移植性、一贯性、快速部署、高性能、高并发性、强大的功能和灵活的配置。通过采用 Docker 和 Nginx,您可以创建满足现代 Web 应用程序需求的现代化 Web 应用程序环境。
Docker:容器管理(启动参数,查看容器和日志,进入和修改容器)
摘要: Docker
容器是一个精简版的操作系统,一般一个容器只运行一个应用,容器通过镜像创建,使用docker run 命令创建,容器起到了 隔离 作用,容器和容器之间独享空间和网络等
容器的基本操作包括创建(启动),停止,重启,查看,检查等,容器通过镜像创建,使用 docker run 命令创建,需要指定run参数,镜像名,容器执行命令,语句格式如下
在实际使用中启动一个镜像,例如
-e 设置环境变量,格式是 -e k1=v1 -e k2=v2 ,使得在docker镜像中的程序能够直接访问到环境变量,同时可以作为配置参数放在docker run启动镜像的时候设置,而不是写死在dockerfile在build的过程中,-e和dockerfile中的 ENV 变量作用相同,当变量重名时-e替换ENV,下面测试一些-e参数,在Dockerfile指定环境变量
直接构建成容器
开启一个终端启动容器内部,打印指定的环境变量a
此时在run指令中增加-e设置环境变量,可见-e替换了Dockerfile中指定的环境变量
因为一个镜像可以启动多个容器,所以可以通过设置不同-e达到设置不同配置参数的目的,比如下一个例子在Dockerfile中设置和将环境变量写入yaml文件再供Python调用,执行的内容为打印yaml配置文件的参数内容,比如下面这个例子先看下目录结构
其中是一个空配置文件,在中先使用echo写入追加配置参数到在执行Python脚本
Dockerfile中启动脚本作为容器执行命令
在启动容器时,使用-e指定环境变量,在中echo将环境变量拿到和写入配置文件,测试多次以不同的配置参数启动容器如下
-v 设置挂载运行,将宿主机当前目录下的文件挂载到容器中/home目录下,例如
如果挂载的目录和Dockerfile中的COPY的目录不一致, -v会替代COPY或者ADD ,例如现在Docker中COPY一个文件到容器/home目录下
同目录下内容是打印1
构建镜像结束后,指定-v启动,起始挂载另外一个目录,目录下内容是打印2
docker run参数中最后的COMMAND会覆盖Dockerfile中指定的 CMD ,例如执行echo 2替换原始Dockerfile中的CMD echo 1,输出结果是2且执行完毕后退出
对于Dockerfile中的 ENTRYPOINT 指定的启动命令docker run的COMMAND不会覆盖,如果要覆盖Docker中的ENTRYPOINT需要指定docker run中的 --entrypoint 参数,格式是
测试一个Dockerfile输出1
在docker run中使用--entrypoint覆盖Dockerfile中的ENTRYPOINT
容器启动后通过 docker ps 或者 docker container ls 查看容器,可以增加额外参数比如 -a 显示所有容器,默认只显示运行的容器,可以增加 --no-trunc 参数使得显示结果不截断,例如
显示结果分别显示了容器的ID,镜像,执行命令,创建时间,状态,端口映射(宿主机->容器)和容器名称。对于已经运行的容器可以使用 docker stop 停止,如果在docker run时增加--rm参数则停止的容器保留不会自动删除,例如
除了docker stop命令还有一种停止容器的命令 docker kill ,相比于docker stop,docker kill是 强制立即停止 ,而docker stop是先给了容器10秒(默认)的时间,使得容器有一定的时间处理、保存程序执行现场, 优雅的退出程序 ,例如
在容器停止之后可以使用 docker start 再启动一个停止的容器,例如
除此之外可以使用 docker restart ,此时容器可以使停止的也可以是在运行中的,例如
查看容器详情使用 docker inspect ,比如
在以上截取的内容中展示了容器详情,包括容器id,创建时间,执行命令和参数,执行状态,容器pid,落脚点,环境变量,网络设置,端口映射等,也可以使用Go语言风格输出指定的详情,比如分别只看容器的pid和容器的执行命令
容器是一个操作系统,可以进入这个操作系统查看容器的运行情况,有多种方式进入容器,其中主要是使用 docker exec 进入容器,在一个运行中的容器中执行一个命令,使用 -it 并带有 /bin/bash 命令就可以进入容器,比如
除了/bin/bash也可以是其他命令挂载exec后面则可以直接对一个运行中的容器执行命令,比如查看容器的进入落脚点路径,容器中的内存情况
当容器以后台 -d 运行时,日志运行在容器内部,可以进入容器内部查看日志,也可以使用 docker logs 查看日志,以一个flask api接口的容器为例,日志写入文件,同时也会输出在flask的控制台
创建Dockerfile以及构建镜像,启动容器
启动一个脚本不断请求api接口
进入容器内部查看日志
另一种方式是直接使用 docker logs 命令,比如使用 -f 追踪输出,并且从最后的第1行开始输出
此时宿主机的logs目录下为空,容器中的logs目录下存在文件,如果使用 -v 将宿主机目录挂载到容器作为容器写入的目录,则容器中数据的变动会同步到本地,这样可以直接在本地查看日志,修改容器启动为 -v 挂载的形式
此时本地logs目录下开始产生日志,且这个日志和容器内的logs目录下一致
如果容器内的内容改变了,此时删除容器从镜像重新启动容器则改动的内容将不会存在,如果相对修改过的容器保留下来则可以从容器生成新的镜像,先测试以下容器内修改在删除的容器后将不再生效,在已有容器中使用pip安装Python包
此时退出容器,并且删除容器,最后从镜像重新生成容器
此时进入容器检查,并不存在pymongo包
如果要容器变化保存下来需要以这个新容器生成一个镜像,使用 docker commit ,语法如下
以新安装pymongo的容器为例,对新容器使用docker commmit
新生成的镜像叫做xiaogp/my_image_test:v2
从新镜像启动容器并进入容器查看存在新安装的pymongo
如何查看docker日志 怎样查看docker日志
pre{overflow-x: auto} 如何查看docker日志,让我们一起了解一下? 通过docker logs命令可以查看容器的日志。 高效的监控和日志管理对保持生产系统持续稳定的运行以及排查问题至关重要。 在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要。 docker查看日志的几个方式: 1、docker logs --tail=1000 容器名称 (查看容器前多少行的日志)(推荐) 2、docker 容器启动后,可以进入以下位置查看日志(/var/lib/docker/containers/容器ID/容器)(进入容器内部查看日志) 3、#查看compose所有容器的运行日志 docker-compose -f logs -f 4、#查看compose下某个容器的运行日志 docker-compose -f docker-compose-app. yml logs -f服务名> 5、# 也可以把compose的容器日志输出到日志文件里去,然后用tail -f随时查看 docker-compose -f docker-compose-app. yml logs -f >> &具体操作如下: docker attach [options] 容器会连接到正在运行的容器,然后将容器的标准输入、输出和错误流信息附在本地打印出来。 命令中options的取值有三种:--detach-keys,--no-stdin,--sig-proxy。 该命令只是进入容器终端,不会启动新的进程。 所以当你同时使用多个窗口进入该容器,所有的窗口都会同步显示。 如果一个窗口阻塞,那么其他窗口也就无法再进行操作。 使用ctrl+c可以直接断开连接,但是这样会导致容器退出,而且还stop了。 如果想在脱离容器终端时,容器依然运行。 就需要使用--sig-proxy这个参数。 例如:$dockerattach--sig-proxy=falsemytest 注意: 当使用docker attach连接到容器的标准输入输出时,docker使用大约1MB的内存缓冲区来最大化应用程序的吞吐量。 如果此缓冲区填满,那么输出或写入的速度将会受到影响。 因此查看应用日志,可以使用docker logs命令。
Docker命令全集
一:首先来理解三个名词解释:
1、镜像(image) Docker 镜像(Image)就是一个只读的模板。
例如:一个镜像可以包含一个完整的操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
2、仓库(repository) 仓库(Repository)是集中存放镜像文件的场所。
3、容器(container) Docker 利用容器(Container)来运行应用。容器是从镜像(Image)创建的运行实例。
二:常用的命令集合如下:
容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause|create]
容器操作运维 — docker [ps|exec|inspect|top|attach|events|logs|wait|export|import|port]
容器rootfs命令 — docker [commit|cp|diff]
本地镜像管理 — docker [images|rmi|tag|build|history|save]
镜像仓库 — docker [login|pull|push|search]
其他命令 — docker [info|version]
详细命令说明如下:
docker run -d --name alias-Name imageName //在后台启动一个容器docker start Name/ID //启动容器docker stop Name/ID //停止容器docker restart Name/ID //重启容器docker kill -s KILL Name/ID //杀死一个运行的容器docker rm /rm -f Name/ID //删除容器docker pause Name/ID //停止容器docker unpause Name/ID //恢复容器docker create --name CONTAINER_Name imageName //只创建容器但不启动docker ps / docker ps -a //查看运行的容器docker exec -it CONTAINER_ID /bin/bash //进行一个运行中的容器,开启一个新的终端docker attach CONTAINER_ID //进行一个运行中的容器,不开启一个新的终端docker inspect CONTAINER_Name //查看容器的相关信息docker top CONTAINER_Name //查看容器里面的进程docker events -f image=imageName --since= //时间戳=2016年7月1日后的相关事件docker logs CONTAINER_Name //查看容器的日志输出docker wait CONTAINER_Name //阻塞运行直到容器停止,然后打印出它的退出代码docker export -o CONTAINER_ID //将容器进行打包保存到本地,文件类型为tarcat |docker import - image_name:tag //将上面保存的文件导入到镜像库中docker port CONTAINER_ID //查看容器的端口映射情况commit 从容器中创建一个新的镜像docker commit -a tony test -m my mysql CONTAINER_ID mymysql:v1docker images mymysql:v1cp 在使用的过程中会进行多个主机与容器之间的数据交换docker cp /ruiqi/content CONTAINER_ID:/ruiqi/diff 用来检查容器里面文件结构的更改docker diff CONTAINER_ID
docker images /docker images -a //查看本地的镜像,-a 表示是所有的镜像docker rmi -f image_name //删除镜像docker tag mysql:v5.6 mysql:v5.7 //给镜像做一个有别名的复本docker build -t runoob/ubuntu:v1 . //构建一个镜像docker history image_name //查看当前这个镜像的 历史 信息docker save -o TestFlask:v3 //将当前的镜像保存到本地的一个tar 类型的文件
docker login //登录镜像仓库
docker pull //从镜像仓库中拉镜像
docker push //向镜像仓库推本地的镜像文件
docker search //检索镜像内容
三:利用dockerfile 制作一个tomcat 运行image:
[root@localhost common]# more FROM /centos:7 COPY /opt/ RUN [rpm,-ivh,/opt/] COPY security /usr/java/jdk1.8.0_144/jre/security COPY certs /etc/pki/tls/certs COPY tomcat /opt/tomcat RUN [ln,-s,/opt/tomcat,/usr/local/tomcat]
若对本页面资源感兴趣,请点击下方或右方图片,注册登录后
搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源
如有其他疑问,请咨询右下角【在线客服】,谢谢支持!
相关文章
- 虫虫助手:你的专属安卓应用管理神器,一键安装、卸载、升级 (你给我下载一个虫虫助手)
- 虫虫助手:汇聚海量应用,满足你的所有下载需求
- 告别广告!虫虫助手带你畅享无干扰的安卓应用体验 (告别违反广告法吗)
- 虫虫助手:最强安卓应用商店,免费下载热门应用 (虫虫助手最新版更新)
- 文件共享的理想工具:ZIP 压缩软件,轻松共享大型文件,跨平台无忧 (文件共享的理由怎么写)
- 节省时间和存储空间:ZIP 压缩软件,快速高效地压缩文件,释放宝贵资源 (节省时间和存货的方法)
- 告别文件混乱:ZIP 压缩软件,将您的文件组合在整洁的压缩包中,带来清晰条理 (告别文件混乱的句子)
- 文件管理的利器:ZIP 压缩软件,简化文件组织和访问,提升工作效率 (文件管理的利弊分析)
- 文件安全传输的守护神:ZIP 压缩软件,保护您的文件免受病毒和恶意软件侵害 (文件安全传输协议)
- 文件归档的最佳选择:ZIP 压缩软件,为您的重要数据提供全面保护 (文件归档的最小单位是)
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~