手动制作Docker容器镜像

文章目录

  • 手动制作Docker容器镜像
      • 说明
      • 前期准备
      • 制作镜像
        • 1.启动一个centos系统的容器
        • 2.在centos容器中源码安装httpd服务
        • 3.基于已经安装好httpd服务的centos容器制作一个httpd镜像
        • 4.验证制作出来的镜像的功能
        • 5.上传至自己的docker镜像仓库(可选)

手动制作Docker容器镜像

说明

基于centos镜像启动一个容器,在这个容器里面源码安装一个httpd服务,并写一个简单的网页。再把这个运行了httpd服务的容器制作成一个镜像。这样以后直接把这个制作的镜像运行起来,就可以运行一个httpd服务。


前期准备

需要在主机上安装docker。如何安装docker请阅读Docker基础

还需要注册一个docker账号(上传镜像需要)docker官网


制作镜像

1.启动一个centos系统的容器
//拉取centos镜像
[root@wanf ~]# docker pull centos
[root@wanf ~]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB//基于centos镜像运行一个centos容器,并进入该容器
[root@wanf ~]# docker run --name centos -it centos
[root@7c01047df948 /]# ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr
[root@7c01047df948 /]# 
2.在centos容器中源码安装httpd服务

在centos容器里面的操作与在centos主机上操作一样

源码编译安装httpd

//配置国内yum源
[root@7c01047df948 ~]# rm -rf /etc/yum.repos.d/*
[root@7c01047df948 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@7c01047df948 ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@7c01047df948 ~]# yum clean all 
[root@7c01047df948 ~]# yum makecache 
[root@7c01047df948 ~]# //安装依赖包和工具包
[root@7c01047df948 ~]# yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make wget//下载源码包
[root@7c01047df948 ~]# wget https://downloads.apache.org/apr/apr-1.7.4.tar.gz -P /usr/src/
[root@7c01047df948 ~]# wget https://downloads.apache.org/apr/apr-util-1.6.3.tar.gz -P /usr/src/
[root@7c01047df948 ~]# wget http://archive.apache.org/dist/httpd/httpd-2.4.57.tar.gz -P /usr/src///开始编译安装
[root@7c01047df948 ~]# cd /usr/src/
[root@7c01047df948 src]# tar -xf apr-1.7.4.tar.gz 
[root@7c01047df948 src]# cd apr-1.7.4
[root@7c01047df948 apr-1.7.4]# sed -i 's/$RM "$cfgfile"/#$RM "$cfgfile"/g' configure
[root@7c01047df948 apr-1.7.4]# ./configure --prefix=/usr/local/apr
[root@7c01047df948 apr-1.7.4]# make -j4 && make install[root@7c01047df948 apr-1.7.4]# cd ..
[root@7c01047df948 src]# tar -xf apr-util-1.6.3.tar.gz 
[root@7c01047df948 src]# cd apr-util-1.6.3
[root@7c01047df948 apr-util-1.6.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@7c01047df948 apr-util-1.6.3]# make -j4 && make install[root@7c01047df948 apr-util-1.6.3]# cd ..
[root@7c01047df948 src]# groupadd -r apache
[root@7c01047df948 src]# useradd -r -M -s /sbin/nologin -g apache apache
[root@7c01047df948 src]# tar -xf httpd-2.4.57.tar.gz 
[root@7c01047df948 src]# cd httpd-2.4.57
[root@7c01047df948 httpd-2.4.57]# ./configure --prefix=/usr/local/apache \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
(过程省略)
[root@7c01047df948 httpd-2.4.57]# make -j4 && make install
(过程省略)//配置并启动httpd
[root@7c01047df948 ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh
[root@7c01047df948 ~]# bash
[root@7c01047df948 ~]# ln -s /usr/local/apache/include/ /usr/include/httpd
[root@7c01047df948 ~]# echo 'MANPATH /usr/local/apache/man' >> /etc/man.config
[root@7c01047df948 ~]# sed -i '/#ServerName/s/#//g' /etc/httpd24/httpd.conf//准备一个简单的静态web页面
[root@7c01047df948 ~]# vi /usr/local/apache/htdocs/index.html 
[root@7c01047df948 ~]# cat /usr/local/apache/htdocs/index.html 
<html><body><h1>nice moon!</h1></body></html>
[root@7c01047df948 ~]# /usr/local/apache/bin/apachectl start//删除安装时用到的源码包
[root@7c01047df948 ~]# cd /usr/src/
[root@7c01047df948 src]# ls
apr-1.7.4	  apr-util-1.6.3	 debug	       httpd-2.4.57.tar.gz
apr-1.7.4.tar.gz  apr-util-1.6.3.tar.gz  httpd-2.4.57  kernels
[root@7c01047df948 src]# rm -rf a* h*
[root@7c01047df948 src]# ls
debug  kernels
[root@7c01047df948 src]# 
3.基于已经安装好httpd服务的centos容器制作一个httpd镜像

建议另起一个终端进行制作镜像的操作

lcwanf/httpd:v0.1的含义:lcwanf是我的docker账号名字,httpd是镜像名字,v0.1是版本号。如果需要上传到自己的docker仓库的话就需要加上lcwanf/

//制作镜像
[root@wanf ~]# docker commit -a 'lcwanf' -c 'CMD ["/usr/local/apache/bin/httpd","-X","-D","FOREGROUND"]' -p centos lcwanf/httpd:v0.1[root@wanf ~]# docker images 
REPOSITORY     TAG       IMAGE ID       CREATED          SIZE
lcwanf/httpd   v0.1      d078f9fc7d54   35 seconds ago   574MB
centos         latest    5d0da3dc9764   2 years ago      231MB
[root@wanf ~]# 
4.验证制作出来的镜像的功能

运行这个容器,并映射到真机的8080端口号

//查看镜像id
[root@wanf ~]# docker images
REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
lcwanf/httpd   v0.1      62551f713247   4 minutes ago   574MB
centos         latest    5d0da3dc9764   2 years ago     231MB//运行容器
[root@wanf ~]# docker run -d -p 8080:80 --name httpd -it 62551f713247
fd52d76f603c94d9d1310f6b8925b107045728f468c63eb22d9c8036831c1ba1//容器正在运行
[root@wanf ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                   NAMES
fd52d76f603c   62551f713247   "/usr/local/apache/b…"   8 seconds ago   Up 7 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   httpd//端口映射成功
[root@wanf ~]# ss -anlt
State   Recv-Q  Send-Q    Local Address:Port     Peer Address:Port  Process  
LISTEN  0       2048            0.0.0.0:8080          0.0.0.0:*              
LISTEN  0       128             0.0.0.0:22            0.0.0.0:*              
LISTEN  0       2048               [::]:8080             [::]:*              
LISTEN  0       128                [::]:22               [::]:*              
[root@wanf ~]# 

在浏览器访问测试

在这里插入图片描述

成功访问到


5.上传至自己的docker镜像仓库(可选)
//登录docker账号
[root@wanf ~]# docker login 
Log in with your Docker ID or email address to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com/ to create one.
You can log in with your password or a Personal Access Token (PAT). Using a limited-scope PAT grants better security and is required for organizations using SSO. Learn more at https://docs.docker.com/go/access-tokens/Username: lcwanf		//输入自己的用户名
Password: 			//输入密码
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded		//登录成功
[root@wanf ~]# //上传镜像
[root@wanf ~]# docker push lcwanf/httpd:v0.1
(耐心等待...)

在docker官网登录自己的账号,在镜像仓库里面查看

在这里插入图片描述

上传完毕

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

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

相关文章

JVM字节码文件浅谈

文章目录 版权声明java虚拟机的组成字节码文件打开字节码文件的姿势字节码文件的组成魔数&#xff08;基本信息&#xff09;主副版本号&#xff08;基本信息&#xff09;主版本号不兼容的错误解决方法基本信息常量池方法 字节码文件的常用工具javap -v命令jclasslib插件阿里art…

外卖系统的运转:背后的技术和管理细节

外卖系统的运作涉及许多技术和管理方面&#xff0c;其中包括前端应用程序、后端服务器、数据库管理、订单处理和配送等环节。 技术细节&#xff1a; 前端应用程序&#xff1a; 外卖平台的用户界面&#xff0c;包括顾客点餐界面和餐厅端的接单界面。通常使用HTML、CSS和JavaS…

C++: 类和对象(中)

文章目录 1. 类的6个默认成员函数2. 构造函数构造函数概念构造函数特性特性1,2,3,4特性5特性6特性7 3. 析构函数析构函数概念析构函数特性特性1,2,3,4特性5特性6 4. 拷贝构造函数拷贝构造函数概念拷贝构造函数特性特性1,2特性3特性4特性5 5. 运算符重载一般运算符重载赋值运算符…

Instant-NGP论文笔记

文章目录 论文笔记 论文笔记 instant-ngp的nerf模型与vanilla nerf的模型架构相同。 instant-ngp的nerf模型包含两个MLP&#xff0c;第一个MLP就两个全连接&#xff0c;输入维度是32&#xff08;16层分辨率x2&#xff09;&#xff0c;输出是16&#xff08;用于预测密度&#x…

高防CDN:游戏应用抵御DDoS攻击的坚固堡垒

在当今的数字时代&#xff0c;游戏应用已经成为人们生活的一部分&#xff0c;而面临的网络威胁也日益复杂。其中&#xff0c;DDoS&#xff08;分布式拒绝服务&#xff09;攻击是游戏应用的一项严重威胁&#xff0c;可能导致游戏服务不可用&#xff0c;用户流失&#xff0c;以及…

Oracle安全基线检查

一、账户安全 1、禁止SYSDBA用户远程连接 用户具备数据库超级管理员(SYSDBA)权限的用户远程管理登录SYSDBA用户只能本地登录,不能远程。REMOTE_LOGIN_PASSWORDFILE函数的Value值为NONE。这意味着禁止共享口令文件,只能通过操作系统认证登录Oracle数据库。 1)检查REMOTE…

MASK-RCNN tensorflow环境搭建

此教程默认你已经安装了Anaconda&#xff0c;且tensorflow 为cpu版本。为什么不用gpu版本&#xff0c;原因下面解释。 此教程默认你已经安装了Anaconda。 因为tensorflow2.1后的gpu版&#xff0c;不支持windows。并且只有高版本的tensorflow才对应我的CUDA12.2&#xff1b; 而…

升级 MacOS 系统后,playCover 内游戏打不开了如何解决

我们有些小伙伴在升级了 macOS 系统后大概率会遇到之前能够正常使用的 playCover 突然游戏打不开了&#xff0c;最近 mac 刚刚正式推出了 MacOS 14.1 ,导致很多用户打开游戏会闪退&#xff0c;我们其实只需要更新一下 playCover 就可以解决 playCover 正式版更新会比较慢所以我…

vue-admin-template 安装遇到的问题

vue-element-admin 是一个后台前端解决方案&#xff0c;它基于 vue 和 element-ui实现。 参考文档&#xff1a; 官网&#xff1a; https://panjiachen.github.io/vue-element-admin-site/zh/guide/#%E5%8A%9F%E8%83%BD遇到的问题&#xff1a; npm ERR! Error while executing…

最新Ai系统ChatGPT程序源码+以图生图+Dall-E2绘画+支持GPT4+Midjourney绘画

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

APP攻防--ADB基础

进入app包 先使用 adb devices查看链接状态 手机连接成功的 adb shell 获取到手机的一个shell 此时想进入app包时没有权限的&#xff0c;APP包一般在data/data/下。没有执行权限&#xff0c;如图 Permission denied 权限被拒绝 此时需要手机root&#xff0c;root后输入 su …

旅游业为什么要选择VR全景,VR全景在景区旅游上有哪些应用

引言&#xff1a; VR全景技术的引入为旅游业带来了一场变革。这项先进技术不仅提供了前所未有的互动体验&#xff0c;还为景区旅游文化注入了新的生机。 一&#xff0e;VR全景技术&#xff1a;革新旅游体验 1.什么是VR全景技术&#xff1f; VR全景技术是一种虚拟现实技术&am…

合肥中科深谷嵌入式项目实战——人工智能与机械臂(六)

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者&#xff1…

【ES专题】ElasticSearch集群架构剖析

目录 前言阅读对象阅读导航前置知识笔记正文一、ES集群架构1.1 为什么要使用ES集群架构1.2 ES集群核心概念1.2.1 节点1.2.1.1 Master Node主节点的功能1.2.1.2 Data Node数据节点的功能1.2.1.3 Master Node主节点选举流程 1.2.2 分片1.3 搭建三节点ES集群1.3.1 ES集群搭建步骤1…

数据库实验:SQL的数据更新

目录 实验目的实验内容实验要求实验步骤实验过程总结 再次书接上文&#xff0c;sql基础的增删改查 实验目的 (1) 掌握DBMS的数据查询功能 (2) 掌握SQL语言的数据更新功能 实验内容 (1) update 语句用于对表进行更新 (2) delete 语句用于对表进行删除 (3) insert 语句用于对表…

MSF暴力破解SID和检测Oracle漏洞

暴力破解SID 当我们发现 Oracle 数据库的 1521 端口时,我们可能考虑使用爆破 SID(System Identifier)来进行进一步的探测和认证。在 Oracle 中,SID 是一个数据库的唯一标识符。当用户希望远程连接 Oracle 数据库时,需要了解以下几个要素:SID、用户名、密码以及服务器的 I…

正点原子嵌入式linux驱动开发——Linux 网络设备驱动

网络驱动是linux里面驱动三巨头之一&#xff0c;linux下的网络功能非常强大&#xff0c;嵌入式linux中也常常用到网络功能。前面已经讲过了字符设备驱动和块设备驱动&#xff0c;本章就来学习一下linux里面的网络设备驱动。 嵌入式网络简介 嵌入式下的网络硬件接口 本次笔记…

分享一次无线话筒和接收机的配对经历BK9521/9522

最近老婆喜欢上了唱歌。我就需要为她准备歌曲和设备。装了台点歌机&#xff0c;买了软件&#xff0c;用4天的时间下了4T容量的歌曲&#xff0c;听过的没听过的都在里面&#xff0c;真的是太多了。 有了歌曲&#xff0c;就要有唱歌设备了。当我准备买无线话筒的时候&#xff0c…

centos7中多版本go安装

安装go的方式 官网下载tar.gz包安装 # 1.下载tar包 wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz # 2.解压tar包到指定路径 tar -xvf go1.18.1.linux-amd64.tar.gz -C /usr/local/go1.18 # 3.配置环境变量&#xff0c;打开 /etc/profile 文件添加以下文件每次开机时…

论文阅读:One Embedder, Any Task: Instruction-Finetuned Text Embeddings

1. 优势 现存的emmbedding应用在新的task或者domain上时表现会有明显下降&#xff0c;甚至在相同task的不同domian上的效果也不行。这篇文章的重点就是提升embedding在不同任务和领域上的效果&#xff0c;特点是不需要用特定领域的数据进行finetune而是使用instuction finetun…