docker储存卷管理实操:利用存储卷部署一个网站

创建apache镜像

//以centos为基础创建一个容器
[root@localhost ~]# docker run --name apache -it centos
[root@a050f73806a8 /]# 

//将apache安装的包和镜像传过去
[root@localhost ~]# docker cp apache apache:/root/
[root@a050f73806a8 /]# cd root/
[root@a050f73806a8 ~]# ls
anaconda-ks.cfg  anaconda-post.log  apache  original-ks.cfg

//包里面是脚本与压缩包,给脚本加权限然后运行
[root@a050f73806a8 apache]# chmod +x install.sh 
[root@a050f73806a8 apache]# ls
install.sh  package
[root@a050f73806a8 apache]# ./install.sh 

//写启动脚本
[root@2d2691ad7fbe ~]# mkdir /scripts/
[root@2d2691ad7fbe ~]# cd /scripts/
[root@2d2691ad7fbe scripts]# vi start.sh
[root@2d2691ad7fbe scripts]# chmod +x start.sh 
[root@2d2691ad7fbe scripts]# cat start.sh 
#!/bin/bash
/usr/local/apache/bin/apachectl start
/bin/bash

//生成镜像
[root@localhost ~]# docker commit  -c 'CMD ["/scripts/start.sh"]'   -p  apache   httpd:v1.0
sha256:3471d3329f64cd8f3bd6f2f36579bbfb73562e08f459637638f2b7282572c590
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
httpd        v1.0      3471d3329f64   About a minute ago   721MB
centos       latest    5d0da3dc9764   2 months ago         231MB

//试运行
[root@localhost ~]# docker run -it --name test -p 81:80 httpd:v1.0
[root@e3ce58fdffa0 /]# 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:*                        

访问

配置nfs

另开一台主机,需要关闭防火墙,selinux

//安装nfs并配置开机自启
[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# systemctl enable --now nfs-server.service
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.

//创建共享目录
[root@localhost ~]# mkdir /nfs
[root@localhost ~]# chmod 777 /nfs/
[root@localhost ~]# vim /etc/exports
[root@localhost ~]# cat /etc/exports
/nfs   192.168.216.215(rw)  //docker主机
[root@localhost ~]# systemctl restart nfs-server.service

在docker主机上配置nfs

[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# systemctl enable --now nfs-server.service 
[root@localhost ~]#  showmount -e 192.168.216.200  //nfs主机ip
Export list for 192.168.216.200:
/nfs 192.168.216.215

[root@localhost ~]# mkdir -p /var/www/html/
[root@localhost ~]# mount -t  nfs 192.168.216.200:/nfs  /var/www/html/
[root@localhost ~]# df -h
文件系统              容量  已用  可用 已用% 挂载点
devtmpfs              877M     0  877M    0% /dev
tmpfs                 896M     0  896M    0% /dev/shm
tmpfs                 896M  8.8M  887M    1% /run
tmpfs                 896M     0  896M    0% /sys/fs/cgroup
/dev/mapper/cl-root    17G  3.5G   14G   21% /
/dev/sda1            1014M  194M  821M   20% /boot
tmpfs                 180M     0  180M    0% /run/user/0
overlay                17G  3.5G   14G   21% /var/lib/docker/overlay2/dcc1780876a2e04c685879d3c6ad40c2a6945f1fa399b652e02640b9de6a6c35/merged
192.168.216.200:/nfs   37G  1.8G   36G    5% /var/www/html

//永久挂载
[root@localhost ~]# vim /etc/fstab 
[root@localhost ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Nov 22 08:51:14 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=1f3dc156-63a0-402f-a932-1df189d2ab88 /boot                   xfs     defaults        0 0
/dev/mapper/cl-swap     none                    swap    defaults        0 0
192.168.216.200:/nfs   /var/www/html            nfs     defaults,_netdev 0 0
[root@localhost ~]# mount -a

//测试nfs可用性
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# touch abc

[root@localhost ~]# cd /nfs/
[root@localhost nfs]# ls
abc

映射储存卷创建容器

[root@localhost ~]# docker run --name httpd -dit -p 82:80 -v /var/www/html:/usr/local/apache/htdocs  httpd:v1.0 
1403a1465c933ec038217d53e0c26e6200fdb043122e005a539522cdc9237e10

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE        COMMAND               CREATED          STATUS          PORTS                               NAMES
1403a1465c93   httpd:v1.0   "/scripts/start.sh"   19 seconds ago   Up 18 seconds   0.0.0.0:82->80/tcp, :::82->80/tcp   httpd

[root@localhost ~]# docker exec -it httpd /bin/bash
[root@1403a1465c93 /]# 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@1403a1465c93 /]# cd /usr/local/apache/htdocs/
[root@1403a1465c93 htdocs]# ls
abc

//删除同步的测试文件
[root@1403a1465c93 htdocs]# rm -f abc
[root@1403a1465c93 htdocs]# ls
[root@1403a1465c93 htdocs]# 

上传网页文件

[root@localhost html]# ls
百度图片-发现多彩世界.html

[root@1403a1465c93 htdocs]# ls
百度图片-发现多彩世界.html

访问测试

Guess you like

Origin blog.csdn.net/weixin_46115601/article/details/121760054