Docker续2:docker部署前端项目

news2024/9/28 23:22:57

一、部署前端页面

[root@localhost ~]# ls                             //导入dist项目
anaconda-ks.cfg  centos_httpd.tar  centos_nginx  centos.tar  centos_yum.tar  dist
[root@localhost ~]# docker pull mysql                   //下载mysql
[root@localhost ~]# docker images                            //查看镜像
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       httpd     55b1539d5cd6   2 days ago    309MB
centos       yum       9d43e5c9d7e4   2 days ago    260MB
mysql        latest    a82a8f162e18   4 weeks ago   586MB
centos       latest    5d0da3dc9764   2 years ago   231MB
[root@localhost ~]# docker run -it --name c0 centos:yum /bin/bash        创建并启动容器      
[root@0719e2c449f5 /]# yum -y install nginx     
ctrl+p+q退出
[root@localhost ~]# docker export -o centos_nginx c0                          //导出为tar
[root@localhost ~]# docker import -m "维护世界" centos_nginx centos:nginx                   //导入为镜像
 [root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos       nginx     7ecd5a5a376f   15 seconds ago   366MB
centos       yum       589cbc1074de   4 minutes ago    366MB
centos       httpd     55b1539d5cd6   2 days ago       309MB
mysql        latest    a82a8f162e18   4 weeks ago      586MB
centos       latest    5d0da3dc9764   2 years ago      231MB
[root@localhost ~]# docker ps -all
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
0719e2c449f5   9d43e5c9d7e4   "/bin/bash"   23 minutes ago   Up 23 minutes             c0
[root@localhost ~]# docker stop c0 
c0
[root@localhost ~]# docker rm c0
c0
[root@localhost ~]# docker run -it --name c0 -p80:80/tcp -v /opt/:/usr/share/nginx/html/ centos:nginx /bin/bash                                      //创建,指定端口,挂载并启动c0容器
[root@f66e2e996233 /]# nginx
ctrl+p+q退出
[root@localhost ~]# cp -r dist/* /opt                      //把项目传到挂载目录下
浏览器访问本机IP


二、部署mysql

[root@localhost ~]# docker run -d --name m0 -e MYSQL_ROOT_PASSWORD=root -p3306:3306 mysql:latest                                    //-d,隐藏启动  -e,设置mysql密码  -p映射端口
87d71e02c8eaa448eddc2c181622ae0affbc45cf69900735c157026837ed337c
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                                                  NAMES
87d71e02c8ea   mysql:latest   "docker-entrypoint.s…"   18 seconds ago   Up 17 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   m0
[root@localhost ~]# docker exec -it m0 mysql -uroot -proot                          //登陆mysql
mysql> exit
去navicat导入sql文件


三、核对时间

[root@localhost ~]# docker run -it --name c1 -v /etc/localtime:/etc/localtime centos:nginx /bin/bash     //让容器共享宿主的/etc/localtime
[root@cd7ae2b2e21c /]# date
Mon Aug 26 15:07:18 CST 2024
ctrl+p+q退出


四、容器之间的依赖

--link 容器名:别名
[root@localhost ~]#  docker run -it --link c0:mysqldb --name c1 centos:nginx /bin/bash
[root@6c310c115194 /]# ping mysqldb                    //能ping通
64 bytes from mysqldb (172.17.0.2): icmp_seq=1 ttl=64 time=0.339 ms
[root@6c310c115194 /]# cat /etc/hosts
172.17.0.3    mysqldb 87d71e02c8ea c0
172.17.0.5    6c310c115194
ctrl+p+q

测试:

# 暂停服务
[root@docker001 ~]# docker stop c0 c1
c0
c1
[root@docker001 ~]# docker start c1                         //先启动主动依赖容器
# ⽆法启动,提示被link的容器没有启动
Error response from daemon: Cannot link to a non
running container: /c0 AS /c1/mysqldb
Error: failed to start containers: c1
[root@docker001 ~]# docker start c0                              // 启动被依赖的容器
c0
[root@docker001 ~]# docker start c1                             // 再启动主动依赖的容器
c1

测试:使⽤⼀个容器占⽤172.17.0.2,测试

[root@docker001 ~]# docker stop c0 c1                          # 停⽤容器
c0
c1
[root@docker001 ~]# docker run -it --name c2 centos:nginx /bin/bash              # 创建新容器 占⽤172.17.0.2
[root@2114e0e97441 /]# 
ctrl+p+q退出
[root@docker001 ~]# docker start c0 c1            # 启动 c0 c1             
c0
c1
[root@docker001 ~]# docker exec c1 ping mysqldb                           # 在c1容器ping别名
PING mysqldb (172.17.0.3) 56(84) bytes of data.
64 bytes from mysqldb (172.17.0.3): icmp_seq=1 ttl=64 time=0.157 ms
64 bytes from mysqldb (172.17.0.3): icmp_seq=2 ttl=64 time=0.037 ms
^C
[root@docker001 ~]# docker exec c1 cat /etc/hosts                           #每次启动都修改了/etc/hosts⽂件  
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.3 mysqldb 20f05670b7df c0
172.17.0.4 ba46c0e4055d

1.docker容器的ip地址是不固定,如果要作为服务器使⽤,就必须能够直接访问服务,不能直接使⽤ip,为容器设置域名,做端⼝映射也能保证,确定是⼀旦停⽤之后端⼝被占⽤,就⽆法再次启动了
2.docker run --link. 容器的名称或者是id:⾃定义域名
3.被link容器必须处于启动状态,否则当前容器⽆法启动


五、文件联合系统(重点)  overlay

1. docker client向dcoker daemon 发送创建容器的请求 docker run
2. docker daemon查找有⽆客户端需要的镜像
3. 如果没有,就到容器的镜像仓库下载需要的镜像 pull
4. 拿到容器镜像后,启动容器

1.在docker daemo初始状态(没有镜像的时候) /var/lib/docker不存在
2.当docker daemon服务器启动,会⾃动创建dock⽬录
3.在没有镜像的情况下。查看overlay2这个⽬录是只有两个⽂件,管道⽂件 ,l⽬录(管理镜像和容器的软连接的⽬录)
4.当我们pull⼀个镜像之后 /va r/lib/docker/overlay2下就有⼀个新的⽬录,这个⽬录就是cenonos的基础⽬录,这个新的⽬录就是镜像,就是不可读的层
5.当我们使⽤这个镜像创建⼀个容器,在overlay2会添加2个⽬录,⼀个是init⽬录,另外⼀个⽬录就是容器的可写层,⽤户对系统的修改都在可写层中进⾏

六、基础镜像制作

一台需要被做成镜像的主机

1.进程目录
[root@localhost ~]# ls /proc
1      16393  275  295  314  334  353  489   664  842        execdomains  meminfo       sysrq-trigger
10     16788  276  296  315  335  383  49    667  9          fb           misc          sysvipc
11     16954  277  298  316  336  384  490   670  9251       filesystems  modules       timer_list
1143   17113  278  299  317  337  43   491   676  94         fs           mounts        timer_stats
1146   17150  281  3    318  34   45   492   7    9454       interrupts   mpt           tty
1147   18     282  300  319  340  457  493   727  acpi       iomem        mtrr          uptime
12     19     283  301  32   341  458  5     749  asound     ioports      net           version
1297   2      284  302  320  342  46   5418  750  buddyinfo  irq          pagetypeinfo  vmallocinfo
13     20     285  303  322  343  468  562   751  bus        kallsyms     partitions    vmstat
1304   21     286  304  324  344  469  5823  754  cgroups    kcore        sched_debug   zoneinfo
14     22     287  306  325  346  47   584   757  cmdline    keys         schedstat
1406   23     288  307  326  347  482  597   760  consoles   key-users    scsi
1410   24     289  308  329  348  483  616   772  cpuinfo    kmsg         self
14242  25     290  309  33   349  484  63    776  crypto     kpagecount   slabinfo
1530   26     291  310  330  35   485  654   783  devices    kpageflags   softirqs
16     2683   292  311  331  350  486  656   786  diskstats  loadavg      stat
16092  2687   293  312  332  351  487  658   8    dma        locks        swaps
16369  274    294  313  333  352  488  660   800  driver     mdstat       sys

2.sys⽬录是内核⽂件保存位置,不允许修改
[root@localhost ~]# ls /sys
block  bus  class  dev  devices  firmware  fs  hypervisor  kernel  module  power
[root@localhost ~]# mkdir /sys/abc
mkdir: 无法创建目录"/sys/abc": 不允许的操作

3.排除以上2个⽬录,并且将⽤户设置为数字
[root@localhost ~]# tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos7.tar /


4.将项目移动到docker-server主机上
scp

5.查看tar包
[root@localhost ~]# ls
anaconda-ks.cfg  centos7.tar 

6.加载镜像
[root@localhost ~]# docker import -m "说明0" centos7.tar me:me00

7.查看镜像
[root@localhost ~]# docker images

8.创建容器
[root@localhost ~]# docker run -it --name c00 me:me00 /bin/bash

9.docker commit
功能: 创建一个新的镜像,其中包含指定容器的文件系统的当前状态和其更新的元数据(如环境变量、配置等)。
使用场景: 当你对一个正在运行的容器进行了修改,并希望把这些更改保存为一个新的镜像时,可以使用这个命令。与 docker export 不同,docker commit 可以保留更改的上下文,包括命令历史等。
docker export 和 docker import 主要用于将容器的文件系统导出和导入,而 docker commit 则是用于保存对容器进行的修改为新镜像。
docker export 不保留镜像的历史和元数据,而 docker commit 会保留这些信息。

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

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

相关文章

深入垃圾回收:理解GC的核心算法与实现

垃圾回收(Garbage Collection,GC)是现代编程语言中一项关键技术。它不仅解决了内存管理中的诸多问题,还为开发者提供了一个更高效、更安全的编程环境。本文将深入探讨GC的起源、主要算法以及这些算法在不同编程语言中的具体实现。…

你好GPT-4o,程序员如何通过GPT-4o提升自己的编码能力

目录 round 1:图片识别能力ChatGPT4oClaude3.5 Sonnet图片识别能力小结:图片识别能力,ChatGPT4o完胜。 round 2:代码能力ChatGPT4oClaude3.5 Sonnet代码能力小结:代码能力,Claude3.5 Sonnet小胜。 round 3&…

Git之1.0版本重要特性及用法实例(五十二)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者. 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列…

HCS-网络服务

一、华为云Stack网络服务概览 1.网络服务包括:虚拟私有云、弹性负载均衡、弹性IP、网络ACL、虚拟专用网络、云专线、VPC终端节点、云解析 2.华为云Stack网络服务全景图: 二、云上通用网络服务 1.虚拟私有云 虚拟私有云(Virtual Private Clo…

C++系列-STL容器之stack

STL容器之stack stack容器的概念stack的构造函数及接口stack的注意事项 浣溪沙簌簌衣巾落枣花 苏轼 簌簌衣巾落枣花,村南村北响缲车。牛衣古柳卖黄瓜。 酒困路长惟欲睡,日高人渴漫思茶。敲门试问野人家。 stack容器的概念 stack容器是一种容器适配器(通…

阿里云数智服务创新挑战赛总决赛铜奖比赛攻略_NJUSME队

关联比赛: 阿里云数智服务创新挑战赛——服务调度比赛 下面我们将从赛题场景、核心算法以及算法的场景拓展对我们的解决方案进行说明。 1 赛题场景 首先对赛题场景进行分析。我们建立流程图,梳理整体的调度流程。首先客户会先进入系统,定位问题明确问…

cesium 雪积压效果(customShader)

cesium 雪积压效果 原理:不同于后处理,这里采用的是customShader 优点:不用模型法线,仅模型雪覆盖 效果图

Qt (12)【Qt窗口 —— 消息对话框 QMessageBox 】

阅读导航 引言一、消息对话框简介二、问题提示消息对话框创建三、信息提示消息对话框创建四、警告信息消息对话框创建五、错误提示消息对话框创建 引言 在上一篇文章中,我们一同探索了Qt框架中窗口与对话框的奥秘,特别是那些由Qt内置提供的、功能丰富且…

公安的实名认证如何对接?

实名认证已成为许多在线服务和应用的必要环节。本文将为您详细介绍如何对接公安的实名认证系统,包括主要合作方、对接流程以及技术细节。 1. 中盾安信简介 北京中盾安信科技发展有限公司(简称"中盾安信")是公安部第一研究所的全资子公司。作为国家"互联网"…

这 3 个开源项目 牛逼的飞起

分享几个 git 上好玩的应用,对独立开发程序感兴趣的小伙伴欢迎关注后期圈~ 点个赞呗 01个性化桌面状态栏的神器 开源地址(自行添加网址):/polybar/polybar 一个让无数开发者和桌面美化爱好者爱不释手的开源项&#x…

VBA学习(67):Excel VBA 提取数字/自定义工作表函数/正则表达式/批量提取电话号码

正则表达式(Regular Expression),又称为“正则式”、“规则表达式”、“常规表示法”,是一种用来匹配、查找、替换字符串的工具。它通过一定的符号、元字符和操作符的组合来表达一个特定的模式,从而匹配符合该模式的字…

opencv实战项目十八:Gabor滤波器提取布料纹理

文章目录 前言一、Gabor简介二、cv2.getGaborKernel()三,效果: 前言 在计算机视觉和图像处理领域,纹理分析一直是一个热门且富有挑战性的话题。纹理,作为图像中的一种重要视觉特征,不仅承载着丰…

关于BitConverter.GetBytes取得的值是反的问题

通过百度查询450000转16进制,我们得到的值是6DDD0, 在前面补零之后的值应该是0006DDD0。如下图所示。 实际上我们用BitConverter.GetBytes 方法转换450000为byte[] 的时候, 转换后的值用16进制显示为D0DD0600(因为我这里是一个通讯协议的数据传输前转换&…

回归预测 | Matlab实现GWO-BP-Adaboost灰狼算法优化BP神经网络集成学习多输入单输出回归预测

回归预测 | Matlab实现GWO-BP-Adaboost灰狼算法优化BP神经网络集成学习多输入单输出回归预测 目录 回归预测 | Matlab实现GWO-BP-Adaboost灰狼算法优化BP神经网络集成学习多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现GWO-BP-Adaboost灰…

GMS——利用 ChatGPT 和扩散模型进行制造业革命

概述 论文地址:https://arxiv.org/abs/2405.00958 研究介绍了生成式制造系统(GMS),并表明这些系统能有效管理和协调自主制造资产,提高它们对不同生产目标和人类偏好的响应能力和灵活性。 与传统的显式建模不同&#…

嵌入式Linux学习笔记-Linux基础操作

一、Linux 目录结构 二、文件基础操作 Linux 命令一般由三部分组成,命令 选项 参数。 1、pwd:列出当前所在路径 pwd //列出当前所在目录 2、cd:切换路径 cd /home/boot //切换路径为/home/boot cd .. //返回上一级目录…

鸿蒙(API 12 Beta3版)【自定义界面扫码】

基本概念 自定义界面扫码能力提供了相机流控制接口,可根据自身需求自定义扫码界面,适用于对扫码界面有定制化需求的应用开发。 说明 通过自定义页面扫码可以实现应用内的扫码功能,为了应用更好的体验,推荐同时[接入“扫码直达”…

海信电视与《黑神话 :悟空》合作,大屏端流畅游戏体验如何保障?

上线即巅峰 国产3A游戏引发热潮 近期,首款国产3A游戏《黑神话:悟空》自上线以来,便迅速在各大游戏平台占据热销榜首,其销量及在线人数均刷新历史记录。同时,该游戏在各大社交媒体中也拥有超高讨论度,其精湛…

在Ubuntu24.04上安装多主多从的高可用Kubernetes节点

前言 因为镜像拉取失败,所以好多小伙伴说calico网络插件安装失败。之前写过CentOS7上安装多主节点的Kubernets集群,而CentOS7又停止维护了。所以借着在Ubuntu上安装多主的Kubernetes集群的机会,使用国内镜像安装calico网络插件。 视频教程地…