[Docker]三.Docker 部署nginx,以及映射端口,挂载数据卷

一.Docker 部署 Nginx 以及端口映射

Docker 部署 Nginx,首先需要下载nginx镜像,然后启动这个镜像,就运行了一个nginx的容器了

1.下载 nginx 镜像并启动容器

#查看是否存在nginx镜像:发现没有nginx镜像
[root@localhost zph]# docker images |  grep nginx#下载nginx镜像
[root@localhost zph]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a378f10b3218: Pull complete 
5b5e4b85559a: Pull complete 
508092f60780: Pull complete 
59c24706ed13: Pull complete 
1a8747e4a8f8: Pull complete 
ad85f053b4ed: Pull complete 
3000e3c97745: Pull complete 
Digest: sha256:add4792d930c25dd2abf2ef9ea79de578097a1c175a16ab25814332fe33622de
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest#再次查看是否存在nginx镜像:发现下载成功了nginx镜像
[root@localhost zph]# docker images
REPOSITORY                       TAG                 IMAGE ID       CREATED         SIZE
nginx                            latest              593aee2afb64   22 hours ago    187MB#启动nginx容器,在后台运行,不用加/bin/bash命令,因为nignx底层会执行相关命令
[root@localhost zph]# docker run -it -d --name mynginx 593aee2afb64 
e0773deea60048d82729038535fad45308204e181da6c7a35fb44090cc552077#查看启动的容器:发现nginx已经启动
[root@localhost zph]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
e0773deea600   593aee2afb64   "/docker-entrypoint.…"   5 seconds ago   Up 2 seconds   80/tcp    mynginx
[root@localhost zph]# 

启动nginx容器成功后,这样就创建了一个web服务了,验证这个容器是否成功: 进入nginx容器访问url,验证nginx

#进入nginx容器访问url,验证nginx
[root@localhost zph]# docker exec -it e0773deea600 /bin/bash#curl 验证是否可以打印出nginx相关html:发现可以打印,说明nginx容器创建成功
root@e0773deea600:/# curl 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
root@e0773deea600:/# 

nginx容器创建成功后,那么怎么在外部访问这个容器的url呢?

2. -p 映射端口

想在外部访问容器里面的 nginx 这个时候就需要映射端口

可以通过 -p 参数来映射端口,语法:

        docker run -p 容器外端口:容器内端口 容器名/容器ID

#查看运行的容器
[root@localhost zph]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
e0773deea600   593aee2afb64   "/docker-entrypoint.…"   15 minutes ago   Up 15 minutes   80/tcp    mynginx#查看镜像
[root@localhost zph]# docker images | grep nginx
nginx                            latest              593aee2afb64   23 hours ago    187MB# 再运行一个nginx容器(一个镜像可以运行多个容器),并进行端口映射,让外部也可以访问nginx容器中的html
[root@localhost zph]# docker run -it -d --name mynginx_port -p 81:80 593aee2afb64 
36bf218c9754446319299c61f919d54aeebf0d3734ecc0de56183972ea7d6614#查看运行的容器:发现mynginx_port容器已在运行了
[root@localhost zph]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                               NAMES
36bf218c9754   593aee2afb64   "/docker-entrypoint.…"   5 seconds ago    Up 3 seconds    0.0.0.0:81->80/tcp, :::81->80/tcp   mynginx_port
e0773deea600   593aee2afb64   "/docker-entrypoint.…"   16 minutes ago   Up 16 minutes   80/tcp                              mynginx#在linux系统中访问nginx中的html:发现成功访问了
[root@localhost zph]# curl 127.0.0.1:81
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>#查看当前linux对外的ip:发现是ens33中的:192.168.0.6
[root@localhost zph]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:c3:3d:27 brd ff:ff:ff:ff:ff:ffinet 192.168.0.6/24 brd 192.168.0.255 scope global dynamic noprefixroute ens33valid_lft 171516sec preferred_lft 171516secinet6 fe80::20c:29ff:fec3:3d27/64 scope link noprefixroute valid_lft forever preferred_lft forever#在linux中,通过192.168.0.6本地ip访问发现访问成功
[root@localhost zph]# curl 192.168.0.6:81
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@localhost zph]# 

二.Docker 部署 Nginx 挂载数据卷

1.-v 指定路径挂载数据卷

挂载数据卷后,当容器外的数据发生变化,容器内的数据也会跟随变化,当容器内的数据发生变化后,也会同步到容器外
基本语法:
        docker run -v 容器外目录 : 容器内目录 容器 ID
#查看镜像
[root@localhost www]# docker images
REPOSITORY                       TAG                 IMAGE ID       CREATED         SIZE
nginx                            latest              593aee2afb64   37 hours ago    187MB#端口映射以及挂载数据
[root@localhost www]# docker run -it -d --name mynginx_pv -p 82:80 -v /var/www/:/usr/local/nginx/html  593aee2afb64
ce47906a57afb7c24a1847211f60e7d778e86a2e0b3c65bbf2bed7cb48123ad8#查看var/www下文件
root@localhost www]# ll
总用量 12
-rw-r--r-- 1 root root  5 10月 26 07:37 index.html
-rw-r--r-- 1 root root 10 10月 25 07:54 test2.txt
-rw-r--r-- 1 root root 12 10月 25 07:51 test.txt#查看运行的容器
[root@localhost www]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                               NAMES
ce47906a57af   593aee2afb64   "/docker-entrypoint.…"   45 seconds ago   Up 42 seconds   0.0.0.0:82->80/tcp, :::82->80/tcp   mynginx_pv#进入容器
[root@localhost www]# docker exec -it ce47906a57af /bin/bash#进入挂载的数据目录
root@ce47906a57af:/# cd /usr/local/nginx/html#查看文件
root@ce47906a57af:/usr/local/nginx/html# ls
index.html  test.txt  test2.txt#删除一个文件
root@ce47906a57af:/usr/local/nginx/html# rm -rf test.txt 
root@ce47906a57af:/usr/local/nginx/html# ls
index.html  test2.txt#退出
root@ce47906a57af:/usr/local/nginx/html# exit#查看外面数据文件是否被删除:发现已经被删除了,操作成功
[root@localhost www]# ll
总用量 8
-rw-r--r-- 1 root root  5 10月 26 07:37 index.html
-rw-r--r-- 1 root root 10 10月 25 07:54 test2.txt

2.docker inspect 命令查看容器运行的细节

查看详细的映射关系

[root@localhost wwwroot]# docker inspect 3408e7d7a430

3.-v 匿名挂载数据卷

基本语法:

        docker run -v 容器内目录 容器 ID

-P 表示随机映射端口

docker run -d -P --name nginx01 -v /etc/nginx nginx
[root@localhost ~]# docker run -d -P --name nginx01 -v /etc/nginx nginx
e6aea0a9c58cf4f31ce0ebdd43b071845ba5b1ee772949a5cf02da5f40e2245c
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATU
S PORTS NAMES
e6aea0a9c58c nginx "/docker-entrypoint.…" 2 seconds ago Up 1 second
0.0.0.0:49155->80/tcp, :::49155->80/tcp nginx01

 查看挂载详情

[root@localhost ~]# docker volume ls
DRIVER VOLUME NAME
local 3f55b08bbafb39845c98efe1cf18dfa7fedea21c2fad24cb14759dced3872ba2
local 4de46af05120a375cb5270af59790f432c64758517352963f55e67cd3bfa56d8
local 5a8a57ea0fe775429577c451d23687f76634b5ee845c95e6e30a099b888ac2c1
local 5c97447224de838eab94272de4cb556cea8e79a4469b618c00cba1b826e0d37e
local 6b8cfbcf9727dc2c3f404cf9d830de7971fe7d46a56c5a0a42222182917fd6ae
local 6b9adae890deb91efcf5a52913f6ab61d8c22a83c2130fc21c9a3f44f32919
[root@localhost ~]# docker inspect e6aea0a9c58c | grep volume
"Type": "volume", "Source": "/var/lib/docker/volumes/3f55b08bbafb39845c98efe1cf18dfa7fed
ea21c2fad24cb14759dced3872ba2/_data

4.-v 具名挂载数据卷

基本语法:

        docker run -v 卷名称:容器内目录 容器 ID

docker run -d -P --name nginx01 -v juming:/etc/nginx nginx
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATU
S PORTS NAMES
57764c6d6901 nginx "/docker-entrypoint.…" 5 seconds ago Up 4 seconds
0.0.0.0:49156->80/tcp, :::49156->80/tcp nginx01
[root@localhost ~]# docker volume ls
DRIVER VOLUME NAME
local 3f55b08bbafb39845c98efe1cf18dfa7fedea21c2fad24cb14759dced3872ba2
local fdf7b0c7847f62ffe2326ef8a11b746efbb8b9fd212970cd31ccca5385fc9865
local juming查看挂载详情
[root@localhost ~]# docker volume inspect juming
[
{ "CreatedAt": "2021-07-28T05:09:13-04:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/juming/_data",
Name": "juming", "Options": null, "Scope": "local"
}
]

 5.Docker 运行容器传递环境变量

语法:
        docker run -e 变量名 = 变量值 容器 ID
         printenv: 打印出环境变量
#传递一个环境变量
[root@localhost www]# docker run --rm --name centos8_env -e TEST_DOMAIN=www.xxx.com  5d0da3dc9764 printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=1d078b1e2069
TEST_DOMAIN=www.xxx.com
HOME=/root#传递多个环境变量
[root@localhost www]# docker run --rm --name centos8_env -e TEST_DOMAIN=www.xxx.com -e TEST_ADDR=192.68.1.111  5d0da3dc9764 printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=1c3d6eaef5b7
TEST_DOMAIN=www.xxx.com
TEST_ADDR=192.68.1.111
HOME=/root

6.Docker 容器内安装软件

Docker 容器内安装软件和linux 中安装软是一样的,Centos 系列yum安装,Ubuntu 系列apt-get 安装

#进入容器
[root@localhost ~]# docker exec -it centos_v /bin/bash#查看
[root@095f45520b1e /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin
srv sys tmp usr var#使用ifocnfig容器ip:发现没有ifconfig包以及命令
[root@095f45520b1e /]# ifconfig
bash: ifconfig: command not found#安装net-tools
[root@095f45520b1e /]#yum install -y net-tools#查看容器的 ip
[root@095f45520b1e /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 7805 bytes 14138450 (13.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4715 bytes 259714 (253.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0

[上一节][Docker]二.Docker 镜像,仓库,容器介绍以及详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/172585.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IO流框架,缓冲流

一.缓冲流有什么优点 Java中的缓冲流&#xff08;Buffered Stream&#xff09;具有以下优势&#xff1a; 提高效率&#xff1a;缓冲流通过在内存中缓存一部分数据&#xff0c;减少了直接从内存到磁盘或从磁盘到内存的频繁IO操作&#xff0c;从而提高了读写效率。缓冲区大小调整…

Java8与JDK1.8与JDK8之间的关系是什么?

1.Java8等价于JDK8 2.JDK8或者JDK1.8是由于自从JDK1.5/JDK5命名方式改变后遗留的历史问题。所以JDK8或者JDK1.8是等价的。 2004年9月30日&#xff0c;J2SE1.5发布。为了表示该版本的重要性&#xff0c;J2SE 1.5更名为Java SE 5.0&#xff0c;从此开始&#xff0c;如下图像jav…

C++之#pragma once实例总结(二百四十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

OpenCV官方教程中文版 —— 直方图的计算,绘制与分析

OpenCV官方教程中文版 —— 直方图的计算&#xff0c;绘制与分析 前言一、原理1.统计直方图2. 绘制直方图3. 使用掩模 前言 • 使用 OpenCV 或 Numpy 函数计算直方图 • 使用 Opencv 或者 Matplotlib 函数绘制直方图 • 将要学习的函数有&#xff1a;cv2.calcHist()&#xf…

二叉树:有了如此高效的散列表,为什么还需要二叉树?

文章来源于极客时间前google工程师−王争专栏。 上一节我们学习了树、二叉树以及二叉树的遍历&#xff0c;今天我们再来学习一种特殊的的二叉树&#xff0c;二叉查找树。二叉查找树最大的特点就是&#xff0c;支持动态数据集合的快速插入、删除、查找操作。 我们之前说过&…

StripedFly恶意软件框架感染了100万台Windows和Linux主机

导语 近日&#xff0c;一款名为StripedFly的恶意软件框架在网络安全研究人员的监视之外悄然感染了超过100万台Windows和Linux系统。这款跨平台的恶意软件平台在过去的五年中一直未被察觉。在去年&#xff0c;卡巴斯基实验室发现了这个恶意框架的真实本质&#xff0c;并发现其活…

设计高信度和效度的问卷:关键要点与技巧

设计调查问卷是任何研究过程中至关重要的一部分&#xff0c;无论是出于学术目的还是商业目的。调查是用于收集数据的常用工具&#xff0c;它们可以为消费者行为、意见、客户满意度和其他重要因素提供有价值的见解。然而&#xff0c;调查的可靠性和有效性对于确保收集的数据准确…

WireShark使用入门

背景 Wireshark&#xff0c;又被称为网络封包分析软件&#xff0c;是一种开源且功能十分强大的工具。该工具的主要功能是截取各种网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。它使用WinPCAP作为接口&#xff0c;直接与网卡进行数据报文交换。 Wireshark支持W…

SpringCloudAlibaba实战-nacos集群部署

写在前面&#xff1a;在学习阶段&#xff0c;我们想快速学习SpringCloudAlibaba功能&#xff0c;但总是花费大量时间跟着视频或博客做组件配置。由于版本的更迭&#xff0c;我们学习时的组件版本很可能和作者的不一致&#xff0c;又或者是各自环境不一&#xff0c;只能一坑又一…

【Python爬虫三天从0到1】Day1:爬虫核心

目录 1.HTTP协议与WEB开发 &#xff08;1&#xff09;简介 &#xff08;2&#xff09;请求协议和响应协议 2. requests&反爬破解 &#xff08;1&#xff09;UA反爬 &#xff08;2&#xff09;referer反爬 &#xff08;3&#xff09;cookie反爬 3.请求参数 &#x…

地面文物古迹保护方案,用科技为文物古迹撑起“智慧伞”

一、行业背景 当前&#xff0c;文物保护单位的安防系统现状存在各种管理弊端&#xff0c;安防系统没有统一的平台&#xff0c;系统功能不足、建设标准不同&#xff0c;产品和技术多样&#xff0c;导致各系统独立&#xff0c;无法联动&#xff0c;形成了“信息孤岛”。地面文物…

RabbitMQ-死信交换机和死信队列

1. 简介 1.1 DLX简介 DLX: Dead-Letter-Exchange 死信交换器&#xff0c;死信邮箱 当消息成为Dead message后&#xff0c;可以被重新发送到另一个交换机&#xff0c;这个交换机就是DLX。 如下图所示&#xff1a; 其实死信队列就是一个普通的交换机&#xff0c;有些队列的消息…

lesson2(补充)关于const成员函数

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言&#xff1a; 将const 修饰的 “ 成员函数 ” 称之为 const 成员函数 &#xff0c; const 修饰类成员函数&#xff0c;实际修饰该成员函数 隐含的 this 指针 &#xff0c;表明在该成员函数中不能对类的任何成员进行修改…

(a /b)*c的值

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

基于华为云 IoT 物联网平台实现家居环境实时监控

01 智能家居环境监测 智能家居环境监测采用 Ruff 开发板作为主控&#xff0c;串口线连接温湿度传感器 DHT11 和空气质量传感器 SDS011&#xff0c;每5分钟采集一次数据&#xff0c;通过 MQTT 协议发送到华为云 IoT 物联网平台&#xff0c;并基于数据分析服务实时计算出整个家庭…

如何批量给视频添加logo水印?

如果你想为自己的视频添加图片水印&#xff0c;以增强视频的辨识度和个性化&#xff0c;那么你可以使用固乔剪辑助手软件来实现这一需求。下面就是详细的操作步骤&#xff1a; 1.下载并打开固乔剪辑助手软件&#xff0c;这是一款简单易用的视频剪辑软件&#xff0c;功能丰富&am…

el-table多选表格 实现默认选中 删除选中列表取消勾选等联动效果

实现效果如下&#xff1a; 代码如下&#xff1a; <template><div><el-tableref"multipleTable":data"tableData"tooltip-effect"dark"style"width: 100%"selection-change"handleSelectionChange"><…

哈希算法:哈希算法在分布式系统中有哪些应用?

文章来源于极客时间前google工程师−王争专栏。 哈希算法除了上篇的四个应用&#xff08;安全加密、数据校验、唯一标识、散列函数&#xff09;&#xff0c;还有三种应用&#xff1a;负载均衡、数据分片、分布式存储。 这三个应用都跟分布式系统有关。哈希算法是如何解决这些分…

【斗罗二】霍雨浩迷惑审查,戴华斌故意挑衅,惨败者屈服下跪

【侵权联系删除】【文/郑尔巴金】 深度爆料&#xff0c;自《绝世唐门》宣布问世以来&#xff0c;其在国漫圈引发的关注和热议便如火如荼。作为《斗罗大陆》的续作&#xff0c;这部作品无疑继承了前作的荣光&#xff0c;甚至被无数粉丝期待着能再创辉煌。在各大社交媒体和国漫论…