修改docker容器commit定制镜像

news2025/2/21 15:45:39

通过修改容器,然后commit提交为镜像

定制特定的镜像:在实际工作,公网的镜像往往不符合我们预期,因此我们需要自己定制镜像以满足业务需求。

例如:我们期望定制一个符号我们自己的Nginx镜像,并期望镜像交付就包含项目代码与我们期望的配置, 后期只需要轻松run 容器即可

首先在docker中准备nginx的基础镜像,没有的话可以docker pull nginx 拉取一个最新的

因为我没有配镜像加速地址下载太慢,直接用以前的,版本没有太大关系

[root@server159 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
php-fpm      v1        0474bd7488fa   21 hours ago   698MB
debian       latest    676aedd4776f   2 weeks ago    117MB
centos       7         eeb6ee3f44bd   2 years ago    204MB
nginx        1.18.0    c2c45d506085   2 years ago    133MB

然后直接创建镜像,根据经验都知道nginx的配置文件在/etc/nginx/conf.d目录下

[root@server159 ~]# docker run -dt --name nginxtest  nginx:1.18.0
9c8c514fff1e6e8bebaca3d0d8deaffe39cc243f31e0dcfa0e73b9cf8e924fff
[root@server159 ~]# docker exec nginxtest ls /etc/nginx/conf.d
default.conf

复制docker容器里的文件到当前宿主机的目录下

[root@server159 ~]# docker cp nginxtest:/etc/nginx/conf.d/default.conf ./
Successfully copied 3.07kB to /root/./
[root@server159 ~]# ls
anaconda-ks.cfg  default.conf  original-ks.cfg  www.conf

复制的文件内容是这样的

[root@server159 ~]# cat default.conf 
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

然后修改我们复制出来的文件,就是定制我们自己需要的配置文件了

这里我修改了端口为8080,根目录变成/usr/share/nginx

server {
    listen       8080;
    listen  [::]:8080;
    server_name  www.game.com;
    location / {
        root   /usr/share/nginx;
        index  index.html index.htm;
    }
}

然后将修改的配置文件复制到容器里,覆盖原来的文件

并且复制一个我准备好的贪吃蛇游戏index.html文件到根目录下

[root@server159 ~]# docker cp ./default.conf nginxtest:/etc/nginx/conf.d/default.conf
Successfully copied 2.05kB to nginxtest:/etc/nginx/conf.d/default.conf
[root@server159 ~]# ls
anaconda-ks.cfg  default.conf  index.html  original-ks.cfg  www.conf
[root@server159 ~]# docker cp ./index.html nginxtest:/usr/share/nginx
Successfully copied 33.3kB to nginxtest:/usr/share/nginx

然后将容器生成为一个新镜像

[root@server159 ~]# docker commit -a "alice" -m "my new nginx image " nginxtest newnginx:v1
sha256:765591e6feee43047b660bea909bbc46fe9eec7a8c498438b55579244793c02f
[root@server159 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
newnginx     v1        765591e6feee   10 seconds ago   133MB
php-fpm      v1        0474bd7488fa   21 hours ago     698MB
debian       latest    676aedd4776f   2 weeks ago      117MB
centos       7         eeb6ee3f44bd   2 years ago      204MB
nginx        1.18.0    c2c45d506085   2 years ago      133MB

然后我们新的nginx镜像就定制好了

-a是作者,-m是这个镜像的描述,newnginx:v1是镜像名和版本

定制好我们的新镜像以后可以创建一个新容器运行我们定制的镜像看看效果

把容器的8080端口映射到主机的80端口,因为我们定制的nginx镜像是改了端口的,不是80了

[root@server159 ~]# docker run -dt --name webgame -p 80:8080 newnginx:v1 
d92bc0b92bf72401756d6c59bf3dcc2d3fc3e660b9a63efb759dae85de70ebc3
[root@server159 ~]# docker exec webgame ls /usr/share/nginx
html
index.html
[root@server159 ~]#

使用交互式命令可以看到我们的nginx目录下确实有我们上传的index.html文件

容器创建好后去浏览器访问

在这里插入图片描述

可以看到我们的贪吃蛇游戏就可以运行了

一个容器的定制这样就可以了

下次讲Dockerfile的容器定制方法

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

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

相关文章

通过Google搜索广告传送的携带木马的PyCharm软件版本

导语 最近,一起新的恶意广告活动被发现,利用被入侵的网站通过Google搜索结果推广虚假版本的PyCharm软件。这个活动利用了动态搜索广告,将广告链接指向被黑客篡改的网页,用户点击链接后下载的并不是PyCharm软件,而是多种…

python hashlib模块及实例

hashlib 模块密码加密密码撞库密码加盐 一,hashlib模块 hashlib模块是用来为字符串进行加密的模块,通过该作用就可以为用户的密码进行加密。 通过模块中的hash算法可以为任意长度的字符串加密成长度相同的一串hash值。该hash算法得到的hash值有一下几个…

vue(32) : win10创建vue2基础前端框架

vue2element-uiaxios 1.创建vue2项目 开发工具为HBuilderX 3.7.3 1.1.新建项目 1.2.普通项目-vue项目(2.6.10) 等待创建项目 2.安装element-ui组件 2.1右键左下角开始图标 2.2.cd进入项目目录,执行安装element-ui npm i element-ui -S 2.3.main.js引入配置 import {Paginat…

HTML样式CSS、图像

HTML样式-CSS: CSS (Cascading Style Sheets) 用于渲染HTML元素标签的样式。CSS可以通过以下方式添加到HTML中&#xff1a;1&#xff09;、内联方式&#xff1a;在HTML元素中使用“style”属性&#xff1b;2&#xff09;、内部样式表&#xff1a;在HTML文档头部<head>区…

ssh远程登录服务

目录 1.1版本协商阶段 1.2密钥和算法协商阶段 1.3认证阶段(两种认证方法): 2.1.安装ssh 2.2.配置文件分析: 3.1配置ssh监听端口号 3.2拒绝以root身份登录服务器 3.3虚拟机之间实现免密登录 3.4xshell免密登录 SSH (Secure Shell Protocol,安全壳程序协议)由IETF的网络…

NumPy 相关函数

本篇文章介绍了Python中NumPy库的相关函数 np.corrcoef() 函数。 NumPy 中的相关性 相关系数是一个数字值&#xff0c;表示数据集给定特征之间的关系。 相关性可以是正相关&#xff0c;这意味着它们具有直接关系&#xff0c;并且一个特征的增加会导致另一个特征的增加。 负相…

Unity 解决因版本不同打开项目大量报错

文章目录 问题描述解决办法 问题描述 当我们在使用Unity不同版本打开同一项目时&#xff0c;可能会因为版本的不同&#xff0c;编辑器大量报错&#xff0c;特别是从高版本打开低版本 解决办法 删除项目文件夹下的 Library、 Logs、 Packages文件夹 然后打开项目重新生成这些…

python自动化测试(十):EcShop删除商品功能

前置条件&#xff1a; 本地部署&#xff1a;ECShop的版本是3.0.0、Google版本是 Google Chrome65.0.3325.162 (正式版本) &#xff08;32 位&#xff09; py的selenium版本是3.11.0 目录 一、前置代码 二、删除操作 2.1 进入商品列表 2.2 通过货号进行删除 一、前置代…

nodejs+vue啄木鸟便民维修网站设计与实现-计算机毕业设计python-django-php

1、目的&#xff1a; 设计一个适用于便民家电维护的平台。该系统方便管理员对用户信息的管理&#xff0c;使用户在不掌握任何专业知识的前提下&#xff0c;可以方便快速的上手&#xff0c;因此项目应具有广泛使用人群。该课题应包括&#xff08;至少包括&#xff09;以下几个基…

断货、售罄,双十一首日西圣Olite开放式耳机杀疯了!

西圣Olite首战双十一&#xff0c;仅需一天&#xff0c;就已经“售罄缺货”。作为国内深耕智能声学领域多年的 xisem西圣科技&#xff0c;在10月最新推出的一款Olite开放式耳机&#xff0c;售价仅为199&#xff0c;自问世之初就迅速引起了广泛的关注和需求&#xff0c;只因超高性…

selenium自动化测试入门 —— 下拉框元素定位

选择获取反选下拉框元素首先要实例化select元素 from selenium.webdriver.support.ui import Select # 引入包 select_elementSelect(element) # 实例化select 三种常用选择方法 select_element. select_by_index(index) 根据index定位&#xff0c;从0开始 select_element. …

快速解决!打开软件提示缺失x3daudio1_7.dll的解决方案

在我理解中&#xff0c;x3daudio1 7.dll丢失的问题是许多电脑用户都可能遇到的一个常见问题。这个问题可能会导致电脑无法正常播放音频&#xff0c;甚至可能影响到电脑的正常使用。那么&#xff0c;面对这样的问题&#xff0c;我们应该如何进行修复呢&#xff1f;下面&#xff…

[每日一氵] cudaDevAttrMaxBlocksPerMultiprocessor is not a member of cudaDeviceAttr

省流版&#xff1a; 本来懒得氵了&#xff0c;结果搜了下没啥结果&#xff0c;看了CUDA文档才知道&#xff0c;CUDA10还没有这个枚举值, CUDA11以及以上的版本才有 带着 CINN 编译 Paddle 报错: cmake .. -DWITH_GPUON -DWITH_TESTINGON -DCINN_ONLYOFF -DWITH_CINNON/Paddle…

微信便利签怎么弄?微信中有便捷操作的便签小程序吗

微信在日常办公及生活中比较重要的作用就是&#xff1a;聊天、视频会议、语音会议等&#xff0c;这是大家认知中的微信。除了这些功能以外&#xff0c;微信中还有很多小程序&#xff0c;小程序也能够辅助大家日常的办公。 比如&#xff0c;工作中我们需要制定工作计划&#xf…

机器学习---支持向量机的初步理解

1. SVM的经典解释 改编自支持向量机解释得很好 |字节大小生物学 (bytesizebio.net) 话说&#xff0c;在遥远的从前&#xff0c;有一只贪玩爱搞破坏的妖怪阿布劫持了善良美丽的女主小美&#xff0c;智勇双全 的男主大壮挺身而出&#xff0c;大壮跟随阿布来到了妖怪的住处&…

程序员使用 ChatGPT的 10 种最佳方式

自2022年11月30日发布以来&#xff0c;ChatGPT持续爆火&#xff0c;它在各个方面都产生了巨大的影响力&#xff0c;在软件开发行业&#xff0c;ChatGPT 有潜力彻底改变我们思考和处理软件开发的方式。 ChatGPT 正在改变软件开发流程&#xff0c;它理解自然语言和生成类人文本的…

【AI视野·今日NLP 自然语言处理论文速览 第六十一期】Tue, 24 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 24 Oct 2023 (showing first 100 of 207 entries) Totally 100 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers LINC: A Neurosymbolic Approach for Logical Reasoning by Combining …

Cesium笔记(1):Vite+Vue3搭建Cesium

创建项目 ViteVue3创建一个vue的项目 npm create vitelatest进入项目文件&#xff0c; 安装依赖 npm install运行项目npm run dev, cesium 开始引入我们的cesium 安装插件 npm i cesium vite-plugin-cesium vite -D添加配置文件 需要安装 vite-plugin-cesium&#xff…

antv/g6 节点、及自定义节点

节点 AntV G6 中内置节点支持的通用属性通常包括以下几个&#xff1a; id&#xff1a;节点的唯一标识符。 x 和 y&#xff1a;节点的位置坐标。 label&#xff1a;节点的标签文本。 style&#xff1a;节点的样式&#xff0c;用于设置节点的外观&#xff0c;可以包括填充颜色…

有色金属冶炼VR虚拟场景互动教学有何优势

真实模拟&#xff1a;VR虚拟现实技术可以提供一个真实的虚拟环境&#xff0c;模拟钢铁制造现场&#xff0c;包括设备、工艺流程、操作规程等&#xff0c;使学员获得直观、真实的体验。 安全可靠&#xff1a;钢铁制造技能培训可以在虚拟环境中进行&#xff0c;不会对人员或设备造…