Docker学习笔记之创建安装了nginx服务器的镜像
操作步骤:
1. 编辑Dockerfile
2. 使用build命令创建镜像
3. 使用run命令测试创建的镜像
- 编辑Dockerfile
首先,需要使用文本编辑器编辑Dockerfile文件(注意没有扩展名,文件名称就是Dockerfile),文件内容如下:
FROM ubuntu:18.04
MAINTAINER Super Lollipop <superlollipop@163.com> RUN mv /etc/apt/sources.list /etc/apt/sources.list_bak
RUN echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main multiverse restricted universe\ndeb http://mirrors.aliyun.com/ubuntu/ bionic-backports main multiverse restricted universe\ndeb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main multiverse restricted universe\ndeb http://mirrors.aliyun.com/ubuntu/ bionic-security main multiverse restricted universe\ndeb http://mirrors.aliyun.com/ubuntu/ bionic-updates main multiverse restricted universe\ndeb-src http://mirrors.aliyun.com/ubuntu/ bionic main multiverse restricted universe\ndeb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main multiverse restricted universe\ndeb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main multiverse restricted universe\ndeb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main multiverse restricted universe\ndeb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main multiverse restricted universe" > /etc/apt/sources.list
RUN apt update
RUN apt install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx VOLUME ["/data","/etc/nginx/site-enabled","/var/log/nginx"] WORKDIR /etc/nginx CMD ["nginx"] EXPOSE 80
EXPOSE 443
这个Dockerfile是使用ubuntu:latest创建镜像,且安装nginx服务器。目前我这边的ubuntu:latest其实就是ubuntu:1804,由于ubuntu镜像的默认安装源太慢了,我这里更换了阿里源。文件内容的说明如下:
FROM:制定创建镜像的基础镜像,这里选择最新版的ubuntu,注意基础镜像是已经下载到本地的镜像,可以使用docker images查看本地的镜像
MAINTAINER:填写维护者信息
RUN:使用基础镜像内需要运行的shell脚本或命令,这里输入了命令。首先备份了原有的源文件,然后使用echo命令添加的新的源文件,然后执行更新源后下载nginx服务器,后面的命令是nginx服务器的设置
VOLUMN:设置要与主机共享的目录,我这里设置了三个目录
WORKDIR:为CMD中设置的可执行文件设置运行目录
CMD:指定容器启动时执行的shell命令或脚本,我这里是启动nginx服务器
EXPOSE:设置与主机相连的端口号

- 使用build命令创建镜像
sudo docker build --tag nginx:0.1 .
docker build用法:docker build [选项] Dockerfile路径。执行详细结果见下图:

......

可以看到docker build命令是根据Dockerfile文件的命令脚本一步步执行下去的,Step 1/13 Step 2/13 ...。最后结果可以看到 Successfully built 14a1c63ce60b Successfully tagged nginx:0.1 字眼提示成功创建容器了。可以使用docker images查看创建的容器,这里不再示例。
- 使用run命令测试创建的镜像
sudo docker run --name nginx-ubuntu-container -d -p 80:80 nginx:0.1
命令参数说明:-d 选项在后台运行容器;-p 80:80 选项可以将本机的80端口和容器的80端口连接起来,并暴露到外面。

这时候我们就可以在浏览器测试容器是否成功启动了,浏览器访问nginx服务器:

#cnblogs_post_body p { margin: 10px; text-indent: 2em }
Docker学习笔记之创建安装了nginx服务器的镜像的更多相关文章
- docker学习笔记1-- 用Toolbox安装Docker--介绍Docker Machine
使用的是Docker Toolbox,非Docker for Windows 一.docker的认识与安装(windows安装) http://blog.csdn.net/tina_ttl/artic ...
- Docker学习笔记_创建和使用Centos容器
实验:创建和使用Centos容器 步骤: 1.搜索 sudo docker search cen ...
- Docker学习笔记之创建Ubuntu基础镜像
在创建基础镜像之前需要安装Bootstrap工具debootstrap,所以执行命令: sudo apt install debootstrap 软件安装完成后就可以使用debootstrap工具下载 ...
- docker学习笔记-1
docker学习笔记一:安装 mac安装docker docker官方文档上有这么一段话: Because the Docker daemon uses Linux-specific kernel f ...
- Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(一)
上一节演示如何安装Docker,链接:Docker学习笔记之-在CentOS中安装Docker 本节演示 将.net core 3.1 部署到docker容器当中,并使用 Nginx反向代理,部署平台 ...
- Docker学习笔记之--安装mssql(Sql Server)并使用Navicat连接测试(环境:centos7)
前一节演示如何使用Nginx反向代理 .net Core项目容器,地址:Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(二) ...
- Docker学习笔记之-在CentOS中安装Docker
上一节演示了如何 通过Xshell连接CentOS服务,链接:Docker学习笔记之-通过Xshell连接 CentOS服务 本节将演示 如何在CentOS中安装 Docker 第一步:更新系统包到最 ...
- docker学习笔记1 -- 安装和配置
技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...
- docker学习笔记(一)—— ubuntu16.04下安装docker
docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...
随机推荐
- 零基础的Java小白如何准备初级开发的面试
对于各位Java程序员来说,只要能有实践的机会,哪怕工资再低,公司情况再一般,只要自己上心努力,就可能在短时间内快速提升,甚至在工作2年后进大厂都有希望,因为项目里真实的开发实践环境是平时学习不能模拟 ...
- JS复习之深浅拷贝
一.复习导论(数据类型相关) 想掌握JS的深浅拷贝,首先来回顾一下JS的数据类型,JS中数据类型分为基本数据类型和引用数据类型. 基本数据类型是指存放在栈中的简单数据段,数据大小确定,内存空间大小可以 ...
- Linux下网卡配置多个IP
ip addr add 192.168.12.4/24 dev eno16777728但是每次重启会失效 如果希望每次重启会重新绑定IP,可以将:ip addr add 192.168.12.X/24 ...
- Windows远程报错:由于没有远程桌面授权服务器可以提供许可证,远程会话被中断
故障原因:Windowsserver超过两人的远程连接是收费的,有120天免费试用期,超过这个时间再连接就会报错. 解决方法一: 进行续费 解决方法二: 1,在运行里运行 mstsc /v:ip ...
- Go语言(1)——程序结构
程序结构 基础部分仅仅列举和其他语言不一样的地方(C语言为例). 声明 Go语言有四个主要声明:var.const.type.func,类似于C语言中的变量,常量,结构体和函数. package ma ...
- chrome 开发者工具使用一例
今天搜到了一篇我想看的文章,某网站上又是弹出注册小窗遮挡,又是一堆漂浮广告,还把字体搞成灰色. 右键审查元素,找到几个div,删掉:原来那个字体的灰色,是个什么script做的遮罩,也删掉. 然后整个 ...
- Angular *ngIf length
Angular *ngIf length 在Angular中如何判断*ngIf Arrary的长度? 具体代码如下: result = []; <div class="kt-secti ...
- 图解HTTP权威指南 | HTTP报文
一.问题 1.报文流是如何流动的 2.H ...
- 从零实现Linux一键自动化部署.netCore+Vue+Nginx项目到Docker中
环境搭建 1.安装Linux,这里我用的阿里云服务器,CentOS7版本 2.进入Linux,安装Docker,执行以下命令 sudo yum update #更新一下yum包 sudo yum in ...
- EF中使用UnitOfWork
前言 关于EF5中使用UnitWork,参见另一博文: https://www.cnblogs.com/masonblog/p/9801162.html 每次提交数据库都会打开一个连接,造成结果是: ...