05:容器镜像技术揭秘|发布容器服务器|私有镜像仓库

news2024/10/6 2:29:51

容器镜像技术揭秘|发布容器服务器|私有镜像仓库

  • 创建镜像
    • 使用commit方法创建自定义镜像。
    • Dockerfile打包镜像
      • 创建apache服务镜像
      • 制作 php 镜像
  • 微服务架构
    • 创建nginx镜像
  • 发布服务
    • 通过映射端口发布服务
    • 容器共享卷
  • docker私有仓库

创建镜像

使用commit方法创建自定义镜像。

使用现有镜像启动容器,在该容器基础上修改,使用commit制作新镜像

[root@docker-0001 ~]# docker run -it centos:latest
[root@02fd1719c038 ~]# rm -f /etc/yum.repos.d/*.repo
[root@02fd1719c038 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/CentOS-Base-7.repo
[root@02fd1719c038 ~]# yum install -y net-tools vim-enhanced tree bash-completion iproute psmisc && yum clean all
[root@02fd1719c038 ~]# exit
[root@docker-0001 ~]# docker commit 02fd1719c038 myos:latest

Dockerfile打包镜像

在这里插入图片描述

创建apache服务镜像

[root@docker-0001 ~]# mkdir apache; cd apache
[root@docker-0001 apache]# vim Dockerfile
FROM myos:latest
RUN  yum install -y httpd php
ENV  LANG=C
ADD  webhome.tar.gz  /var/www/html/
WORKDIR /var/www/html/ # 永久性的cd
EXPOSE 80
CMD ["/usr/sbin/httpd", "-DFOREGROUND"] # -DFOREGROUND 必须加这个 放在前台运行 不然容器起不来
# 拷贝 webhome.tar.gz 到当前目录中
[root@docker-0001 apache]# docker build -t myos:httpd .
# 验证
[root@localhost web]# docker run -itd myos:httpd    
#因为是后台服务,所以要使用-d参数

制作 php 镜像

[root@docker-0001 ~]# mkdir php; cd php
[root@docker-0001 php]# vim Dockerfile
FROM myos:latest
RUN  yum install -y php-fpm
EXPOSE 9000
CMD ["/usr/sbin/php-fpm", "--nodaemonize"]
[root@docker-0001 php]# docker build -t myos:php-fpm .
# 验证服务
[root@docker-0001 ~]# docker run -itd myos:php-fpm
deb37734e52651161015e9ce7771381ee6734d1d36bb51acb176b936ab1b3196
[root@docker-0001 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS
deb37734e526        myos:php-fpm        "/usr/sbin/php-fpm -…"   17 seconds ago      Up 15 seconds       
[root@docker-0001 ~]# docker exec -it deb37734e526 /bin/bash
[root@deb37734e526 ~]# ss -ltun
Netid  State      Recv-Q     Send-Q        Local Address:Port         Peer Address:Port              
tcp    LISTEN     0          128                    *:9000                  *:*    

微服务架构

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。将一个应用拆分。
微服务优点:

  • 高度可扩展、出色的弹性、易于部署、易于访问、更加开发
  • 松耦合高内聚

创建nginx镜像

# 编译软件包
[root@docker-0001 ~]# yum install -y gcc make pcre-devel openssl-devel
[root@docker-0001 ~]# useradd nginx
[root@docker-0001 ~]# tar -zxvf nginx-1.12.2.tar.gz
[root@docker-0001 ~]# cd nginx-1.12.2
[root@docker-0001 nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
[root@docker-0001 nginx-1.12.2]# make && make install
[root@docker-0001 nginx-1.12.2]# # 拷贝 docker-images/info.html和info.php 到 nginx/html 目录下
[root@docker-0001 nginx-1.12.2]# cd /usr/local/
[root@docker-0001 local]# tar czf nginx.tar.gz nginx
# 制作镜像
[root@docker-0001 local]# mkdir /root/nginx ;cd /root/nginx
[root@docker-0001 nginx]# cp /usr/local/nginx.tar.gz ./
[root@docker-0001 nginx]# vim Dockerfile 
FROM myos:latest
RUN  yum install -y pcre openssl && useradd nginx
ADD  nginx.tar.gz /usr/local/
EXPOSE 80
WORKDIR /usr/local/nginx/html
CMD  ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"] # -g 配置参数 daemon off 让nginx在前台运行
[root@docker-0001 nginx]# docker build -t myos:nginx .

# 验证服务
[root@docker-0001 ~]# docker rm -f $(docker ps -aq)
deb37734e526
[root@docker-0001 ~]# docker run -itd myos:nginx
e440b53a860a93cc2b82ad0367172c344c7207def94c4c438027c60859e94883
[root@docker-0001 ~]# curl http://172.17.0.2/info.html
<html>
  <marquee  behavior="alternate">
      <font size="12px" color=#00ff00>Hello World</font>
  </marquee>
</html>

发布服务

通过映射端口发布服务

[root@docker-0001 ~]# docker run -itd -p 80:80 myos:httpd
# 把 docker-0001 变成 nginx 服务,首先必须停止 apache
[root@docker-0001 ~]# docker stop $(docker ps -q)
[root@docker-0001 ~]# docker run -itd -p 80:80 myos:nginx

容器共享卷

Docker容器不适合保存任何数据,数据文件与配置文件频繁更改,修改多个容器中的数据非常困难,多容器之间有数据共享、同步需求,重要数据在容器内不方便管理易丢失,解决这些问题请使用主机卷映射功能。

Docker可以映射宿主机文件或目录到容器中:

目标对象不存在就自动创建
目标对象存在就直接覆盖掉
多个容器可以映射同一个目标对象来达到数据共享的目的
启动容器时,使用 -v 映射参数(可有多个)
语法格式如下:

docker run -itd -v 宿主机对象:容器内对象 myos:latest

[root@docker-0001 ~]# mkdir /var/webconf
[root@docker-0001 ~]# cp /usr/local/nginx/conf/nginx.conf /var/webconf/
[root@docker-0001 ~]# vim /var/webconf/nginx.conf
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi.conf;
        }
[root@docker-0001 ~]# docker run -itd -p 80:80 --name nginx \
      -v /var/webconf/nginx.conf:/usr/local/nginx/conf/nginx.conf myos:nginx
# 查看验证
[root@docker-0001 ~]# docker exec -it nginx /bin/bash
[root@e440b53a860a html]# cat /usr/local/nginx/conf/nginx.conf
[root@e440b53a860a html]# # 查看 php 相关配置是否被映射到容器内

在这里插入图片描述
共享网卡
在这里插入图片描述
在这里插入图片描述

docker私有仓库

在这里插入图片描述
搭建私有仓库服务器

[root@localhost ~]# yum install docker-distribution
[root@localhost ~]# systemctl start docker-distribution
[root@localhost ~]# systemctl enable docker-distribution

使用curl测试

[root@localhost ~]# curl http://仓库ip:5000/v2/_catalog
{"repositories":[]}

搭建私有仓库服务器
修改docker配置文件,改配置文件默认连接的仓库为国外官网的仓库,我们需要修改为自己定义的192.168.1.100服务器。

[root@localhost ~]# vim  /etc/docker/daemon.json     # 默认没有该文件,需要新建
{
    "exec-opts": ["native.cgroupdriver=systemd"], # cgroup驱动
    "registry-mirrors": ["https://hub-mirror.c.163.com"], # 默认下载仓库 使用国内源能快一点
    "insecure-registries":["192.168.1.100:5000", "registry:5000"] 
}
# insecure-registries后面根私有仓库的服务器IP和端口
[root@localhost ~]# docker rm -f $(docker ps -aq)
[root@localhost ~]# systemctl restart docker
# 注意:重启docker服务前要停止所有容器

上传镜像到私有仓库
在这里插入图片描述
在这里插入图片描述

使用curl查看刚刚上传的镜像

查询有什么镜像
[root@docker-0001 ~]# curl http://192.168.1.100:5000/v2/_catalog
{"repositories":["busybox","myos"]}
查询镜像有什么标签
[root@docker-0001 ~]# curl http://192.168.1.100:5000/v2/myos/tags/list
{"name":"myos","tags":["httpd","latest","nginx","php-fpm"]}

在一个没有任何镜像的机器上启动容器

语法格式:

docker run -it 仓库IP:5000/镜像的名称:镜像的标签

[root@docker-0002 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
# 查看默认没有镜像
[root@docker-0002 ~]# docker run -it 192.168.1.100:5000/myos:latest
Unable to find image '192.168.1.100:5000/myos:latest' locally
Trying to pull repository 192.168.1.100:5000/myos ... 
latest: Pulling from 192.168.1.100:5000/myos
b1300879af4c: Pull complete 

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

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

相关文章

Mac用Crossover玩《幻兽帕鲁》手柄不能用怎么办? Mac电脑玩《幻兽帕鲁》怎么连接手柄? 幻兽帕鲁玩家超1900万

2024年首款爆火Steam平台的游戏《幻兽帕鲁》&#xff0c;在使用Crossover后可以用Mac系统玩了&#xff0c;很多玩家喜欢通过手柄玩游戏&#xff0c;它拥有很好的握持体验&#xff0c;长时间玩也不会很累&#xff0c;所以很多《幻兽帕鲁》玩家都喜欢用手柄来操作&#xff0c;很多…

idea 中 tomcat 乱码问题修复

之前是修改 Tomcat 目录下 conf/logging.properties 的配置&#xff0c;将 UTF-8 修改为 GBK&#xff0c;现在发现不用这样修改了。只需要修改 IDEA 中 Tomcat 的配置就可以了。 修改IDEA中Tomcat的配置&#xff1a;添加-Dfile.encodingUTF-8 本文结束

大路灯有必要买吗?五款年度好用大路灯推荐

随着人们生活水平上升&#xff0c;对健康的关注度也不断提高&#xff0c;护眼灯的需求也越来越多。而护眼落地灯作为一种新型的照明产品&#xff0c;具有独特的优点。护眼落地灯采用柔和的自然光源&#xff0c;能有效减少眼睛疲劳和视力损伤&#xff0c;提高工作和学习的效率。…

消息中间件特性

一&#xff1a;消息队列的主要作用是什么&#xff1f; 1.消息队列的特性&#xff1a; 业务无关&#xff0c;一个具有普适性质的消息队列组件不需要考虑上层的业务模型&#xff0c;只做好消息的分发就可以了&#xff0c;上层业务的不同模块反而需要依赖消息队列所定义的规范进行…

亚信安全助力宁夏首个人工智能数据中心建成 铺设绿色算力安全底座

近日&#xff0c;由宁夏西云算力科技有限公司倾力打造&#xff0c;亚信安全科技股份有限公司&#xff08;股票代码&#xff1a;688225&#xff09;全力支撑&#xff0c;总投资达数十亿元人民币的宁夏智算中心项目&#xff0c;其一期工程——宁夏首个采用全自然风冷技术的30KW机…

软考高项十大管理49个过程记忆口诀

一、十大管理口诀 口诀&#xff1a;范进整狗子&#xff0c;成人风采干 内容&#xff1a;范围管理、进度管理、整合管理、沟通管理、质量管理、成本管理、资源管理、风险管理、采购管理、干系人管理 二、49个过程口诀 1、整合管理 口诀&#xff1a;按章程计划指导知识、监控…

Java打印图形 九九乘法表

目录 双重循环九九乘法表打印长方形打印平行四边形打印三角形打印菱形打印空心菱形 三重循坏百钱买百鸡 双重循环 九九乘法表 在Java中&#xff0c;你可以使用嵌套的for循环来打印九九乘法表。以下是一个简单的示例&#xff1a; public class Main {public static void main…

wordpress找不回密码怎么办?4种方法设置新密码

有些WordPress站长太久不登录后台了&#xff0c;所以就忘记了管理员登录密码&#xff0c;这种情况我们应该怎么找回密码呢&#xff1f;或者设置一个新密码呢&#xff1f;下面boke112百科就跟大家分享4种方法设置WordPress新密码。 方法一、登录页面的“忘记密码&#xff1f;”…

React + react-device-detect 实现设备特定的渲染

当构建响应式网页应用时&#xff0c;了解用户正在使用的设备类型&#xff08;如手机、平板或桌面&#xff09;可以帮助我们提供更优化的用户体验。本文将介绍如何在 React 项目中使用 react-device-detect 库来检测设备类型&#xff0c;并根据不同的设备显示不同的组件或样式。…

用Python处理TDC激光测距数据并绘制为图片

用Python处理TDC激光测距数据并绘制为图片 说明一、定义全局变量变二、主函数入口三、处理原始文件数据四、将数据叠加统计生成图片五、额外的辅助函数六、将数据进行各种形式统计叠加七、原始数据形式八、 测试结果 说明 1. 主要是将TDC激光测距数据进行统计叠加并绘制为图片…

网络原理-TCP/IP(3) - 三次握手超详解析

TCP协议 连接管理 TCP的连接是虚拟的,抽象的,目的是让通信双方保存对方信息.在正常情况下,TCP要经过三次握手建立连接,四次挥手断开连接. 之前我们在网络编程中的 socket new Socket(ip, port); 这个操作就是建立连接.而这个操作知识调用了socket的api,真正建立的过程,是在…

FW如何区别 PAW3212DB-TJDT 和 PAW3220DB-TJDL/TJDR/TJDS

PAW3212DB-TJDT 和 PAW3220DB-TJDL/TJDR/TJDS 的引脚功能定义是一样的&#xff0c;只是封装有一点不一样。PAW3212DB-TJDT是圆形火山口&#xff0c;配的是圆孔透镜&#xff0c;PAW3220DB-TJDL/TJDR/TJDS是方形火山口&#xff0c;配的是方孔透镜。 PAW3212DB-TJDT 和 PAW3220DB-…

杂题——试题-算法训练-P0602

分析&#xff1a; 把要重排序的数字转成数组对数组进行排序&#xff0c;从小到大排序数组转成字符串&#xff0c;字符串转成数字&#xff0c;得到最小数再把最小数的字符串反转&#xff0c;得到最大数注意&#xff1a; 在java语言中&#xff0c;如果使用Arrays.toString(digits…

C++之平衡二叉搜索树查找

个人主页&#xff1a;[PingdiGuo_guo] 收录专栏&#xff1a;[C干货专栏] 大家好&#xff0c;我是PingdiGuo&#xff0c;今天我们来学习平衡二叉搜索树查找。 目录 1.什么是二叉树 2.什么是二叉搜索树 3.什么是平衡二叉搜索树查找 4.如何使用平衡二叉搜索树查找 5.平衡二叉…

C#,阿格里数(Ugly Number)的多种算法与源代码

1 丑数&#xff0c;阿格里数 阿格里数&#xff0c;即丑数&#xff08;Ugly Number&#xff09;、逊数&#xff08;Humble Number&#xff09;。 一般而言&#xff1a;把只包含质因子2&#xff0c;3和5的数称作丑数&#xff08;Ugly Number&#xff09;。例如6、8都是丑数&…

基于PSO-BP神经网络的风电功率MATLAB预测程序

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 参考文献 基于风电场运行特性的风电功率预测及应用分析——倪巡天 资源简介 由于自然风具有一定的随机性、不确定性与波动性&#xff0c;这将会使风电场的功率预测受到一定程度的影响&#xff0c;它们之间…

FPGA高端项目:Xilinx Zynq7020系列FPGA 多路视频缩放拼接 工程解决方案 提供4套工程源码+技术支持

目录 1、前言版本更新说明给读者的一封信FPGA就业高端项目培训计划免责声明 2、相关方案推荐我这里已有的FPGA图像缩放方案我已有的FPGA视频拼接叠加融合方案本方案的Xilinx Kintex7系列FPGA上的ov5640版本本方案的Xilinx Kintex7系列FPGA上的HDMI版本本方案的Xilinx Artix7系列…

探索设计模式的魅力:从单一继承到组合模式-软件设计的演变与未来

设计模式专栏&#xff1a;http://t.csdnimg.cn/nolNS 在面对层次结构和树状数据结构的软件设计任务时&#xff0c;我们如何优雅地处理单个对象与组合对象的一致性问题&#xff1f;组合模式&#xff08;Composite Pattern&#xff09;为此提供了一种简洁高效的解决方案。通过本…

C++类与对象:默认成员函数

文章目录 1.类的6个默认成员函数2.构造函数3.析构函数4. 拷贝构造函数5.赋值运算符和运算符重载6.日期类实现7.const成员8.重载流插入<< &#xff0c;流提取>>1.流插入2.流提取 9.取地址及const取地址操作符重载 1.类的6个默认成员函数 空类:也就是什么成员都没有的…

Spring Boot集成Redisson详细介绍

Redisson是一个用于Java的分布式和高可用的Java对象的框架&#xff0c;它基于Redis实现。在Spring Boot应用程序中集成Redisson可以帮助我们更轻松地实现分布式锁、分布式对象、分布式集合等功能。本文将介绍如何在Spring Boot项目中集成Redisson&#xff0c;并展示一些基本用法…