- 准备工作
- docker安装
- docker加速
- 下载源码包
- 创建容器
- 拉取centos8镜像
- 制作httpd容器
- 准备工作
- 编译httpd
- 设置环境变量
- 制作镜像
- 测试
[root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo [root@localhost yum.repos.d]# sed -i 's@https://download.docker.com@https://mirrors.tuna.tsinghua.edu.cn/docker-ce@g' docker-ce.repo [root@localhost yum.repos.d]# yum install -y docker-ce //正常安装 [root@localhost yum.repos.d]# yum install -y docker-ce --allowerasing //--allowerasing自动替换冲突包docker加速
[root@localhost ~]# systemctl start docker [root@localhost ~]# cat > /etc/docker/daemon.json <下载源码包{ > "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"] > } > EOF [root@localhost ~]# systemctl restart docker
[root@localhost ~]# wget https://downloads.apache.org/httpd/httpd-2.4.53.tar.gz https://downloads.apache.org/apr/apr-1.7.0.tar.gz https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz创建容器 拉取centos8镜像
[root@localhost ~]# docker pull centos:8 8: Pulling from library/centos a1d0c7532777: Pull complete Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Status: Downloaded newer image for centos:8 docker.io/library/centos:8 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos 8 5d0da3dc9764 7 months ago 231MB制作httpd容器 准备工作
[root@localhost ~]# docker run -it --name httpd centos:8 /bin/bash //创建容器 [root@b6f0bb67732c /]# cd /etc/yum.repos.d/ //进入yum存放目录 [root@b6f0bb67732c yum.repos.d]# rm -rf * //删除所有 [root@b6f0bb67732c yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo //配置阿里源 [root@b6f0bb67732c yum.repos.d]# yum clean all [root@b6f0bb67732c yum.repos.d]# yum makecache [root@b6f0bb67732c yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo #开启一个新终端,不要退出退出容器会停止 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b6f0bb67732c centos:8 "/bin/bash" 7 minutes ago Up 7 minutes httpd [root@localhost ~]# docker cp apr-1.7.0.tar.gz httpd:/root //将源码包传到容器内 [root@localhost ~]# docker cp apr-util-1.6.1.tar.gz httpd:/root [root@localhost ~]# docker cp httpd-2.4.53.tar.gz httpd:/root #安装依赖包 [root@b6f0bb67732c ~]# yum groups mark install 'Development Tools' -y [root@b6f0bb67732c ~]# yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make vim [root@b6f0bb67732c ~]# useradd -r -M -s /sbin/nologin apache编译httpd
[root@b6f0bb67732c ~]# cd /root/ [root@b6f0bb67732c ~]# ls anaconda-ks.cfg apr-1.7.0.tar.gz httpd-2.4.53.tar.gz anaconda-post.log apr-util-1.6.1.tar.gz original-ks.cfg [root@b6f0bb67732c ~]# tar xf apr-1.7.0.tar.gz [root@b6f0bb67732c ~]# tar xf apr-util-1.6.1.tar.gz [root@b6f0bb67732c ~]# tar xf httpd-2.4.53.tar.gz [root@b6f0bb67732c ~]# cd apr-1.7.0 [root@b6f0bb67732c apr-1.7.0]# vim configure //搜索下面这条 注释掉 或者删除 $RM "$cfgfile" #编译apr [root@b6f0bb67732c apr-1.7.0]# ./configure --prefix=/usr/local/apr [root@b6f0bb67732c apr-1.7.0]# make [root@b6f0bb67732c apr-1.7.0]# make install #编译apr-util [root@b6f0bb67732c apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ [root@b6f0bb67732c apr-util-1.6.1]# make [root@b6f0bb67732c apr-util-1.6.1]# make insrall #编译httpd [rb6f0bb67732c httpd-2.4.53]# ./configure --prefix=/usr/local/apache --enabl--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork [root@b6f0bb67732c apr-1.7.0]# make [root@b6f0bb67732c apr-1.7.0]# make install设置环境变量
#环境变量 [root@b6f0bb67732c ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/apache.sh [root@b6f0bb67732c ~]# source /etc/profile.d/apache.sh [root@b6f0bb67732c ~]# which httpd /usr/local/apache/bin/httpd [root@b6f0bb67732c ~]# which apachectl /usr/local/apache/bin/apachectl [root@b6f0bb67732c ~]# ln -s /usr/local/apache/include/ /usr/include/apache //软连接 [root@b6f0bb67732c ~]# vim /usr/local/apache/conf/httpd.conf //取消下面注释 #ServerName www.example.com:80 [root@b6f0bb67732c ~]# apachectl start //启动80端口 [root@b6f0bb67732c ~]# 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:* #设置httpd服务的启动脚本 [root@b6f0bb67732c ~]# vi start.sh [root@b6f0bb67732c ~]# cat start.sh #!/bin/sh /usr/local/apache/bin/httpd /bin/bash [root@b6f0bb67732c ~]# chmod a+x start.sh制作镜像
[root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b6f0bb67732c centos:8 "/bin/bash" About an hour ago Exited (127) 14 minutes ago [root@localhost ~]# docker commit -p -c 'CMD ["/bin/bash","/start.sh"]' b6f0bb67732c zsh/httpd:v0.1 sha256:0ecd38ec7d3f0abedfca1a02fa5a2264820ad777fa82cd94e52033aa843eb2ab [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE zsh/httpd v0.1 0ecd38ec7d3f 42 seconds ago 743MB centos 8 5d0da3dc9764 7 months ago 231MB测试
#使用镜像 制作新的容器test [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE zsh/httpd v0.1 0ecd38ec7d3f 42 seconds ago 743MB centos 8 5d0da3dc9764 7 months ago 231MB [root@localhost ~]# docker run -dit -p 80:80 --name test zsh/httpd:v0.1 /bin/bash c4695964d6105d75d8c81f1b451b0b9f735f53de7f7a66d5a065cfcdbce6c473 #进入容器 [root@localhost ~]# docker exec -it test /bin/bash
访问ip可以看到默认页面



