一,下载centos的image

1,下载centos最新image

[root@localhost ~]# docker pull centos

2,查看是否成功下载到本地image

[root@localhost ~]# docker images | grep centos
centos latest 470671670cac 7 weeks ago 237MB

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,从docker运行centos8

1,宿主机上创建目录,供docker运行后的容器挂载

[root@localhost liuhongdi]# mkdir /data/nfs
[root@localhost liuhongdi]# mkdir /data/nfs/nfs1

2,运行centos这个image

[root@localhost ~]# docker run --name nfs -v /data/nfs/nfs1:/data/nfs/nfs1 --privileged -d -i -t centos:latest  /usr/sbin/init
2e6fa31c71936674bb048e663d0652e3b227db84df576e1cd1d103608ad2fe56

3,查看此容器是否运行成功

[root@localhost ~]# docker ps -a | grep centos
d0fa7ffc318d centos:latest "/usr/sbin/init" 16 seconds ago Up 15 seconds

4,登录到容器

[root@localhost ~]# docker exec -it nfs /bin/bash
[root@d0fa7ffc318d /]#

三,安装并启动nfs4

1,检查是否有安装nfs

[root@d0fa7ffc318d /]# systemctl status nfs-server
Unit nfs-server.service could not be found.

看来image很简单,自带的软件非常少

从yum安装

[root@d0fa7ffc318d /]# yum install nfs-utils

2,安装成功后,配置nfs

查看nfs的运行状态 :

[root@d0fa7ffc318d /]# systemctl start nfs-server
[root@d0fa7ffc318d /]# systemctl status nfs-server

3,检查nfs是否成功启动:查看端口:

[root@d0fa7ffc318d /]# netstat -anp
20048 mountd
2049 nfs
111 portmap

四,新加nginx账号,用来供nfs的访问使用

1,建立组

[root@d0fa7ffc318d /]# groupadd nginx
[root@d0fa7ffc318d /]# groupmod -g 973 nginx
[root@d0fa7ffc318d /]# grep nginx /etc/group
nginx:x:973:

2,建立用户

[root@d0fa7ffc318d /]# useradd -g nginx -s /sbin/nologin -M nginx
[root@d0fa7ffc318d /]# usermod -u 973 nginx
[root@d0fa7ffc318d /]# grep nginx /etc/passwd
nginx:x:973:973::/home/nginx:/sbin/nologin

五,nfs上配置export一个目录

1,配置export一个目录

[root@2e6fa31c7193 /]# vi /etc/exports

内容:

/data/nfs/nfs1 192.168.1.8(rw,sync,all_squash,anonuid=973,anongid=973)
/data/nfs/nfs1 172.17.0.1(rw,sync,all_squash,anonuid=973,anongid=973)

2,使配置文件的修改生效:

[root@2e6fa31c7193 /]# exportfs -rv
exporting 192.168.1.8:/data/nfs/nfs1
exporting 172.17.0.1:/data/nfs/nfs1

3,在客户端机器上检查nfs服务端输出的文件系统:

[root@localhost ~]# showmount -e 172.17.0.3
Export list for 172.17.0.3:
/data/nfs/nfs1 172.17.0.1,192.168.1.8

4,在客户端上测试挂载

[root@localhost ~]# mount -t nfs 172.17.0.3:/data/nfs/nfs1 /data/mnt/nfs1

5,查看挂载是否成功:列出所有的nfs文件系统

[root@localhost ~]# df -hT | grep nfs
172.17.0.3:/data/nfs/nfs1 nfs 50G 24G 23G 51% /data/mnt/nfs1 

六,安装nginx

1,安装nginx

[root@2e6fa31c7193 /]# yum install nginx

2,配置nginx

1,查看nginx.conf,找到默认的server的配置

[root@2e6fa31c7193 nginx]# more /etc/nginx/nginx.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html; # Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
}

2,在root         /usr/share/nginx/html;  这个目录下,给nfs建立符号链接

[root@2e6fa31c7193 html]# ln -s /data/nfs/nfs1 ./nfs

3,启动nginx

[root@2e6fa31c7193 html]# systemctl start nginx

4,测试nginx是否生效

从宿主机复制一张图片a1.jpg到/data/nfs/nfs1目录下,

然后访问这个地址进行测试:

http://172.17.0.3/nfs/a1.jpg

说明:172.17.0.3 是nfs服务所在容器的ip

七,commit一个新镜像

[root@localhost ~]# docker commit nfs nfsnginx:0.1
sha256:fa72df9fb74483e90335e99985d8c560d6b6376a66a666e42c3260f79e925691

八,查看新镜像是否生成

[root@localhost ~]# docker images | grep nfsnginx
nfsnginx 0.1 fa72df9fb744 54 seconds ago 328MB

九,测试运行新镜像:

1,启动

[root@localhost ~]# docker run --name nfsnginx -v /data/nfs/nfs1:/data/nfs/nfs1 --privileged -d -i -t nfsnginx:0.1 /usr/sbin/init
ce03496a89b0fcb4011d1c3b945449fabcc27c3438449ce856cbbdf3f2513acb

2,登录,并查看ip:

[root@localhost ~]# docker exec -it nfsnginx /bin/bash
[root@ce03496a89b0 /]# ifconfig | grep inet
inet 172.17.0.4 netmask 255.255.0.0 broadcast 172.17.255.255

3,启动服务:

[root@ce03496a89b0 /]# systemctl start nginx
[root@ce03496a89b0 /]# systemctl start nfs-server

十,查看docker的版本

[root@localhost source]# docker --version
Docker version 19.03.7, build 7141c19

docker19.03制作一个基于centos8的带有nfs4服务的镜像的更多相关文章

  1. 如何快速搭建一个基于ServiceStack框架的web服务

    ServiceStack是一个高性能的.NET Web Service 平台,能够简化开发高性能的REST (支持JSON,XML,JSV,HTML,MsgPack,ProtoBuf,CSV等消息格式 ...

  2. 使用Axure RP原型设计实践03,制作一个登录界面的原型

    本篇体验做一个登录界面的原型. 登录页 首先在Page Style里为页面设置背景色. 如果想在页面中加图片,就把Image部件拖入页面,并设置x和y轴.双击页面中的Image部件可以导入图片.在Im ...

  3. 用Kotlin写一个基于Spring Boot的RESTful服务

    Spring太复杂了,配置这个东西简直就是浪费生命.尤其在没有什么并发压力,随便搞一个RESTful服务 让整个业务跑起来先的情况下,更是么有必要纠结在一堆的XML配置上.显然这么想的人是很多的,于是 ...

  4. 为Azure-云准备一个基于Red Hat 8.x 的虚拟机镜像

    由于公司最近要求部分项目上线到Azure云上,要求操作系统使用的Redhat 8.x,而且必须加固 而在Azure官网提供的镜像中,又没有Redhat,于是只有自己自定义Redhat镜像,最后加固,作 ...

  5. docker19.03搭建私有容器仓库

    一,启动docker后,搜索registry [root@localhost source]# systemctl start docker [root@localhost source]# dock ...

  6. 极客DIY:制作一个可以面部、自主规划路径及语音识别的无人机

    引言 现在大部分无人机厂商都会为第三方开发者提供无人机API接口,让他们更容易地开发无人机飞行控制应用程序,让无人机想怎么玩就怎么玩.有的API接口可以帮助开发者开发基于Web版的APP.手机APP甚 ...

  7. IIS 中托管基于TCP绑定的WCF服务

    IIS 中托管基于TCP绑定的WCF服务 一.创建一个基于TCP绑定的WCF服务 1.创建一个的简单的服务具体代码如下 服务契约定义 namespace SimpleService { // 注意: ...

  8. 基于小米即时消息云服务(MIMC)的Web IM

    michat 一个基于小米即时消息云服务(MIMC)的Web IM. 源码地址github和gitee同步. 截图展示 如何使用 请先双击目录"需要安装的jars"的install ...

  9. 基于url-to-pdf-api构建docker镜像,制作一个网页另存服务

    基于url-to-pdf-api构建docker镜像,制作一个网页另存服务 业务背景: 需要根据一个url路径打印这个网页的内容 解决方案: 1.使用wkhtml2pdf 2.使用puppeteer ...

随机推荐

  1. 读书笔记 | Kubernetes in Action

    1 Kubernetes介绍 Kubernetes(以下简称K8s) 是一个部署和管理容器化应用的软件系统.它将底层基础设施抽象,简化了应用的开发.部署,以及对开发和运维团队的管理. K8s由一个主节 ...

  2. 第24课 - #pragma 使用分析

    第24课 - #pragma 使用分析 1. #pragma简介 (1)#pragma 是一条预处理器指令 (2)#pragma 指令比较依赖于具体的编译器,在不同的编译器之间不具有可移植性,表现为两 ...

  3. [LeetCode]647. 回文子串(DP)

    ###题目 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串. 示例 1: 输入: "abc&q ...

  4. HTTP 【值得你看个究竟】

    我是一名程序员,我的主要编程语言是 Python,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟.醍醐灌顶的感觉. 认识 ...

  5. 2020华为杯数学建模B题-RON建模 赛后总结与分析

    好久好久没有写博客了...挺累的,从二月份开始找暑期实习,接着在进行暑期实习,然后马不停蹄地进行秋招,现在总算结束实习,前两天又参加了华为杯数学建模竞赛,感觉接下来就会很轻松了,希望能好好休息休息.这 ...

  6. 浅谈 ArrayList 及其扩容机制

    浅谈ArrayList ArrayList类又称动态数组,同时实现了Collection和List接口,其内部数据结构由数组实现,因此可对容器内元素实现快速随机访问.但因为ArrayList中插入或删 ...

  7. vue +signalR 实现服务端到客户端消息发送

    承接上一篇 上一篇博客实现是了消息的实时通信,这一篇博客主要讲如何从中心服务内部向客户端发送消息. 先看下最终效果: 在core应用程序里加一个控制器TestController 注入控制器中的IHu ...

  8. xss利用——BeEF#stage2(初始并持续化控制)

    全文概览 浏览器攻击方法流程 攻击浏览器一般分为几个阶段,如下图 整个过程分为三个步骤,第一步是初始化控制,第二步是持续控制,第三步是攻击.在第三步中的七个攻击方法是可以交叉的,比如可以同时攻击用户和 ...

  9. 最精美详尽的 HTTPS 原理图!

      来源:r6a.cn/ffJk 作为一个有追求的程序员,了解行业发展趋势和扩充自己的计算机知识储备都是很有必要的,特别是一些计算机基础方面的内容,就比如本篇文章要讲的计算机网络方面的知识.本文将为大 ...

  10. # 初体验之腾讯位置服务彩云天气开发者api

    初体验 最近接触到了boxjs,看到了里面一个比较有意思的彩云天气的脚本,由于自己本身就是彩云天气pro的用户,日常使用过程中感觉到彩云的降雨提醒还是挺方便的,于是就准备开始使用这个天气的脚本. 脚本 ...