- 1.docker安装
- docker加速
- 2.准备工作
- 下载源码包
- 布置容器
- 容器内编译安装httpd
- 优化容器
- 3.制作镜像
- 4.运行容器测试
[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 <2.准备工作 下载源码包{ > "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布置容器
[root@localhost ~]# docker pull centos //拉取centos [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc9764 7 months ago 231MB [root@localhost ~]# docker run -it --name c1 centos /bin/bash //基于centos镜像创建容器c1 #开启新的终端查看 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 834aadeb9298 centos "/bin/bash" 20 seconds ago Up 19 seconds c1 #将apache的源码包传到c1容器内 [root@localhost ~]# docker cp apr-1.7.0.tar.gz c1:/root [root@localhost ~]# docker cp apr-util-1.6.1.tar.gz c1:/root [root@localhost ~]# docker cp httpd-2.4.53.tar.gz c1:/root容器内编译安装httpd
#配置阿里源 [root@834aadeb9298 /]# cd /etc/yum.repos.d/ //删除yum仓库内的官方源 [root@834aadeb9298 yum.repos.d]# rm -rf * [root@834aadeb9298 yum.repos.d]# ls [root@834aadeb9298 yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo //配置w为阿里源 [root@834aadeb9298 yum.repos.d]# yum makecache [root@834aadeb9298 yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo #安装依赖包 [root@834aadeb9298 ~]# yum groups mark install "Development Tools" [root@834aadeb9298 ~]# yum -y install openssl-devel pcre-devel expat-devel libtool make vim #解压 [root@834aadeb9298 ~]# tar xf apr-1.7.0.tar.gz [root@834aadeb9298 ~]# tar xf apr-util-1.6.1.tar.gz [root@834aadeb9298 ~]# tar xf httpd-2.4.53.tar.gz #编译apr [root@834aadeb9298 ~]# cd apr-1.7.0 [root@834aadeb9298 apr-1.7.0]# vim configure $RM "$cfgfile" //删除或注释这一条 [root@834aadeb9298 apr-1.7.0]# ./configure --prefix=/usr/local/apr [root@834aadeb9298 apr-1.7.0]# make [root@834aadeb9298 apr-1.7.0]# make install #编译apr-util [root@834aadeb9298 ~]# cd apr-util-1.6.1 [root@834aadeb9298 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ [root@834aadeb9298 apr-util-1.6.1]# make [root@834aadeb9298 apr-util-1.6.1]# make install #编译httpd [root@834aadeb9298 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=worker [root@834aadeb9298 httpd-2.4.53]# make [root@834aadeb9298 httpd-2.4.53]# make install #设置环境变量 [root@834aadeb9298 ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/apache.sh [root@834aadeb9298 ~]# source /etc/profile.d/apache.sh [root@834aadeb9298 ~]# which apachectl /usr/local/apache/bin/apachectl [root@834aadeb9298 ~]# which httpd /usr/local/apache/bin/httpd [root@834aadeb9298 ~]# ln -s /usr/local/apache/include/ /usr/include/apache //软连接 [root@834aadeb9298 ~]# vim /usr/local/apache/conf/httpd.conf #ServerName www.example.com:80 //取消这一条的注释 取消告警信息 [root@834aadeb9298 ~]# apachectl start //开启80端口 [root@834aadeb9298 ~]# 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:*优化容器
#因为已经安装了所以源码包可以删除 [root@834aadeb9298 /]# cd root/ [root@834aadeb9298 ~]# ls anaconda-ks.cfg apr-1.7.0.tar.gz httpd-2.4.53 anaconda-post.log apr-util-1.6.1 httpd-2.4.53.tar.gz apr-1.7.0 apr-util-1.6.1.tar.gz original-ks.cfg [root@834aadeb9298 ~]# rm -rf *gz [root@834aadeb9298 ~]# rm -rf apr-1.7.0 httpd-2.4.53 apr-util-1.6.1/ [root@834aadeb9298 ~]# ls anaconda-ks.cfg anaconda-post.log original-ks.cfg [root@834aadeb9298 ~]# dnf -y remove gcc make //卸载载编译工具3.制作镜像
[root@localhost ~]# docker commit -a 'zjgg <1@2.com>' -c 'CMD ["/usr/local/apache/bin/httpd","-D","FOREGROUND"]' -p c1 httpd:v0.1 sha256:abdf3f5724cbb701fc709c698fb6badd1217a708beb42da3449a96575ec97d63 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE httpd v0.1 abdf3f5724cb 8 seconds ago 412MB centos latest 5d0da3dc9764 7 months ago 231MB4.运行容器测试
#运行容器 名为web
[root@localhost ~]# docker run -d --name web -p 80:80 httpd:v0.1
e5ab6d65910ca588650c4d78c002bb25e9c9d804c03b7dbbee6aba57904e4f0a
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5ab6d65910c httpd:v0.1 "/usr/local/apache/b…" 7 seconds ago Up 6 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp web
[root@localhost ~]# docker inspect web | grep "IPAddress" //查看容器详细信息 过滤出ip
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3",
[root@localhost ~]# curl 172.17.0.3 //访问此ip
It works!
本机也可以访问到默认页面



