dockers容器源码部署httpd,用存储卷部署网站

dockers容器源码部署httpd,用存储卷部署网站

httpd部署

1.创建基于centos镜像的(httpd)容器

[root@localhost ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED        SIZE
3199560936/nginx   v0.1      c98f0d7db627   2 days ago     579MB
busybox            latest    d23834f29b38   6 days ago     1.24MB
centos             latest    5d0da3dc9764   2 months ago   231MB
[root@localhost ~]# docker run -itd --name httpd 5d0da3dc9764
330f9aab0fe7437ef2d0a6b94ffbe1e3c29ba77b5e697f86f6db221ffdb29d9f
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES
330f9aab0fe7   5d0da3dc9764   "/bin/bash"   8 seconds ago   Up 6 seconds             httpd
[root@localhost ~]# 

2.上传相应httpd的包

[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES
330f9aab0fe7   5d0da3dc9764   "/bin/bash"   8 seconds ago   Up 6 seconds             httpd
[root@localhost ~]# ls
anaconda-ks.cfg   apr-util-1.6.1.tar.gz
apr-1.7.0.tar.gz  httpd-2.4.49.tar.gz
[root@localhost ~]# docker cp /root/apr-1.7.0.tar.gz 330f9aab0fe7:/usr/src
[root@localhost ~]# docker cp /root/apr-util-1.6.1.tar.gz 330f9aab0fe7:/usr/src
[root@localhost ~]# docker cp /root/httpd-2.4.49.tar.gz 330f9aab0fe7:/usr/src
[root@localhost ~]# 

3.进入容器查看httpd的包

[root@localhost ~]# docker exec -it 330f9aab0fe7 /bin/bash
[root@330f9aab0fe7 /]# cd /usr/src
[root@330f9aab0fe7 src]# ls
apr-1.7.0.tar.gz       debug                kernels
apr-util-1.6.1.tar.gz  httpd-2.4.49.tar.gz
[root@330f9aab0fe7 src]# 

4.创建用户

[root@330f9aab0fe7 ~]# useradd -r -M -s /sbin/nologin httpd
[root@330f9aab0fe7 ~]# 

5.安装依赖包

[root@de5277dc99fb ~]# yum groups mark install 'Development Tools' -y
[root@de5277dc99fb ~]# yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make

6.编译安装apr

[root@de5277dc99fb src]# tar xf apr-1.7.0.tar.gz 
[root@de5277dc99fb src]# cd apr-1.7.0
[root@de5277dc99fb apr-1.7.0]# vi configure
 cfgfile=${ofile}T
    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
#   $RM "$cfgfile"    //进入这个配置文件搜索cfgfile,然后删除或者注释掉
[root@de5277dc99fb apr-1.7.0]# 
[root@de5277dc99fb apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@de5277dc99fb apr-1.7.0]# make && make install

7.编译安装

[root@de5277dc99fb src]# tar xf apr-util-1.6.1.tar.gz 
[root@de5277dc99fb src]# ls
apr-1.7.0
apr-1.7.0.tar.gz
apr-util-1.6.1
apr-util-1.6.1.tar.gz
debug
httpd-2.4.49.tar.gz
kernels
[root@de5277dc99fb src]# cd apr-util-1.6.1
[root@de5277dc99fb apr-util-1.6.1]#
[root@de5277dc99fb apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@de5277dc99fb apr-util-1.6.1]# make && make install

8.编译安装httpd

[root@de5277dc99fb src]# tar xf httpd-2.4.49.tar.gz  
[root@de5277dc99fb src]# cd httpd-2.4.49
[root@de5277dc99fb httpd-2.4.49]#
[root@de5277dc99fb httpd-2.4.49]# ./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@de5277dc99fb httpd-2.4.49]# make && make install

9.配置文件

[root@de5277dc99fb ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh
[root@de5277dc99fb ~]# source /etc/profile.d/httpd.sh
[root@de5277dc99fb ~]# ln -s /usr/local/apache/include/ /usr/include/httpd
[root@de5277dc99fb ~]# echo 'MANPATH /usr/local/apache/man' >> /etc/man.config
[root@de5277dc99fb ~]# vi /usr/local/apache/conf/httpd.conf 
ServerName www.example.com:80    //在这里把前面的注释取消掉
[root@de5277dc99fb ~]# 

10.编写启动脚本

[root@de5277dc99fb ~]# cat /start.sh 
#!/bin/sh

/usr/local/apache/bin/httpd 
/bin/bash
[root@de5277dc99fb ~]# chmod +x /start.sh
[root@de5277dc99fb ~]# 

11.构建镜像

[root@localhost ~]# docker ps -a 
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
de5277dc99fb   5d0da3dc9764   "/bin/bash"   20 minutes ago   Up 20 minutes             httpd
[root@localhost ~]# docker commit -p -c 'CMD ["/bin/bash","start.sh"]' de5277dc99fb 3199560936/httpd:v0.1
sha256:39a12c8683891f3b739f486e9754f10988335d56e61e537209442de0b2de4f12
[root@localhost ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED          SIZE
3199560936/httpd   v0.1      39a12c868389   11 seconds ago   713MB
busybox            latest    d23834f29b38   6 days ago       1.24MB
centos             latest    5d0da3dc9764   2 months ago     231MB
[root@localhost ~]# 

12.安装nfs

需要开启一台新的虚拟机

[root@node2 ~]# mkdir /nfs   
[root@node2 ~]# cat /etc/exports
/nfs 192.168.100.169(rw)
[root@node2 ~]# yum -y install nfs-utils
[root@node2 ~]# systemctl start nfs-server
[root@node2 ~]# 

在有docker服务的虚拟机上一样安装nfs

[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# showmount -e 192.168.100.147
Export list for 192.168.100.147:
/nfs 192.168.100.169
[root@localhost ~]# 

挂载

[root@localhost ~]# mount -t nfs 192.168.100.147:/nfs /var/www/html/
[root@localhost ~]# df -h文件系统              容量  已用  可用 已用% 挂载点
devtmpfs              371M     0  371M    0% /dev
tmpfs                 391M   16K  391M    1% /dev/shm
tmpfs                 391M   11M  380M    3% /run
tmpfs                 391M     0  391M    0% /sys/fs/cgroup
/dev/mapper/cs-root    66G  3.4G   62G    6% /
/dev/mapper/cs-home    32G  260M   32G    1% /home
/dev/sda1            1014M  195M  820M   20% /boot
tmpfs                  79M     0   79M    0% /run/user/0
192.168.100.147:/nfs   64G  7.6G   57G   12% /var/www/html
[root@localhost ~]# 

创建容器并映射

[root@localhost ~]# docker run -itd --name httpd -p 80:80 -v /var/www/html/:/usr/local/apache/htdocs 39a12c868389
5b65ebc2fb9d844f5451a7544b649492a4493ed82a3e6b80d73a5387bc791e6e
[root@localhost ~]# docker ps -a 
CONTAINER ID   IMAGE          COMMAND                CREATED         STATUS         PORTS                               NAMES
5b65ebc2fb9d   39a12c868389   "/bin/bash start.sh"   4 seconds ago   Up 2 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   httpd
[root@localhost ~]# 

给权限

[root@node2 /]# chown nobody.nobody /nfs
[root@node2 /]# ll
总用量 24
lrwxrwxrwx.   1 root   root      7 5月  18 2020 bin -> usr/bin
dr-xr-xr-x.   5 root   root   4096 7月  13 02:38 boot
drwxr-xr-x.  20 root   root   3160 12月  6 00:59 dev
drwxr-xr-x.  88 root   root   8192 12月  6 05:03 etc
drwxr-xr-x.   2 root   root      6 5月  18 2020 home
lrwxrwxrwx.   1 root   root      7 5月  18 2020 lib -> usr/lib
lrwxrwxrwx.   1 root   root      9 5月  18 2020 lib64 -> usr/lib64
drwxr-xr-x.   2 root   root      6 5月  18 2020 media
drwxr-xr-x.   3 root   root     18 7月  13 02:32 mnt
drwxrwxr-x+   3 nobody nobody   81 12月  6 05:04 nfs
drwxr-xr-x.   4 root   root     52 12月  2 04:29 opt
dr-xr-xr-x. 258 root   root      0 12月  6 00:59 proc
dr-xr-x---.   5 root   root   4096 12月  6 05:03 root
drwxr-xr-x.  28 root   root    920 12月  6 03:26 run
lrwxrwxrwx.   1 root   root      8 5月  18 2020 sbin -> usr/sbin
drwxr-xr-x.   2 root   root      6 5月  18 2020 srv
dr-xr-xr-x.  13 root   root      0 12月  6 00:59 sys
drwxrwxrwt.  17 root   root   4096 12月  6 03:48 tmp
drwxr-xr-x.  12 root   root    144 7月  13 02:31 usr
drwxr-xr-x.  20 root   root    278 7月  13 10:38 var

13.上传我们要部署网站的代码

[root@localhost html]# ls
assets  icon.png  index.html  js  share.png
[root@localhost html]# 

此时在新开的一台虚拟机查看nfs

[root@node2 ~]# ls /nfs
assets  icon.png  index.html  js  share.png
[root@node2 ~]# 

14.访问测试

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lfei5120

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值