摘要:下面使用命令拉取为的镜像。只需要在运行容器时使用参数即可。我个人对的理解就是把所用的下载和各种路径的配置都按顺序写好在文件中,然后再使用它构建出镜像。这里就不作详细说明,如果有想要了解的可以阅读第一本书里面很详细的讲了的使用。
拉取镜像:
上篇文章 Docker入门安装教程 中讲了Docker最重要的一部分就是就是Docker镜像,我们所有的容器都是基于Docker镜像来创建的,这样才能保证所有同一个镜像创建出来的容器是一模一样的。而我们的容器则放在仓库中,Docker Hub就是一个官方公开的仓库,里面有非常多的镜像。我们可以直接使用官方仓库中的镜像来创建容器,下面我们就来创建一个nginx容器。
使用docker search nginx命令来搜索镜像,可以看到搜索出来非常多的结果,注意,OFFICIAL那栏标记OK的就表示这个镜像是nginx官方制作的镜像。
也可以直接到 Docker Hub 上去搜索镜像,可以更直观的看到镜像的信息。比如这里就提供了该镜像在Github上存放的对应不同的tag的Dockerfile文件,Dockerfile文件就是用来生成镜像用的,后续再讲怎么使用。一个tag就代表一个版本的镜像,因为nginx也有很多不同的版本,在拉取镜像的时候可以指定版本,如果没指定则默认拉取latest版本的镜像。
下面使用docker pull命令拉取tag为1.15.8的nginx镜像。下载会需要一点时间,然后使用docker images命令来查看本地存在的镜像,发现已经有一个tag为1.15.8的nginx镜像了。
运行容器:使用这个镜像运行起一个容器,运行docker run -d -p 9500:80 --name nginx nginx:1.15.8,对外映射的端口是9500,这里先不探究这些命令参数的含义,后续再细讲。使用docker ps命令来查看运行的容器,发现有一个名为nginx的容器,试着访问下,是可以成功打开nginx的主页。到现在为止我们已经成功的在官方仓库拉取一个镜像并通过镜像来运行起了一个容器。
运行Docker容器:在拉取了Docker镜像之后我们可以使用docker run [镜像名:tag]命令来运行一个容器,这个命令后面可以添加参数来进行不同的操作,这里只简单介绍下上面用到的。
-p 9500:80
这个参数的含义就是把容器的80端口映射到宿主机的9500端口,这样访问宿主机的9500端口就可以访问到nginx所在的容器了。
--name nginx
为这个容器起一个名字。
-d
后台运行。
因为容器是随时可以抛弃的,但是例如nginx和mysql这类需要存放数据的容器如果直接抛弃了旧的容器使用新的容器就会造成原来的数据丢失,所以就需要让这类容器的数据是和宿主机的某个目录下共享的,这样即使就容器删除了,新的容器只要指定数据的使用路径依旧可以使用旧容器的数据。只需要在运行容器时使用-v参数即可。
使用这条命令运行容器时,会将容器这个目录下的数据共享到宿主机/var/lib/docker/volumes/目录下,会自动生成一个随机目录。
docker run -d -p 9500:80 -v /etc/nginx/html --name nginx nginx:1.15.8
可以使用docker inspect nginx或docker inspect --format={{.Mounts}} nginx命令来查看随机挂载到了宿主机哪个目录
如果不想使用随机目录,也可以自己指定目录,使用冒号隔开即可,前面的是宿主机的目录,后面是容器的目录。
docker run -d -p 9500:80 -v /usr/local/half/nginx/html:/etc/nginx/html --name nginx nginx:1.15.8启动容器时使用自己的配置文件:
其实在镜像里面已经配置好了默认的配置文件路径,后续会讲到如何去查看这些配置路径。在nginx容器中配置文件的默认是/etc/nginx/nginx.conf,而在默认的配置文件里又讲页面的目录设置在了容器中的/etc/nginx/html中,所以其实可以使用上面的-v参数来使用自己的配置文件。
使用-v参数替换默认的配置文件,下面的命令中第一个-v参数是使用宿主机/usr/local/half/nginx/ nginx.conf来替换了默认的配置文件,这是我提前创建好的一个nginx配置文件。在那里面我指定了将/etc/nginx/html目录作为页面的根目录,而第二个-v命令则是把这个目录挂载到宿主机下的/usr/local/half/nginx/html目录,那里面有一个自定义的index.html文件。所以这样一来当我们再访问这个容器时会发现主页是跳转到自定义的页面上。
docker run -d -p 9500:80 -v /usr/local/half/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/half/nginx/html:/etc/nginx/html --name nginx nginx:1.15.8
而且因为我们把配置文件和存放页面的路径全都挂载在了宿主机的目录下,如果我们需要修改什么配置,只需要修改完之后再启动一个新的容器就可以了。
进入到容器内部:因为镜像其实是根据Dockerfile构建出来的,官方的镜像也是如此,很多时候我们或许不清楚默认的配置路径,除了查文档和资料外还可以直接进入容器内部来查看。
运行docker exec -i -t nginx /bin/bash命令就可以进入到容器内部,我们会发现其实即使一个简化版的Linux系统,所以我们可以使用一些基本的Linux命令来查询各种想要知道的信息。
Dockerfile:Dockerfile文件是专门用来创建镜像的,最开始Docker Hub页面上也提供了Dockerfile文件在Github上的路径,例如nginx的Dockerfile。我个人对Dockerfile的理解就是把所用的下载和各种路径的配置都按顺序写好在Dockerfile文件中,然后再使用它构建出镜像。其实上面使用的-v等命令都是对应着Dockerfile中不同的指令,只不过是以命令行的方式调用了,覆盖了Dockerfile中的指令配置。这里就不作详细说明,如果有想要了解的可以阅读<<第一本Docker书>>里面很详细的讲了Dockerfile的使用。
Docker常用命令:查看Docker信息,sudo docker info
查看Docker镜像,sudo docker images
查看Docker启动的容器,sudo docker ps
查看Docker所有的容器,sudo docker ps -a
删除Docker中某个容器,sudo docker rm [容器名字或id]
删除Docker中所有的容器(查询出所有的容器id,传到rm命令中),sudo docker rm $(sudo docker ps -a -q)
删除Docker中某个镜像,sudo docker rmi [镜像名字或id]
强制删除Docker中某个镜像,sudo docker rmi -f [镜像名字或id]
查找仓库中的镜像,sudo docker search [镜像名字]
拉取仓库中的镜像,sudo docker pull [镜像名字]
登录Docker Hub账号,sudo docker login
推送镜像到Docker Hub仓库,sudo push [仓库/镜像名字:tag]
总结:Docker在如今越来越流行,除了运维人员之外,后台开发也很有必要熟悉它,它可以极大的简化服务器的部署,本文只是粗略的介绍了基本使用,大家可以阅读<<第一本Docker书>>或者是官方文档等资料去了解更多更高级的功能。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27666.html
摘要:分层存储因为镜像包含操作系统完整的文件系统,其体积往往是庞大的,因此在设计时,就充分利用的技术,将其设计为分层存储的架构。分层存储的特征还使得镜像的复用定制变的更为容易。 什么是Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 L...
摘要:相关基于项目和项目,并遵循应用的十二因素风格。相关在设计上,项目尽量保持驱动和模块化,以便模块支持不同的实现方案。相关不仅可以管理众多虚拟机,其计算服务还支持对的驱动,管理引擎的子项目还可用于通过模板管理容器。现已整合公司所支持的项目。 整理自《Docker技术入门与实践》 PaaS(Platform as a Service) PaaS 是希望提供一个统一的可供所有软件直接运行而无需...
摘要:原文地址直接访问是一个虚拟环境容器,可以将应用代码环境配置系统环境等一并打包在一起,生成一个镜像,然后就可以发布到任意平台上。 原文地址: 直接访问 showImg(https://segmentfault.com/img/bVbh8Mt?w=587&h=220); Docker是一个虚拟环境容器,可以将应用代码、环境配置、系统环境等一并打包在一起,生成一个镜像,然后就可以发布到任意平...
摘要:后联合广东,致力于北伐,他所统领的七军被誉为钢军,奠定了南京国民政府的基础,龙潭一役,奠定了统一全国的基础。这本书爆出很多历史事实,比如北伐,国民党内部纷争,蒋介石的为人。 最近在看《李宗仁回忆录》,断断续续看了一个星期,因白天没时间,只能抽出晚上的时间,荒废了好多学习的时间,自觉惭愧。本来就对历史非常感兴趣,而李宗仁的这个回忆录,写得真是太好啦,每天晚上回来,本想着打开书就看一会,然...
阅读 3451·2021-11-19 09:40
阅读 1472·2021-10-13 09:41
阅读 2634·2021-09-29 09:35
阅读 2682·2021-09-23 11:21
阅读 1666·2021-09-09 11:56
阅读 812·2019-08-30 15:53
阅读 824·2019-08-30 15:52
阅读 584·2019-08-30 12:47