做装修的人到什么网站找工作怎样是做网站

news/2025/9/28 17:05:21/文章来源:
做装修的人到什么网站找工作,怎样是做网站,wordpress如何分栏,做网站卖假名牌违法吗docker学习第四天 docker学习第四天1. 回顾1.1. 容器的网络类型1.2. 容器的本质1.3. 数据的持久化1.4. 看有哪些卷1.5. 看卷的详细信息 2. 如何做多台宿主机里的多个容器之间的数据共享2.1. 概念2.2. 搭NFS服务器实现多个容器之间的数据共享的详细步骤2.3. 如果是多台机器… docker学习第四天 docker学习第四天1. 回顾1.1. 容器的网络类型1.2. 容器的本质1.3. 数据的持久化1.4. 看有哪些卷1.5. 看卷的详细信息 2. 如何做多台宿主机里的多个容器之间的数据共享2.1. 概念2.2. 搭NFS服务器实现多个容器之间的数据共享的详细步骤2.3. 如果是多台机器背后需要使用nfs、NAS、SAN、云存储等网络存储解决2.3.1. 数据一致性的解决方案↓2.3.2. nfs2.3.3 云存储2.3.4. nas2.3.5. san 3. docker日常操作4. docker镜像的制作4.1. 镜像里到底有什么4.2. Dockerfile4.3. 案例14.4. 案例24.5. 练习14.6. 练习2制作镜像的练习 5. 小知识点5.1. ip add没有看到ip地址 docker学习第四天 1. 回顾 1.1. 容器的网络类型 host bridge none container overlay 通过docker network ls 查看 Bridge 和 Overlay 在作用域上的主要区别在于它们的应用范围和使用环境。 Bridge 网络Bridge 网络适用于单个主机上的容器之间的通信它是 Docker 默认的网络模式。在这种模式下运行在同一主机上的两个 Docker 容器可以互相通信。 Overlay 网络Overlay 网络则用于在多个 Docker 主机上的容器之间进行通信特别是在 Docker Swarm 集群环境中。不同主机上的 Docker 容器可以通过 Overlay 网络进行通信就好像它们在同一主机上一样。 总结: 如果你只是在单台机器上运行 Docker那么 Bridge 网络就足够了。但是如果你在进行容器编排或者在多台机器上运行 Docker Swarm那么你可能需要使用 Overlay 网络。 1.2. 容器的本质 就是一个进程 [rootdocker-1 ~] ps -xf|grep containerd-shim5121 pts/2 S 0:00 | \_ grep --colorauto containerd-shim3690 ? Sl 0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id f930b469045f3e7c3c0fb8ec99aa6694ad24aa3e94d5f27bcd0358a9d3b04571 -address /run/containerd/containerd.sock4021 ? Sl 0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 0560f3b35bffc921cd86b01e6878cb936ba2dfb6e373300a11d839d71e991963 -address /run/containerd/containerd.sock4197 ? Sl 0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 952638341afc76bae529a94532fc0cc41c6cfcd368828521c9c806f90ac07dab -address /run/containerd/containerd.sock4669 ? Sl 0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id b6d347477abe4b43f14e4428dc4613b6a8b39e2afb5bf0f264e648d669579fbd -address /run/containerd/containerd.sock4782 ? Sl 0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 33efd6cf8022ab6dba350790342b94ae0a01e434311f47f5999284d866ce8ec2 -address /run/containerd/containerd.sock1.3. 数据的持久化 用到的技术就是卷 volume ----mount 挂载 实现了—数据共享和数据备份 1.4. 看有哪些卷 [rootdocker-1 ~] docker volume ls DRIVER VOLUME NAME local 87e38c019186eff45190b0767c95ca6d8af255f88292d0254af03c696139ca34 local 293e693c1ba0264c31632ba2af120660e4abc0fb09246dbca3bab7973dca7090 local 953abcd2432ee62358527d5865c9ad8fe73b8fb3def82a39c8cee84a850ec3d1 local a2b0573256268ba172932b7c861ac27cf0422a539ccc0bd8e705290321f8665a local ac5af551b963ac9242efde3db8cb2159b22875fbfb9a50a7bd71421974090619 local d245e1f710c4ae8153fce2a630f5ef94cce3ac9ffa0e9a7d35a2072d1e50110e local myvol2 local sanchaung local sanchuang local xie1.5. 看卷的详细信息 [rootdocker-1 ~] docker volume inspect sanchuang [{CreatedAt: 2024-01-31T17:46:3808:00,Driver: local,Labels: null,Mountpoint: /var/lib/docker/volumes/sanchuang/_data,Name: sanchuang,Options: null,Scope: local} ]2. 如何做多台宿主机里的多个容器之间的数据共享 2.1. 概念 这是一个在数据中心中设置的 Docker Swarm 结构框架图其中包括以下部分 三个节点node-1node-2node-3每个节点都在运行一个服务副本service-replica-1service-replica-2service-replica-3这些服务副本都在 Docker 容器内部运行。所有三个节点都连接到共享文件存储允许不同节点上的容器访问共享数据。 这种设置的目标在于确保一个服务在多个服务器之间的高可用性和负载分布。 搭建步骤: 1.先搭建好nfs服务器设置好共享目录以及首页文件index.html 2.在docker宿主机上创建支持nfs文件系统的卷连接到nfs服务器 3.在宿主机上创建nginx容器使用支持nfs文件系统的卷 4.访问nginx的web网站能否能访问到index.html首页文件不同的宿主机上启动的容器看到的内容应该是一模一样的因为访问到相同的nfs服务器共享的目录 2.2. 搭NFS服务器实现多个容器之间的数据共享的详细步骤 NFS服务器是一台可以共享文件的机器 network file system 网络文件系统在网络上共享文件的 机器ip作用docker1192.168.153.166测试节点docker2192.168.153.160测试节点NFS服务器192.168.153.167数据共享的 搭建好nfs服务器 [rootnfs ~] yum install nfs-utils -y 记得在nfs服务器上重启nfs服务 service nfs restart建议docker集群内的所有的节点都安装nfs-utils软件因为节点服务器里创建卷需要支持nfs网络文件系统 防火墙和selinx必须关闭 在nfs服务器上新建共享目录和index.html网页 [rootnfs ~] mkdir /sc/web -p [rootnfs ~] cd /sc/web/ [rootnfs web] echo welcome to sanchuang index.html [rootnfs web] ls index.html [rootnfs web] cat index.html welcome to sanchuang设置共享目录 [rootnfs web] vim /etc/exports [rootnfs web] cat /etc/exports /sc/web 192.168.153.0/24(rw,no_root_squash,sync) [rootnfs web] chmod 777 /sc/web 在linux系统里也给其他用户写的权限 [rootnfs web]# 在NFS中除了no_root_squash还有许多其他的选项可以用于配置你的NFS共享。以下是一些常见的选项: rw允许客户端对NFS共享进行读写操作。ro只允许客户端对NFS共享进行读操作。sync在回复客户端请求之前将更改写入磁盘。async在回复客户端请求之前不需要将更改写入磁盘。insecure允许客户端从大于1024的非特权端口连接。secure要求客户端从小于或等于1024的特权端口连接。wdelay将多个写请求组合在一起以提高性能。no_wdelay如果使用了sync则禁用wdelay。root_squash将root用户和用户组映射为匿名用户或用户组。all_squash将所有用户和用户组映射为匿名用户或用户组。anonuid和anongid设置匿名用户或用户组的UID和GID。 共享出去 [rootnfs web] exportfs -rv exporting 192.168.153.0/24:/sc/web [rootnfs web]# 或者通过 service nfs restart 也可以设置nfs开机启动 [rootnfs web] systemctl enable nfs Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service. [rootnfs web]# 在docker集群里的任意一个节点服务器上测试能否挂载nfs服务器共享的目录 在两台节点机器上都测试一下 [rootdocker-1 ~] mkdir /test [rootdocker-1 ~] cd /test/ [rootdocker-1 test] mount 192.168.153.167:/sc/web /test [rootdocker-1 test] df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 192.168.153.167:/sc/web nfs4 50G 1.9G 49G 4% /test [rootdocker-1 test]# 这些命令在完成一些文件系统的操作 [rootdocker-1 ~] mkdir /test这条命令在根目录下创建了一个名为 test 的目录。 [rootdocker-1 ~] cd /test/这条命令改变了当前工作目录到 test 目录。 [rootdocker-1 test] mount 192.168.153.167:/sc/web /test这条命令将了一个远程网络文件系统来自 IP 地址为 192.168.153.167 的服务器上的 /sc/web 目录挂载到本地的 /test 目录。 [rootdocker-1 test] df -Th这条命令显示了当前系统上所有文件系统的磁盘空间使用情况。-T 选项表示同时显示文件系统的类型-h 的意思是以易读的方式如 K, M, G显示大小。 你看到的输出显示远程的 /sc/web 被挂载到了本地的 /test它的文件系统类型是 nfs4 网络文件系统版本 4总容量为 50G已经使用了 1.9G还剩 49G 可用用量百分比为 4%。 综上这些命令在操作一些本地和远程的文件系统并查看了文件系统的磁盘使用信息。 客户机测试 [rootdocker-1 test] echo machi index.html [rootdocker-1 test] cat index.html welcome to sanchuang 123456 machi [rootdocker-1 test]# 在2台docker 宿主机上创建支持nfs功能的卷 nfs-web-1 –opt oaddr192.168.153.167 指定nfs服务器的地址 –opt device:/sc/web 指定nfs服务器上共享的文件夹的路径 [rootdocker-1 test] docker volume create --driver local --opt typenfs --opt oaddr192.168.153.167,nolock,soft,rw,sync --opt device:/sc/web nfs-web-1 nfs-web-1 [rootdocker-1 test] docker volume ls DRIVER VOLUME NAME local nfs-web-1 [rootdocker-1 test]# [rootdocker-1 test] docker volume inspect nfs-web-1 [{CreatedAt: 2024-02-01T11:37:3608:00,Driver: local,Labels: null,Mountpoint: /var/lib/docker/volumes/nfs-web-1/_data,Name: nfs-web-1,Options: {device: :/sc/web,o: addr192.168.153.167,nolock,soft,rw,sync,type: nfs},Scope: local} ] [rootdocker-1 test]# 记得两台机器都创建这是一个 Docker 命令用于创建一个名为 nfs-web-1 的 NFS 类型的卷。下面是这个命令各部分的详细解释 docker volume create这是 Docker 命令用于创建一个新的卷。--driver local这是指定使用的卷驱动。在本例中我们指定使用 local 驱动。--opt typenfs这是选项用于设置卷的类型其中 typenfs 表示这是一个 NFS 类型的卷。--opt oaddr192.168.153.167,nolock,soft,rw,sync这是设置 NFS 卷的选项。其中 addr192.168.153.167 则表示 NFS 服务器的地址。nolock 是 NFS 的一个选项表示禁用锁定。soft 表示在处理一个请求时如果 NFS 服务器没有响应则客户端将在重试一定次数后放弃并显示一个错误。rw 表示卷有读写权限。sync 表示所有的 I/O 操作必须在物理设备完成后才返回这可以确保数据的一致性。--opt device:/sc/web这是设置 NFS 卷的设备路径。其中 /sc/web 是 NFS 服务器上的目录。nfs-web-1这是你要创建的卷的名称。 所以这个命令的意思就是创建一个名为 “nfs-web-1” 的 NFS 类型的 Docker 卷这个卷将挂载来自地址为 “192.168.153.167” 的 NFS 服务器上的 “/sc/web” 目录卷有读写权限并且所有的 I/O 操作都是同步的。 在2台docker宿主机上都可以启动容器使用刚刚创建的nfs-web-1卷 [rootdocker-1 test] docker run -d --name lizx-web-1 -p 5588:80 -v nfs-web-1:/usr/share/nginx/html nginx 3fe06b0f77662e4c0bf707ca7012dbf4de00d4642fc3109e869d671e17697cf2 [rootdocker-1 test]# 访问创建的nginx web服务器打开浏览器去访问 2.3. 如果是多台机器背后需要使用nfs、NAS、SAN、云存储等网络存储解决 2.3.1. 数据一致性的解决方案↓ 2.3.2. nfs 优点搭建服务器非常方便随便一台linux系统的机器都可以做对硬件没有要求配置起来方便 缺点性能一般依赖于传统的tcp/ip网络如果网络宽带不大影响数据的传输,有丢失数据的风险和卡顿的问题 2.3.3 云存储 优点: 直接购买不需要自己搭建–》99.9999%不丢失数据保障不丢失数据可以保障存取的速度 ops各地的服务器都可以使用在公网上可以使用 ​ 缺点: 数据在阿里云里了数据的安全性 云存储是基于云计算技术提供了互联网上的数据存储服务。用户数据存放在远程数据中心可以通过任何网络连接的设备进行访问和管理。云存储具有易于扩展、设备无关性以及按需付费等优点非常适合需要远程访问数据以及希望减少本地存储硬件投入的用户或企业。 2.3.4. nas NASNetwork Attached Storage 网络附加存储网络存储基于标准网络协议实现数据传输为网络中的Windows / Linux / Mac OS 等各种不同操作系统的计算机提供文件共享和数据备份。 1.需要专业的存储设备 --》NAS—NFS 2.使用传统的tcp/ip网络 3.其他的电脑/手机/pad等设备都可以使用 支持网络传输协议NFS,ftp,ssh,http等 简单的来说 就是小白用户使用进去之后有web界面可以点点点像百度网盘一样 NAS网络附加存储的优点包括: 简易设置NAS设备易于安装和设置无需复杂的操作步骤即可实现快速部署并建立起一个高效的存储环境。高度可靠性NAS采用冗余存储技术如RAID冗余磁盘阵列可以在硬盘损坏时保持数据的完整性提供更高的数据可靠性。随时随地访问无论你在哪里只要有网络连接你就可以访问NAS中的文件。存储空间大NAS提供了大量的存储空间可以方便地备份和管理相册、视频、设计素材等。套件丰富NAS支持扩展更多可能性例如你甚至可以搭建一个自己专属的「爱奇艺」「微信读书」「QQ音乐」。横向扩展功能为NAS增加存储容量就和增加硬盘一样简单。您不必升级或更换现有的服务器即可在不中断网络的情况下启用新的存储。高性能由于NAS专门用于提供文件服务所以其他联网设备无需再提供文件服务。运营维护成本低NAS是一种采用直接与网络介质相连来实现数据存储的设备其运营维护成本较传统存储服务器是非常低的。 成本NAS设备的前期安装和设备成本可能比较高。 可扩展性NAS的可扩展性可能受到设备大小的限制。 性能NAS的存储性能有局限性特别是在多台客户端访问NAS时性能可能会大大下降。 数据安全存储数据通过网络传输因此可能容易产生数据泄漏等安全问题。 网络影响存储数据通过网络传输因此可能易受网络上其它流量的影响。 复杂的数据备份操作NAS的数据备份操作可能比较复杂。 服务器瓶颈服务器本身可能容易成为系统瓶颈。 服务器故障如果服务器发生故障数据可能无法访问。 设备管理对于存在多个服务器的系统来说设备可能分散不便于管理。 这些缺点需要在选择NAS时考虑。希望这个信息对你有所帮助 2.3.5. san 存储区域网络 (Storage Area Network, SAN) 是企业最常用的存储网络架构要求高吞吐量和低延迟的业务关键型业务往往采用这类架构运行。如今采用全闪存存储的 SAN 部署数量增速迅猛。与旋转磁盘相比全闪存存储可提供更出色的性能、稳定一致的低延迟以及更低的总成本。SAN 将数据存储在集中式共享存储中使企业能够运用一致的方法和工具来实施安全防护、数据保护和灾难恢复。 **1.专业的存储服务器 ** **2.专业的光纤交换机 ** 3.HBA卡插到业务服务器上 SAN: 存储区域网络是一种高性能的存储网络主要用于企业级应用。它使用专业的存储服务器、光纤交换机和HBA卡将数据存储在集中式的共享存储中。简单来说SAN就像一个专门为服务器设计的高速网络可以让服务器像访问本地硬盘一样访问网络上的存储设备。 优点 存取速度快 缺点 成本极高必须在局域网里距离比较近的数据集中存储和共享 3. docker日常操作 1.安装 2.日常的命令 ​ docker run/exec/rm/rmi/images/start/stop/kill/logs/inspect/stats/top/save/load/pull 3.网络类型和卷 4.dockerfill—镜像的制作 4. docker镜像的制作 4.1. 镜像里到底有什么 操作系统业务核心代码系统工具库运行时的环境 A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings. Docker容器镜像是一个轻量级的、独立的、可执行的软件包它包含了运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。 4.2. Dockerfile Dockerfile是制作镜像的配置文件 ----》祖传秘方 4.3. 案例1 使用busybox作为基础镜像自己编写一个脚本作为业务核心代码完成一个自己的镜像 1.编写一个shell脚本 [rootdocker-1 ~] mkdir /Dockerfile/ [rootdocker-1 ~] cd /Dockerfile/[rootdocker-1 Dockerfile] vim while.sh #!/bin/bashi1 while true doecho hello,world,sanchuang$ilet isleep 1 done [rootdocker-1 Dockerfile]# 2.编辑Dockerfile [rootdocker-1 Dockerfile] vim Dockerfile #指定基础镜像 FROM busybox #指定进入容器的时候进入哪个文件夹 WORKDIR / #复制宿主机当前目录下的所有文件和文件夹到容器里的/目录下 docker cp COPY . / #当我们制作镜像的时候需要执行的命令,这些文件会留在做好的镜像里 RUN touch sc.txt mkdir sanchuang sleep 10 #指定容器启动的时候需要执行的命令 #本质上等于 /bin/bash while.sh 前边是命令 后边是参数 ENTRYPOINT [/bin/sh,/while.sh] [rootdocker-1 Dockerfile]# 3.开始构建制作镜像 [rootdocker-1 Dockerfile] docker build -t scbusybox:1.0 . [] Building 10.4s (8/8) FINISHED docker:default [internal] load build definition from Dockerfile 0.0s transferring dockerfile: 532B 0.0s [internal] load metadata for docker.io/library/busybox:latest 0.0s [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [internal] load build context 0.0s transferring context: 655B 0.0s [1/4] FROM docker.io/library/busybox:latest 0.0s [2/4] COPY . / 0.0s [3/4] RUN touch sc.txt mkdir sanchuang sleep 10 10.2s exporting to image 0.0s exporting layers 0.0s writing image sha256:ca1737d185a804ba705a8ea1cd10d37b2ec36b6f9cd8a52257c90b507a7d339e 0.0s naming to docker.io/library/scbusybox:1.0 0.0s [rootdocker-1 Dockerfile]# 4.查看镜像有没有成功 [rootdocker-1 Dockerfile] docker images|grep scbusybox scbusybox 1.0 ca1737d185a8 About a minute ago 1.24MB [rootdocker-1 Dockerfile]# 5.使用制作好的镜像 [rootdocker-1 Dockerfile] docker run -it --rm --name scbusybox scbusybox:1.0 hello,world,sanchuang1 hello,world,sanchuang2 hello,world,sanchuang34.4. 案例2 使用go语言的编译好的代码制作镜像 [rootdocker-1 Dockerfile] mkdir go [rootdocker-1 Dockerfile] cd go [rootdocker-1 go]# 1.获得go语言核心代码 [rootdocker-1 go] vim server.go package mainimport (net/httpgithub.com/gin-gonic/gin )func main() {r : gin.Default()r.GET(/, func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{message: hello, sanchuang 2024 nice,})})r.Run() }[rootdocker-1 go]# 加个注释 package main // 声明这个文件属于 main 包import (net/http // 导入 net/http 包用于处理网络请求和响应github.com/gin-gonic/gin // 导入 gin 包用于创建 web 框架和路由 )func main() { // 定义 main 函数程序的入口点r : gin.Default() // 创建一个默认的 gin 引擎它包含了一些中间件和日志功能r.GET(/sc, func(c *gin.Context) { // 为 /sc 路径注册一个 GET 方法的处理函数c 是请求的上下文对象c.JSON(http.StatusOK, gin.H{ // 以 JSON 格式返回响应状态码为 200内容为一个键值对message: hello, sanchuang, // 键为 message值为 hello, sanchuang})})r.Run() // 启动 web 服务器监听默认的端口 8080 }写好核心代码之后 要安装go环境 [rootdocker-1 go] yum install epel-release -y [rootdocker-1 go] yum install golang -y开始编译server.go成一个二进制文件(测试) [rootdocker-1 go]# go mod init web go: creating new go.mod: module web go: to add module requirements and sums:go mod tidy [rootdocker-1 go]# go env -w GOPROXYhttps://goproxy.cn,direct [rootdocker-1 go]# [rootdocker-1 go]# go mod tidy [rootdocker-1 go]# go run server.go [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.[GIN-debug] [WARNING] Running in debug mode. Switch to release mode in production.- using env: export GIN_MODErelease- using code: gin.SetMode(gin.ReleaseMode)[GIN-debug] GET / -- main.main.func1 (3 handlers) [GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value. Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details. [GIN-debug] Environment variable PORT is undefined. Using port :8080 by default [GIN-debug] Listening and serving HTTP on :8080 [GIN] 2024/02/01 - 19:05:04 | 200 | 137.998µs | 192.168.153.1 | GET /把server.go编译成二进制文件 huweb是编译好的二进制程序 [rootdocker-1 go]# go build -o hnweb . [rootdocker-1 go]# ls apiserver.tar.gz go.mod go.sum hnweb server.go [rootdocker-1 go]# [rootdocker-1 go]# ./hnweb [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.[GIN-debug] [WARNING] Running in debug mode. Switch to release mode in production.- using env: export GIN_MODErelease- using code: gin.SetMode(gin.ReleaseMode)[GIN-debug] GET / -- main.main.func1 (3 handlers) [GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value. Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details. [GIN-debug] Environment variable PORT is undefined. Using port :8080 by default [GIN-debug] Listening and serving HTTP on :8080 [GIN] 2024/02/01 - 19:12:55 | 200 | 97.402µs | 192.168.153.1 | GET / 2.编辑Dockerfile [rootdocker-1 go] cat Dockerfile FROM centos:7 WORKDIR /go COPY . /go RUN ls /go pwd ENTYPOINT [/go/hnweb] [rootdocker-1 go]# 3.制作镜像 [rootdocker-1 go]# docker build -t hnweb:1.0 . [] Building 0.5s (9/9) FINISHED docker:default [internal] load build definition from Dockerfile 0.0s transferring dockerfile: 118B 0.0s [internal] load metadata for docker.io/library/centos:7 0.0s [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [1/4] FROM docker.io/library/centos:7 0.0s [internal] load build context 0.1s transferring context: 16.86MB 0.0s [2/4] WORKDIR /go 0.0s [3/4] COPY . /go 0.1s [4/4] RUN ls /go pwd 0.3s exporting to image 0.0s exporting layers 0.0s writing image sha256:5a97befba8149992b8fe282d4c1ddc3a4c0d3a1e39236df947ca3dcb87bb3e3a 0.0s naming to docker.io/library/hnweb:1.0 0.0s [rootdocker-1 go]# [rootdocker-1 go] docker images|grep hn hnweb 1.0 5a97befba814 49 seconds ago 221MB [rootdocker-1 go]# 4.使用制作好的镜像 [rootdocker-1 go]# docker run -d --name hnweb-1 -p 7788:8080 hnweb:1.0 1814d1caa3cf257f9a37311ee97539e0ad1a0af4117e128620535172a6fbf0bc [rootdocker-1 go]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1814d1caa3cf hnweb:1.0 /go/hnweb 3 seconds ago Up 3 seconds 0.0.0.0:7788-8080/tcp, :::7788-8080/tcp hnweb-1 [rootdocker-1 go]# 4.5. 练习1 1、以nginx为基础镜像编写dockerfile。并构建为一个名为nginxtest的镜像要求镜像内安装一个tcpdump工具下载或从本地拉取一个tar包并解压。构建镜像后运行容器并暴露端口访问。要求熟悉dockerfile常用指令容器运行常见参数以及如何进入容器内部 [rootdocker-1 Dockerfile] mkdir nginx [rootdocker-1 Dockerfile] cd nginx/ [rootdocker-1 nginx]# [rootdocker-1 nginx] vim Dockerfile # 使用官方的 Nginx 镜像作为基础镜像 FROM nginx# 更新系统和已安装的包然后安装 tcpdump 工具 RUN apt-get update apt-get install -y tcpdump# 使用 curl 工具下载 nginx 源码包并解压 RUN curl -O https://nginx.org/download/nginx-1.25.1.tar.gz tar xf nginx-1.25.1.tar.gz# 对外开放 80 端口 EXPOSE 80# 运行 Nginx 服务 CMD [nginx,-g,daemon off;][rootdocker-1 nginx]# docker build -t nginxtest . [] Building 161.1s (7/7) FINISHED docker:default [internal] load build definition from Dockerfile 0.0s transferring dockerfile: 231B 0.0s [internal] load metadata for docker.io/library/nginx:latest 0.0s [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [1/3] FROM docker.io/library/nginx:latest 0.0s [2/3] RUN apt-get update apt-get install -y tcpdump 158.4s [3/3] RUN curl -O https://nginx.org/download/nginx-1.25.1.tar.gz tar xf nginx-1.25.1.tar.gz 2.6s exporting to image 0.0s exporting layers 0.0s writing image sha256:83ccc55ecdabbcb9bd37c9dfe4856adec84f1fc80c24e3472d2f69ba923c45f6 0.0s naming to docker.io/library/nginxtest 0.0s [rootdocker-1 nginx]# docker images|grep nginxtest nginxtest latest 83ccc55ecdab 37 seconds ago 172MB [rootdocker-1 nginx]# [rootdocker-1 nginx]# docker run -it --name mynginx -p 80:80 nginxtest /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2024/02/01 12:14:34 [notice] 1#1: using the epoll event method 2024/02/01 12:14:34 [notice] 1#1: nginx/1.21.5 2024/02/01 12:14:34 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 2024/02/01 12:14:34 [notice] 1#1: OS: Linux 3.10.0-1160.el7.x86_64 2024/02/01 12:14:34 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2024/02/01 12:14:34 [notice] 1#1: start worker processes 2024/02/01 12:14:34 [notice] 1#1: start worker process 32 2024/02/01 12:14:34 [notice] 1#1: start worker process 33 2024/02/01 12:14:34 [notice] 1#1: start worker process 34 2024/02/01 12:14:34 [notice] 1#1: start worker process 35 192.168.153.1 - - [01/Feb/2024:12:15:03 0000] GET / HTTP/1.1 200 615 - Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0 - 2024/02/01 12:15:04 [error] 32#32: *1 open() /usr/share/nginx/html/favicon.ico failed (2: No such file or directory), client: 192.168.153.1, server: localhost, request: GET /favicon.ico HTTP/1.1, host: 192.168.153.166, referrer: http://192.168.153.166/ 192.168.153.1 - - [01/Feb/2024:12:15:04 0000] GET /favicon.ico HTTP/1.1 404 555 http://192.168.153.166/ Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0 -4.6. 练习2制作镜像的练习 ​ 1.以centos7作为基础镜像 ​ 2.在里面安装好ipvimping命令 ​ 3.安装好nginx ​ 4.启动容器的时候就启动nginx [rootdocker-1 Dockerfile]# mkdir centos [rootdocker-1 Dockerfile]# cd centos/ [rootdocker-1 centos]# [rootdocker-1 centos]# vim Dockerfile FROM centos:7 RUN yum install -y iproute iputils vim RUN yum install -y epel-release RUN yum install -y nginx EXPOSE 80 CMD [nginx,-g,daemon off;] [rootdocker-1 centos]# [rootdocker-1 centos]# docker build -t my_nginx . [] Building 145.8s (8/8) FINISHED docker:default [internal] load build definition from Dockerfile 0.0s transferring dockerfile: 192B 0.0s [internal] load metadata for docker.io/library/centos:7 0.0s [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [1/4] FROM docker.io/library/centos:7 0.0s CACHED [2/4] RUN yum install -y iproute iputils vim 0.0s [3/4] RUN yum install -y epel-release 1.0s [4/4] RUN yum install -y nginx 144.3s exporting to image 0.5s exporting layers 0.5s writing image sha256:79fef96935d1a5431f92fc1c80ba5148499f2efc6720d778f2e746aa58a91221 0.0s naming to docker.io/library/my_nginx 0.0s [rootdocker-1 centos]# docker images|grep my_nginx my_nginx latest 79fef96935d1 21 seconds ago 991MB [rootdocker-1 centos]# [rootdocker-1 centos]# docker run -d --name my_nginx-1 -p 88:80 my_nginx 2dce1f298ee435fe7d999ed8cf2db4bc8071ccf9464e2a5b2ad47d1d48085125 [rootdocker-1 centos]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2dce1f298ee4 my_nginx nginx -g daemon of… 3 seconds ago Up 2 seconds 0.0.0.0:88-80/tcp, :::88-80/tcp my_nginx-1 [rootdocker-1 centos]# 解决办法 [rootdocker-1 centos]# echo Halou Gh index.html [rootdocker-1 centos]# ls Dockerfile index.html [rootdocker-1 centos]# docker cp index.html my_nginx-1:/usr/share/nginx/html Successfully copied 2.05kB to my_nginx-1:/usr/share/nginx/html [rootdocker-1 centos]# 然后刷新页面 5. 小知识点 5.1. ip add没有看到ip地址 nmcli n off 关闭网卡 nmcli n on 启动网卡 再 ip add 查看一下

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

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

相关文章

P11854 [CSP-J2022 山东] 宴会

P11854 [CSP-J2022 山东] 宴会 题解题目传送门 当时这个题是我考试题,考试的时候感性理解出来的三分做法。 首先咱感性理解一下,当\(x_0\)位于左边无穷远处时,答案是个很大的数。 然后随着\(x_0\)从左向右移动,答案…

2025 年试验机厂家权威推荐榜:TOP5 优质厂家综合实力解析,助力科研与工业客户精准选型电子万能材料/橡胶拉力/塑料拉力/扬州拉力试验机厂家推荐

在材料检测领域,试验机是保障科研数据精准性与工业质量管控效率的核心设备,其品质直接关系到实验进度推进与生产线稳定运行。当前市场上试验机供应商资质差异显著,部分厂商存在产品适配性差、技术支撑不足、售后响应…

# PostgreSQL高可用架构深度解析:从单机到分布式的演进之路

# PostgreSQL高可用架构深度解析:从单机到分布式的演进之路Posted on 2025-09-28 17:00 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:# PostgreSQL高可用架构深度解析:从单机到分布式的演进之路PostgreSQ…

洛阳做网站公司有哪些搭建一个网站多少钱

文章目录 前言一、问题重述二、主函数总结 前言 第十五蓝桥杯国赛落幕已有十天,是时候总结一下,这个专栏也将结束。虽然并没有取得预期的结果,但故事结尾并不总是美满的。下面是赛前练习的第十二届国赛的代码。 一、问题重述 二、主函数 完整…

跟Manus聊聊Bean生命周期设计哲学[From Manus]

跟Manus聊聊Bean生命周期设计哲学[From Manus]Posted on 2025-09-28 17:00 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:跟Manus聊聊Bean生命周期设计哲学[From Manus]Mind RoadmapBean生命周期设计哲学 “零…

Software Crisis and Complexity

Software Crisis and ComplexityPosted on 2025-09-28 17:00 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:Software Crisis and Complexity软件危机与复杂性:工程思维的诞生背景 核心要点 第一次软件危机(1…

Foojay 播客 #71:与 James Gosling 一起庆祝 Java 诞生 30 周年

Foojay 播客 #71:与 James Gosling 一起庆祝 Java 诞生 30 周年Posted on 2025-09-28 17:00 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:Foojay 播客 #71:与 James Gosling 一起庆祝 Java 诞生 30 周年htt…

# Stack Overflow 2011-2019开发者调查报告:技术生态演进史

# Stack Overflow 2011-2019开发者调查报告:技术生态演进史Posted on 2025-09-28 17:00 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:# Stack Overflow 2011-2019开发者调查报告:技术生态演进史Stack Ove…

中国建设行业峰会官方网站改图网站

一、引言 在信息爆炸的时代,网络上蕴含着海量的数据。如果我们想要获取特定的信息,手动从网页上复制粘贴显然效率极低。这时,Web 爬虫就派上了用场。Web 爬虫是一种自动获取网页内容的程序,它可以模拟人类在浏览器中的操作,快速地抓取网页上的数据。本文将带领大家使用 Py…

langgraphjs-gen-ui-examples

langgraphjs-gen-ui-examples https://github.com/langchain-ai/langgraphjs-gen-ui-examplesLangGraph Generative UI ExamplesThis repository contains a series of agents intended to be used with the Agent Cha…

2025 年节能咨询公司最新权威推荐排行榜:覆盖工业 / 建筑 / 数据中心等领域 TOP5 优质企业综合测评与选型指南发电厂/燃气/全域增效/服务器节能公司推荐

在 “双碳” 目标深化推进的当下,企业对节能咨询服务的需求日益迫切,但市场现状却让企业面临诸多困扰。部分服务商技术单一,仅能解决局部能耗问题,无法实现全流程节能优化;有些服务商过度宣传,实际节能效果与承诺…

微算法科技(NASDAQ MLGO)探索全同态加密与安全多方计算融合,开启区块链隐私执行新时代

随着区块链应用场景不断拓展,跨分片复杂合约的隐私保护需求日益凸显。传统区块链技术在处理此类合约时,难以兼顾数据隐私与功能实现。交易数据和合约执行细节常以明文形式存储和处理,易导致敏感信息泄露。微算法科技…

杭州仪器网站制作海外运营是做什么的

戳蓝字“CSDN云计算”关注我们哦!2019年7月9日,IBM史上最大的一笔收购案终于尘埃落定,IBM以每股现金190.0美元,完成对红帽所有已发行和流通在外普通股的收购交易,总股本价值约340亿美元。至此,红帽这家全球…

国产SUB-1G芯片DP4363F支持119-1050mhz超低功耗 - 动能世纪

DP4363是一款高性能、低电流的收发器,覆盖了从119MHZ到1050MHz的频段。它是系列完整发射器、接收器和收发器产品中的组成部分,适用于各种广泛的应用场景。该设备具有卓越的灵敏度,达到-126dBm,同时实现了极低的运行…

上海网站分站建设成都市建设质监站网站

【问题描述】 第200题 岛屿数量 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外&#xf…

做设计用图片的网站为什么不做网站做公众号

有win10用户说他在更新完系统后,在切换输入法的时候发现竟然切换不了无法切换,都不知道该怎么办了,这个小问题也是常有的,那么win10更新后不能切换输入法怎么办呢,下面小编给大家分享win10输入法切换不了的解决方法。 …

2025 年棕刚玉源头厂家最新推荐排行榜:TOP 级生产厂家原料与烧结工艺权威解析,助力企业精准选购一级棕刚玉/棕刚玉磨料/优质棕刚玉/棕刚玉喷砂废料回收厂家推荐

在工业研磨、表面处理等关键领域,棕刚玉磨料的品质直接决定生产效率与成品精度,是下游企业保障生产质量的核心要素。当前市场中,棕刚玉厂家数量繁杂,部分厂家存在原料把控不严、烧结工艺落后等问题,导致产品杂质超…

杀疯了!GitHub 发布 Copilot CLI!!!

大家好,我是R哥。 今年 AI 编程赛道真是大乱斗啊,特别是面向「终端」的 AI 编程工具,自从 Anthropic 的 Claude Code CLI 问世以来,XX CLI 层出不穷:Google - Gemini CLI Cursor CLI OpenAI - CodeX CLI ……如果…

2025 年无尘金刚砂源头厂家最新推荐排行榜:权威精选企业产能与品质深度解析无尘金刚砂材料/无尘金刚砂批发/无尘金刚砂喷砂厂家推荐

在工业研磨、表面处理等核心领域,无尘金刚砂的品质直接决定加工精度、生产效率及工件成品质量,是众多企业生产环节中不可或缺的关键磨料。当前市场上,无尘金刚砂厂家数量众多,但产品质量差异显著,部分厂家因原料劣…