准备工作

//下载apache源码包
[root@localhost ~]# wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz https://downloads.apache.org/httpd/httpd-2.4.53.tar.gz//拉取镜像
[root@localhost ~]# docker pull centos
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
busybox      latest    beae173ccac6   3 months ago   1.24MB
httpd        latest    dabbfbe0c57b   4 months ago   144MB
centos       latest    5d0da3dc9764   7 months ago   231MB//创建容器基于centos镜像,在终端1上操作
[root@localhost ~]# docker run -it --name c1 centos /bin/bash
[root@aac9feaa6e20 /]# ls
bin  home   lost+found opt   run   sys  var
dev  lib    media   proc  sbin  tmp
etc  lib64  mnt     root  srv   usr
[root@aac9feaa6e20 /]# alias ls='ls --color'    //显示颜色
[root@aac9feaa6e20 /]# ls
bin  home   lost+found  opt   run   sys  var
dev  lib    media       proc  sbin  tmp
etc  lib64  mnt         root  srv   usr
[root@aac9feaa6e20 /]# cd /usr/src
[root@aac9feaa6e20 src]# ls
debug  kernels
//另起一个终端2,在终端2上执行操作
[root@localhost ~]# ls
anaconda-ks.cfg   apr-util-1.6.1.tar.gz
apr-1.7.0.tar.gz  httpd-2.4.53.tar.gz
[root@localhost ~]# mkdir software    //创建目录
[root@localhost ~]# mv *.gz software/     //将apache的源码包移动复制到目录里
[root@localhost ~]# ls
anaconda-ks.cfg  software
[root@localhost ~]# docker cp software c1:/usr/src/       //将此目录复制到容器c1的/usr/src
//在终端1上操作
[root@aac9feaa6e20 src]# ls
debug  kernels  software
[root@aac9feaa6e20 src]# ls software/
apr-1.7.0.tar.gz       httpd-2.4.53.tar.gz
apr-util-1.6.1.tar.gz//配置yum源
[root@aac9feaa6e20 src]# cd /etc/yum.repos.d/
[root@aac9feaa6e20 yum.repos.d]# ls
CentOS-Linux-AppStream.repo
CentOS-Linux-BaseOS.repo
CentOS-Linux-ContinuousRelease.repo
CentOS-Linux-Debuginfo.repo
CentOS-Linux-Devel.repo
CentOS-Linux-Extras.repo
CentOS-Linux-FastTrack.repo
CentOS-Linux-HighAvailability.repo
CentOS-Linux-Media.repo
CentOS-Linux-Plus.repo
CentOS-Linux-PowerTools.repo
CentOS-Linux-Sources.repo
[root@aac9feaa6e20 yum.repos.d]# rm -rf *
[root@aac9feaa6e20 yum.repos.d]# ls
[root@aac9feaa6e20 yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@aac9feaa6e20 yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@aac9feaa6e20 yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
[root@aac9feaa6e20 yum.repos.d]# sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@aac9feaa6e20 yum.repos.d]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
[root@aac9feaa6e20 yum.repos.d]# yum clean all
Failed to set locale, defaulting to C.UTF-8
18 files removed
[root@aac9feaa6e20 yum.repos.d]# yum makecache

基于容器编译apache

//安装开发环境
[root@aac9feaa6e20 ~]# yum -y install wget make
[root@aac9feaa6e20 ~]# yum groups mark install "Development Tools"
[root@aac9feaa6e20 ~]# rpm -qa | grep gcc
libgcc-8.4.1-1.el8.x86_64
[root@aac9feaa6e20 ~]# useradd -r -M -s /sbin/nologin apache
[root@aac9feaa6e20 ~]# id apache
uid=998(apache) gid=996(apache) groups=996(apache)
[root@aac9feaa6e20 ~]# yum -y install openssl-devel pcre-devel expat-devel libtool//解压
[root@aac9feaa6e20 software]# tar xf apr-1.7.0.tar.gz
[root@aac9feaa6e20 software]# tar xf apr-util-1.6.1.tar.gz
[root@aac9feaa6e20 software]# tar xf httpd-2.4.53.tar.gz//编译apr-1.7.0
[root@aac9feaa6e20 ~]# cd /usr/src/software/apr-1.7.0
[root@aac9feaa6e20 apr-1.7.0]# ls
apr-config.in     dso           NOTICE
apr.dep           emacs-mode    NWGNUmakefile
apr.dsp           encoding      passwd
apr.dsw           file_io       poll
apr.mak           helpers       random
apr.pc.in         include       README
apr.spec          libapr.dep    README.cmake
atomic            libapr.dsp    shmem
build             libapr.mak    strings
build.conf        libapr.rc     support
buildconf         LICENSE       tables
build-outputs.mk  locks         test
CHANGES           Makefile.in   threadproc
CMakeLists.txt    Makefile.win  time
config.layout     memory        tools
configure         misc          user
configure.in      mmap
docs              network_io
[root@aac9feaa6e20 apr-1.7.0]# vim configure
$RM "$cfgfile"   //把这个删掉
[root@aac9feaa6e20 apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@aac9feaa6e20 apr-1.7.0]# make
[root@aac9feaa6e20 apr-1.7.0]# make install//编译apr-util-1.6.1
[root@aac9feaa6e20 apr-1.7.0]# cd ../apr-util-1.6.1
[root@aac9feaa6e20 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@aac9feaa6e20 apr-util-1.6.1]# make
[root@aac9feaa6e20 apr-util-1.6.1]# make install//编译httpd-2.4.53
[root@aac9feaa6e20 apr-util-1.6.1]# cd ../httpd-2.4.53
[root@aac9feaa6e20 httpd-2.4.53]# ls
ABOUT_APACHE     docs            modules
acinclude.m4     emacs-style     NOTICE
Apache-apr2.dsw  httpd.dep       NWGNUmakefile
Apache.dsw       httpd.dsp       os
apache_probes.d  httpd.mak       README
ap.d             httpd.spec      README.CHANGES
build            include         README.cmake
BuildAll.dsp     INSTALL         README.platforms
BuildBin.dsp     InstallBin.dsp  ROADMAP
buildconf        LAYOUT          server
CHANGES          libhttpd.dep    srclib
changes-entries  libhttpd.dsp    support
CMakeLists.txt   libhttpd.mak    test
config.layout    LICENSE         VERSIONING
configure        Makefile.in
configure.in     Makefile.win
[root@aac9feaa6e20 httpd-2.4.53]# ./configure --prefix=/usr/local/apache \
--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@aac9feaa6e20 httpd-2.4.53]# make
[root@aac9feaa6e20 httpd-2.4.53]# make install//要使apache在前台运行则需要写脚本
[root@aac9feaa6e20 ~]# cd /
[root@aac9feaa6e20 /]# ls
bin  home   lost+found  opt   run   sys  var
dev  lib    media       proc  sbin  tmp
etc  lib64  mnt         root  srv   usr
[root@aac9feaa6e20 /]# vi entrypoint.sh
[root@aac9feaa6e20 /]# chmod +x entrypoint.sh    //给执行权限
[root@aac9feaa6e20 /]# ls
bin            etc   lib64       mnt   root  srv  usr
dev            home  lost+found  opt   run   sys  var
entrypoint.sh  lib   media       proc  sbin  tmp
[root@aac9feaa6e20 /]# cat entrypoint.sh
#!/bin/bash/usr/local/apache/bin/httpd && sleep 5d
[root@aac9feaa6e20 /]# ./entrypoint.sh
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[root@aac9feaa6e20 /]# ss -antl
State  Recv-Q Send-Q Local Address:Port  Peer Address:Port Process
LISTEN 0      128          0.0.0.0:80         0.0.0.0:*
//在终端2试着访问
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
aac9feaa6e20   centos    "/bin/bash"   36 minutes ago   Up 36 minutes             c1
[root@localhost ~]# docker inspect c1
"Gateway": "172.17.0.1","IPAddress": "172.17.0.2","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:02","DriverOpts": null
[root@localhost ~]# curl 172.17.0.2    //访问成功,表示编译成功了
<html><body><h1>It works!</h1></body></html>

基于容器生成镜像

//制作镜像
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
httpd        v0.1      2aea1e2b975c   6 minutes ago   729MB
busybox      latest    beae173ccac6   3 months ago    1.24MB
httpd        latest    dabbfbe0c57b   4 months ago    144MB
centos       latest    5d0da3dc9764   7 months ago    231MB
[root@localhost ~]# docker commit -a 'sean <1@2.com>' -c 'CMD ["/entrypoint.sh"]' -p c1 httpd:v0.2    //制作镜像
sha256:fe36a36e4c2f8b45757d88fe054d12f7fe3df9b05f6e1880107d21e0887be090
[root@localhost ~]# docker run -d --name web -p 80:80 httpd:v0.2    //基于这个镜像创建一个容器来看是否成功
7f2510c27750ecc7aedf2c0f96513e9d32e2040ae4c52f6207ed88e54fe2ba49
[root@localhost ~]# docker ps     //查看有启动,表示成功
CONTAINER ID   IMAGE        COMMAND            CREATED          STATUS          PORTS                               NAMES
7f2510c27750   httpd:v0.2   "/entrypoint.sh"   9 seconds ago    Up 8 seconds    0.0.0.0:80->80/tcp, :::80->80/tcp   web
aac9feaa6e20   centos       "/bin/bash"        52 minutes ago   Up 52 minutes                                       c1
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
httpd        v0.2      fe36a36e4c2f   2 minutes ago   729MB
httpd        v0.1      2aea1e2b975c   9 minutes ago   729MB
busybox      latest    beae173ccac6   3 months ago    1.24MB
httpd        latest    dabbfbe0c57b   4 months ago    144MB
centos       latest    5d0da3dc9764   7 months ago    231MB

使用IP地址访问

 如果程序本身可以在前台运行,就不用写脚本,直接让在程序里启动

//制作镜像
[root@localhost ~]# docker commit -a 'sean <1@2.com>' -c 'CMD ["/usr/local/apache/bin/httpd","-D","FOREGROUND"]' -p c1 httpd:v0.4
[root@localhost ~]# docker run -d --name web1 -p 80:80 httpd:v0.4   //如果报错显示端口号被占
则把占用端口的那个删掉就行
[root@localhost ~]# docker rm -f web
//如果前面创建容器报错了端口被占,后面删除了占端口的web,run命令的创建成功了,启动没有成功,所以需要启动
[root@localhost ~]# docker start web1    

基于容器制作镜像(apache)相关推荐

  1. Docker系列06—基于容器制作镜像并上传到Docker Registry

    Docker系列06-基于容器制作镜像并上传到Docker Registry 1.制作镜像 1.1 镜像的生成途径 基于容器制作 dockerfile,docker build 本篇主要详细讲解基于容 ...

  2. Docker基于容器制作httpd镜像(使用nfs共享存储部署一个网站)

    Docker基于容器制作httpd镜像 1 编译安装httpd 2 安装nfs共享存储 3 使用nfs共享存储提供httpd网页服务 4 在浏览器上进行测试访问 1 编译安装httpd [root@d ...

  3. 基于Dockerfile制作镜像

    <基于Dockerfile制作镜像> 目录... 2 一.Dockerfile简介及书写规则... 3 1.FROM(指定基础image)... 3 2.MAINTAINER(用来指定镜像 ...

  4. 基于容器制作基于ubuntu启动ssh服务的镜像

    1.  拉取ubuntu镜像:这里拉取的是ubuntu:18.04版本. [root@node1 ~]# docker pull ubuntu:18.04 2.  运行并进入容器: [root@nod ...

  5. 自己动手写Docker系列 -- 5.7实现通过容器制作镜像

    简介 在上篇中我们实现了rm命令,删除存在的容器,本篇中,将完善之前的文件系统隔离,实现容器与容器之间的文件系统隔离 源码说明 同时放到了Gitee和Github上,都可进行获取 Gitee: htt ...

  6. docker之制作镜像

    基于容器制作镜像 在docker中拉busybox的镜像 [root@localhost ~]# docker pull busybox Using default tag: latest lates ...

  7. Docker容器之镜像仓库详解

    Docker容器之镜像仓库详解 文章目录 Docker容器之镜像仓库详解 1. 什么是Docker Image? 2. 什么是Docker Registry? 3. 镜像相关的操作 本文将集中对镜像. ...

  8. Docker 制作镜像

    docker镜像制作的两种方法: 1,基于docker commit 制作镜像 2,基于dockerfile制作镜像,为主流镜像制作方式. [基于基础镜像定制后,使用commit制作自定义镜像] 1, ...

  9. 【Docker】镜像制作及使用Dockerfile制作镜像

    Docker镜像制作 1.镜像构成 2.使用容器制作镜像 Dockerfile是一个用于描述生产docker镜像的文件,它里面是一条条的指令,每条指令都会对镜像产生一定影响. 1.将springboo ...

最新文章

  1. 不孕不育怎么办?AI帮你提高成功率
  2. Java实现Redis分布锁
  3. Fedora 15 16 17 18 20无线网卡驱动安装
  4. Docker 容器CPU设置
  5. 如何从 0 到 1 打造团队 PC/H5 构建工具
  6. mysql服务器的线程数查看方法_MySQL服务器线程数的查看方法详解
  7. 计算机无法找到组件c0000135,电脑显示没有找到dwmapi.dll组件怎么办?计算机丢失dwmapi.dll的处理方法...
  8. 离散数学之集合论 【上】
  9. Bootstrap系列 -- 36. 向上弹起的下拉菜单
  10. C++中指针和引用的区别与联系
  11. 基于51单片机直流电机PWM控制器设计
  12. mysql书单推荐_MySQL零基础入门推荐书籍?
  13. java冻结jsp首行_如何实现表格的首行冻结2
  14. 捷径 播报日期、时间、星期
  15. No operations allowed after connection closed
  16. flac格式转mp3
  17. 5-2. 已有的小车实现samba文件共享
  18. 变量命名20201106-01
  19. Servlet中ServletConfig接口和ServletContext接口的作用
  20. 企企通:企业供应商风险管理,如何用采购管理软件赋能?

热门文章

  1. win10隐藏recovery盘
  2. pythone是什么_python是什么
  3. 《Redis操作Python系列、redis基本命令 list|CSDN创作打卡》
  4. 基于阿里云的超级性能测试 亿级企业压力测试神器JMeter4.X实战 抗压神器JMeter课程
  5. 快速应用计算机制作pop,9计算机练习题
  6. 西北工业大学计算机学院801考纲
  7. 入住阿里云MQTT物联网平台
  8. 离散数学--Chap14 图
  9. C++ 指针中:指针数组 指向指针数组的指针 指向指针的指针
  10. [Python] 先读后覆盖写文件