文章目录
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.访问测试