在上一节中了解了镜像和容器。对于镜像可以这样的理解,镜像相当于一个光盘,里面刻录了一个系统这个系统已经带有相关的服务了。

容器是通过镜像这个光盘安装的一个操作系统,光盘预加了什么服务,容器就有什么服务。

对于docker来说,相当多的操作跟镜像和容器有关系,比如如何管理镜像,如何管理容器,容器和宿主机的关系,等等。

在了解了docker的相关概念后,可以使用docker来创建各种服务,这里以创建一个nginx服务为例。

获取nginx镜像

可以从远程仓库中拉取相应的镜像,也可以使用本地仓库获取。

在默认的情况下,从docker hub 拉取镜像。

在docker hub中搜索nginx镜像。

root@ubuntu:~# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 11359 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1595 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 712 [OK]

可以看到跟nginx相关的镜像。

这里下载官方的nginx镜像:

docker pull nginx

镜像下载成功:

Using default tag: latest
latest: Pulling from library/nginx
743f2d6c1f65: Pull complete
6bfc4ec4420a: Pull complete
688a776db95f: Pull complete
Digest: sha256:a08f3331865d6072d7a28a5b943d1526dbd3fe3b4ca723c0438750d5e23f21a1
Status: Downloaded newer image for nginx:latest

可以查看镜像,看看docker中的镜像是不是多了一个nginx

root@ubuntu:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 53f3fd8007f7 4 hours ago 109MB

启动nginx服务器

这里创建启动一个nginx的容器:

root@ubuntu:~# docker run --name tb-nginx -p 80:80 -d nginx
f32217ebb3f75267eb5166776dde7600ef15955264daea7d6820cc289ec233d5

其中参数的意义如下:

  • tb-nginx 容器名称。
  • -d设置容器在在后台一直运行。
  • -p 端口进行映射,将本地 80 端口映射到容器内部的 80 端口。

成功的启动了一个nginx容器,nginx容器里面是什么呢?可以到容器去看看。

其实nginx容器,是一个centos的系统加一个nginx的服务器,这个在后面构造镜像的时候会更加明白。

在本地的中查看进程:

root@ubuntu:~# ps ax | grep nginx
7115 ? Ss 0:00 nginx: master process nginx -g daemon off;
7154 ? S 0:00 nginx: worker process
7281 pts/0 S+ 0:00 grep --color=auto nginx

可以看到本地中有nginx的进程,也就是说docker并不是虚拟机,创建的进程还是在本地中。这样就比较有意思了,创建的方式像虚拟机一样,但是运行的方式并不是虚拟机,这样不会浪费太多的虚拟资源。

访问本地页面

这样相当于在本地的机子上安装了一个nginx服务器,由于我们的端口也是映射到本地的80端口上,在外面访问网站没有什么差别。

是不是,跟普通的访问一样。

映射本地文件

如果单纯这样,docker并不是很好用,如果单纯作为服务器的话,最好是能把nginx用到的相关文件都能够映射到本机中,这样在修改一些配置和html的时候,不需要每次都登入到docker中去,docker能够映射本地文件。

启动docker的时候,带上相关的文件映射。

docker run --name tb-nginx -p 80:80 -d -v /data/nginx/logs:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html  nginx

需要注意的是,如果一开始需要用到docker中的文件需要把它拷贝出来:

如拷贝html路径下的文件:

docker cp  8366ba061467:/usr/share/nginx/html/ /data/nginx/

在路径文件映射了以后,可以在目录/data/nginx/logs下看到访问日志和错误日志。在/data/nginx/html 可以修改相应的html代码。

nginx-php

在nginx中如果需要加入php,比较方便的是直接下载一个nginx-php的镜像,在hub中找了一个相关的:

创建镜像并启动容器:

docker run -d -p 80:80 richarvey/nginx-php-fpm

访问本地可以看到相关的页面。

如果需要还可以进一步的把地址映射出来。

docker 使用:创建nginx容器的更多相关文章

  1. Docker(八)-Docker创建Nginx容器

    获取Nginx镜像 最简单的方法就是通过 docker pull nginx 命令来创建 Nginx容器. $ sudo docker pull nginx 或者: $ sudo docker pul ...

  2. docker上部署nginx容器80端口自动转443端口

    拉去nginx镜像 # docker pull nginx 运行nginx容器config用于拷贝nginx配置文件 # docker run --name nginxconfig -d docker ...

  3. kubernetes 创建nginx 容器

    参考:http://blog.csdn.net/qq1010885678/article/details/48832067 一个简单的nginx服务器 先决条件:你需要拥有的是一个部署完毕并可以正常运 ...

  4. Docker: docker 启动一个Nginx容器

    本文演示从官方镜像仓库拉取一个nginx镜像并启动docker run -d –p 8800:80 nginx (同一个镜像,可以启动N个容器, 比如说,一个nginx服务,可以在这个docker主机 ...

  5. docker中使用nginx容器代理其他容器

    Nginx is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, ...

  6. 在Docker中创建Mongo容器的后续设置

    后续设置包括设置数据库管理员账号密码.创建业务数据库以及设置账户密码 需要注意的是,在创建Mongo容器后,需要映射到本机 以管理员身份打开powershell 先切换到mongdo bash # ` ...

  7. Docker - 解决创建 tomcat 容器镜像却无法访问页面的问题

    问题背景 查看 tomcat 镜像 docker images 运行并创建 tomcat 容器 docker -d -p 8888:8080 --name=tomcat2 tomcat:latest ...

  8. Docker | Compose创建mysql容器

    本文通过Docker Compose来创建mysql容器 在linux服务器上创建文件,用于管理容器 mkdir docker-mysql cd docker-mysql vim docker-com ...

  9. 利用Docker快速创建Nginx负载均衡节点

    本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.Self-Host Kestrel 1. 在vs2017中新建dotnet core2. ...

随机推荐

  1. 黑马oracle_day02:04.oracle对象&&05.oracle编程(a)

    01.oracle体系结构 02.oracle的基本操作 03.oracle的查询 04.oracle对象&&05.oracle编程(a) 05.oracle编程(b) 04.orac ...

  2. Powershell 中的管道

    管道 上个命令中的输出,通过管道作为下个命令的输入.Linux中的管道传递的是text,但ps中传递的是object.但是命令究竟返回的是什么类型呢?以下命令回答了这个问题: get-service ...

  3. memcached redis 本质区别是功能多少

    功能: 1.memcached 数据类型比较单一,数据淘汰策略单一,功能简单 2.redis 数据类型比较全面, 数据淘汰策略比较多,功能较强 有持久化能力,可以持久存储少量数据(数据量不会大于本机内 ...

  4. python如何在一个for循环中遍历多个列表

    推荐使用python内置函数zip,它可以将x个y维列表变成一个zip对象,将zip对象拆包可以发现它变成了y个x维元组.我们还可以将这个对象变成一个元组或列表.如下所示: 如果是两个列表的zip,我 ...

  5. IDEA查看接口的所有实现类

    查看实现类 接口下右键Diagrams->Show Diagram,选中接口右键Show Implementations 或接口下按Ctrl+H: 或接口类名左边按钮:

  6. leetcode 746. 使用最小花费爬楼梯

    题目: 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始). 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯 ...

  7. 前端-HTLM

    前端简介: 什么是前端? 任何与用户直接打交道的操作界面都可以被称为前端,如:网页界面,手机界面.... 前端的学习历程和内容: 要学习的内容: 三大重点: 1.Web服务的本质: 浏览器中敲入网址回 ...

  8. Maven中settings.xml文件各标签含义

    原文地址:http://www.cnblogs.com/jingmoxukong/p/6050172.html?utm_source=gold_browser_extension settings.x ...

  9. Servlet中转发和重定向的路径问题以及表单提交路径问题

    一.请求转发与响应重定向的种类 有两种方式获得Servlet转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher() ...

  10. iTOP4412开发板-使用buildroot搭建最简单的linux

    本文档介绍的是使用buildroot搭建最简单的linux文件系统,Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfi ...