2024.8.26(线上考试系统的数据 虚拟化部署 --link)

一、mysql镜像管理

1、线上考试系统的数据 虚拟化部署
1. 部署前端服务器
(1)将资源上传到服务器

scp -r  /dist/  root@xxx:…..

(2)创建基础容器 在服务器上

[root@docker ~]# systemctl start docker
[root@docker ~]# docker pull centos

[root@docker ~]# docker run -it --name c0 centos:latest /bin/bash
[root@015996a52240 /]# cat /etc/redhat-release 
CentOS Linux release 8.4.2105

(3)在容器中修改yum源

[root@015996a52240 /]# rm -rf /etc/yum.repos.d/*
[root@015996a52240 /]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

[root@015996a52240 /]# yum clean all && yum makecache

(4)在容器中安装epel

[root@015996a52240 /]# yum -y install epel-release

(5)在容器中安装nginx

[root@015996a52240 /]# yum -y install nginx

(6)ctrl+p+q
(7)导出tar包

[root@docker ~]# docker export -o centos_nginx c0

[root@docker ~]# ls

(8)引入tar包,称为镜像

[root@docker ~]# docker import -m "哈哈哈哈" centos_nginx centos:nginx

(9)查看镜像

[root@docker ~]# docker images

(10)停用c0容器,删除c0容器

[root@docker ~]# docker stop c0
c0
[root@docker ~]# docker rm c0
c0

(11)创建新的centos nginx容器,在创建的同时指定端口,以及挂载目录

[root@docker ~]# docker run -it --name c0 -p80:80/tcp -v /opt/:/usr/share/nginx/html/ centos:nginx /bin/bash

(12)在容器内部启动nginx服务

[root@5d4af8a878b3 /]# nginx

[root@5d4af8a878b3 /]# ls /usr/share/nginx/html/
containerd

(13)crrl+p+q 在宿主机上把dist目录中的文件复制到opt目录下

[root@docker ~]# cp -r dist/* /opt/

(14)浏览器

2、数据库

[root@docker ~]# docker run -d --name m0 -e MYSQL_ROOT_PASSWORD=root -p3306:3306 mysql:latest

[root@docker ~]# docker ps

[root@docker ~]# docker exec -it m0 mysql -uroot -proot

连接navicat连接数据库,运行sql文件

mysql> show databases;
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| mysql               |
| performance_schema  |
| project_exam_system |
| sys                 |
+---------------------+
5 rows in set (0.00 sec)

mysql> use project_exam_system;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
3、让容器共享宿主机的/etc/localtime  让容器和宿主机时间一致

[root@docker ~]# docker run -it --name c3 centos:latest /bin/bash
[root@cf854b0b53ab /]# date
Mon Aug 26 06:38:23 UTC 2024

[root@docker ~]# docker run -it --name c4 -v /etc/localtime:/etc/localtime centos:latest /bin/bash
[root@b65bfea5d08c /]# date
Mon Aug 26 14:41:56 CST 2024
[root@docker ~]# docker exec c4 ls /    //免交互式

4、容器ip地址不稳定  --link

1. docker容器ip地址不固定,如果要作为服务器使用,就必须能够直接访问服务,不能直接使用ip,为容器设置域名,做端口映射也能保证,但是一旦停用之后端口被占用,就无法再次启动

2. docker run --link 容器名称或者id:自定义域名

3. 被link的容器必须处于启动状态,否则当前容器无法启动

[root@docker ~]# docker run -d --name m1 -e MYSQL_ROOT_PASSWORD=root mysql:latest
92f2987abebaa7a47e148a6bb78684c3f55d2c58807aeea06883cf84440c010d
[root@docker ~]# docker inspect m1

IPADDRESS:172.17.0.3

[root@docker ~]# docker run -it --name c0 --link m1:mysqldb centos:latest /bin/bash
[root@55901973e1fc /]# ping mysqldb

[root@55901973e1fc /]# cat /etc/hosts

[root@docker ~]# docker stop m1
m1
[root@docker ~]# docker run -it --name c1 centos:latest /bin/bash
地址改变 docker 域名对应ip会自动变

[root@docker ~]# docker start c0
Error response from daemon: Cannot link to a non running container: /m1 AS /c0/mysqldb
Error: failed to start containers: c0
[root@docker ~]# docker start m1
m1
[root@docker ~]# docker start c0
c0

1. docker client向dcoker daemon 发送创建容器的请求 docker run

2. docker daemon查找有无客户端需要的镜像

3. 如果没有,就到容器的镜像仓库下载需要的镜像 pull

4. 拿到容器镜像后,启动容器

[root@docker ~]# cd /var/lib/docker/
[root@docker docker]# ls
buildkit    engine-id  network   plugins   swarm  volumes
containers  image      overlay2  runtimes  tmp
[root@docker docker]# cd overlay2/
[root@docker overlay2]# ls
[root@docker ~]# rm -rf /var/lib/docker/       //删除docker目录

[root@docker ~]# ls /var/lib/docker/overlay2/

[root@docker ~]# ls /var/lib/docker/overlay2/ad171615facf703f1d9dbfe343a8a2521d54339185816052438f715cbcf3c7bd

[root@docker ~]# docker exec c0 dd if=/dev/zero of=/ahswdw.txt bs=10M count=100
[root@docker ~]# ls /var/lib/docker/overlay2/ad171615facf703f1d9dbfe343a8a2521d54339185816052438f715cbcf3c7bd/merged/

1. 在docker daemo初始状态(没有镜像的时候)/var/lib/docker不存在

2. 当docker daemon服务器启动,会自动创建dock目录

3. 在没有镜像的情况下。查看overlay2这个目录是只有两个文件,管道文件,目录(管理镜像和容器
的软连接的目录)

4. 当我们pull一个镜像之后/va r/lib/docker/overlay2下就有一个新的目录,这个目录就是cenonos的
基础目录,这个新的目录就是镜像,就是不可读的层

5.当我们使用这个镜像创建一个容器,在overlay2会添加2个目录,一个是init目录,另外一个目录就
是容器的可写层,用户对系统的修改都在可写层中进行

[root@docker ~]# tar --numeric-owner --exclude=/proc --excluede=/sys -cvf haha.tar /
 

  • 32
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值