一、制作 nginx 镜像

1、下载配置文件

  • mkdir /opt/nginx_docker && cd /opt/nginx_docker
  • mkdir nginx && cd nginx
  • wget https://raw.githubusercontent.com/jamtur01/dockerbook-code/master/code/5/sample/nginx/global.conf
  • wget https://raw.githubusercontent.com/jamtur01/dockerbook-code/master/code/5/sample/nginx/nginx.conf
  • cd ..

2、编写Dockerfile&&制作镜像

  • cd /opt/nginx_docker

  • vi Dockerfile

  • docker build -t liangshengqi/nginx .
  • docker history xxxxxxx

FROM ubuntu: 14.04

MAINTAINER: LIANGSHENGQI "liangshengqi@inspur.com"

ENV REFRESHED_AT 2017-11-14

RUN apt-get update

RUN apt-get -y -q install nginx

RUN mkdir -p /var/www/html

ADD nginx/global.conf /etc/nginx/conf.d/

ADD nginx/nginx.conf /etc/nginx/nginx.conf

EXPOSE 80

3、运行nginx镜像/创建容器

cd nginx_docker

mkdir website && cd website

wget https://raw.githubusercontent.com/jamtur01/dockerbook-code/master/code/5/sample/website/index.html

docker run -d -p 80 --name myweb -v /opt/nginx_docker/website:/var/www/html/website lexiaofei/nginx nginx

查看日志 docker logs -f myweb

二、在容器内安装运行 nginx

1、启动容器

设置端口映射,允许访问容器的80端口

  • -P 为所有端口映射
  • -p 指定映射端口
  • docker run -p 80 -i -t ubuntu /bin/bash
  • docker run -p 8080:80 -i -t ubuntu /bin/bash
  • docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash
  • docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash

#创建映射80端口的交互式容器

  • docker run -p 80 --name web ubuntu /bin/bash

2、安装nginx

#安装nginx, 安装vim,创建静态页面

容器内#apt-get install -y nginx

容器内#apt-get install -y vim

容器内#mkdir -p /var/www/html

容器内#cd /var/www/html

容器内#vi index.html

<html>

<head><title>Hello</title></head>

<body>

<h1>Hahaha!</h1>

</body>

</html>

#修改nginx配置文件

whereis nginx

ls /etc/nginx

vim /etc/nginx/sites-enabled/default

root /var/www/html/index.html

3、#运行nginx

启动nginx(此时在容器内,所以在容器内运行)::nginx

查看正在运行的进程(此时在容器内,所以列出的是容器内的正在运行的进程)::ps -ef

退出容器::ctrl+p/ctrl+q

列出正在运行的容器:docker ps -a

列出指定的容器的端口映射::docker port web

4、#验证网站访问

curl http://127.0.0.1:49167

docker inspect web

curl http://172.17.0.32/

docker stop web

docker start -i web

ctrl+p/q

在容器内启动进程::docker exec web nginx

查看容器内运行的进程::docker top web

curl http://172.17.0.32 # 这次不行了,重新启动后ip变了!

Docker学习笔记 - Docker部署nginx网站的更多相关文章

  1. Docker学习笔记 — Docker私有仓库搭建

    Docker学习笔记 — Docker私有仓库搭建   目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2   和Mavan的管理一样,Dockers ...

  2. Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(一)

    上一节演示如何安装Docker,链接:Docker学习笔记之-在CentOS中安装Docker 本节演示 将.net core 3.1 部署到docker容器当中,并使用 Nginx反向代理,部署平台 ...

  3. Docker学习笔记 - Docker容器内部署redis

    Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...

  4. Docker学习笔记 - Docker容器之间的连接

    学习目标: 容器之间可以相互连接访问:: --link redis:redisAlias 准备工作 FROM ubuntu:14.04 RUN apt-get install -y ping RUN  ...

  5. Docker学习笔记 — Docker私有仓库搭建【转载】

    标签: Docker 2015-03-10 21:08 24190人阅读 评论(0) 收藏 举报  分类: Docker(26)    目录(?)[+]   和Mavan的管理一样,Dockers不仅 ...

  6. Docker学习笔记 - Docker的守护进程

    学习目标:  查看Docker守护进程的运行状态 启动.停止.重启Docker守护进程 Docker守护进程的启动选项 修改和查看Docker守护进程的启动选项 1.# 查看docker运行状态  方 ...

  7. Docker学习笔记 - Docker客户端和服务端

    学习内容: Docker客户端和服务端的通讯方式:client和自定义程序 Docker客户端和服务端的连接方式:socket 演示Docker客户端和服务端之间用remote-api通讯:nc   ...

  8. Docker 学习笔记 ---Docker组件

    Docker组件 1.  客户端:dockerclient 2.  服务端:dockerserver 3.  Docker镜像 4.  Registry 5.  Docker 容器 Docker客户端 ...

  9. Docker学习笔记 - Docker的镜像

    一个容器实际上是运行在宿主机上的一个进程. 只不过在启动这个进程之前进行了一些特殊处理,让这个容器进入了一个全新的虚拟环境,与宿主机的环境分开, 所以这个进程及其子进程认为自己运行在一个独立的世界里面 ...

随机推荐

  1. css学习の第六弹—样式设置小技巧

    一.css样式设置小技巧>>1.行内元素水平居中是通过给父元素设置 text-align:center 来实现的.html代码:<body> <div class=&qu ...

  2. MacOS中升级openssl

    MacOS中升级openssl   ➜  ~ brew instal openssl 使用情况中始终发现,openssl并没有真正升级   在/usr/local/Cellar/openssl/目录中 ...

  3. conda创建py27虚拟环境安装theano(anaconda3)

    现在python3已经成为主流的python环境,大部分的package都兼容python3,仍然有一小部分,或者说是某一领域的package需要使用python2.本人现在主要在利用python做机 ...

  4. 解决Win10下_findnext()异常

    在win10中,使用文件遍历函数_findnext会报0xC0000005错误 ,发生访问冲突错误 错误定位到ntdll.dll 原因: _findnext()第一个参数"路径句柄" ...

  5. python笔记之类

    类 python不直接支持私有方式,可以在方法或者属性之前加上双下划线,将其变为私有,即外部无法直接调用 访问私有方法或者属性,方法是: _<类名><变量名> 首先类定义 # ...

  6. puppet客户端拉取服务端的资源时报错

    2017-11-01   16:21:47 客户端再拉取服务端的配置的资源时,出现一下报错: 造成原因:服务配置的资源不可用: 解决办法:将服务端不正确的资源配置删除: master:   cd   ...

  7. Idea中开启assert断言

    先打开相应的配置面板,有以下两种方式.   然后在VM栏里输入 -enableassertions 或者 -ea 就好了 然后编写程序试试 我的目录结构如下:(因为Main class那里要写类的全限 ...

  8. 自动识别移动端还是PC端

    平时在开发中经常会遇到这样的需求,除了开发PC端之外,还会同时开发移动端.对于简单的页面,可以使用bootstrap之类的框架实现响应式页面,可是当页面很复杂的时候,就需要开发一个移动端页面,一个PC ...

  9. 【Python】 xml转json

    虽然python有解析xml的模块,也有生成json的模块,但是没有把这两者连接起来的模块. 下面是以来自MIT的大神Martin Blech写的一个方便的模块,供大家参考.也别忘了在用之前先拜谢作者 ...

  10. GDB 调试多线程多进程

    GDB是linux下的调试利器,在c/c++程序开发过程中必不可少的.这里总结一下多进程和多线程的调试方法和技巧. 多进程的调试: 如下示例 #include <sys/mman.h> # ...