docker线上考试系统的数据虚拟化技术部署

线上考试系统的数据 虚拟化技术部署

1.部署前段服务器

docker run -it --name c0 -p80:80/tcp centos:latest

/bin/bash

docker run -it --name c1 -p80 centos:latest

/bin/bash # 宿主会指定⼀个⼤于等于3278的端⼝给容器

docker ps --all # 查看实际给予的端⼝

docker run -it --name c2 -p10.1.1.51::80

centos:latest /bin/bash

docker run -it --name c4 -v /opt/:/var/www/html/

centos:latest /bin/bash

# 1.将资源上传到服务器

scp -r dist/ root@192.168.71.50:~# 2创建基础容器 在服务器上

systemctl start docker.service

docker pull centos

docker run -it --name c0 centos:latest /bin/bash

# 3 在容器中修改yum源

curl -o /etc/yum.repos.d/CentOS-Base.repo

https://mirrors.aliyun.com/repo/Centos-vault-

8.5.2111.repo

yum clean all && yum makecache

# 4.在容器中安装epel

yum -y install epel-release

# 5.在容器中安装nginx

yum -y install nginx

# 6.ctrl pq

# 7.导出tar包

docker export -o centos_nginx.tar

# 8.引⼊tar包,称为镜像

docker import -m "维护世界和平" centos_nginx.tar

centos:nginx

# 9.查看镜像

docker image ls

[root@localhost ~]# docker images

REPOSITORY TAG IMAGE ID CREATED

SIZE

centos nginx 9afbddb29074 10 seconds

ago 366MBmysql latest a82a8f162e18 4 weeks ago

586MB

centos latest 5d0da3dc9764 2 years ago

231MB

# 10.停⽤c0容器,删除c0容器

# 11.创建新的centos nginx容器,在创建的同时指定端⼝,以及

挂载⽬录

docker run -it --name c0 -p80:80/tcp -v

/opt/:/usr/share/nginx/html centos:nginx /bin/bash

# 12在容器内部启动nginx服务

nginx

#ctrl p q

# 13 在宿主上把dist⽬录中的⽂件复制opt⽬录中

cp -r dist/* /opt

1.启动docker守护进程

[root@docker001 ~]# systemctl start docker.service2.搜索mysql镜像

[root@docker001 ~]# docker search mysql

NAME DESCRIPTION

STARS OFFICIAL

mysql MySQL is a widely used, open

source relation… 15322 [OK]

bitnami/mysql Bitnami container image for

MySQL 114

google/mysql MySQL server for Google

Compute Engine 25

elestio/mysql Mysql, verified and packaged

by Elestio 0

rapidfort/mysql RapidFort optimized, hardened

image for MySQL 25

circleci/mysql MySQL is a widely used, open

source relation… 30

ubuntu/mysql MySQL open source fast,

stable, multi-thread… 64

javanile/mysql MySQL for development

0

eclipse/mysql Mysql 5.7, curl, rsync

1

ilios/mysql Mysql configured for running

Ilios 1

cimg/mysql

3bitnamicharts/mysql

0

mirantis/mysql

0

docksal/mysql MySQL service images for

Docksal - https://d… 0

linuxserver/mysql A Mysql container, brought to

you by LinuxSe… 41

datajoint/mysql MySQL image pre-configured to

work smoothly … 2

ddev/mysql ARM64 base images for ddev

dbserver-mysql-8.… 1

phpmyadmin phpMyAdmin - A web interface

for MySQL and M… 1017 [OK]

vulhub/mysql

0

drud/mysql

1

nasqueron/mysql

1

corpusops/mysql

https://github.com/corpusops/docker-images/ 0

jumpserver/mysql

1

openeuler/mysql

0encoflife/mysql

0

3.拉取mysql镜像

[root@docker001 ~]# docker pull mysql

Using default tag: latest

latest: Pulling from library/mysql

6e839ac3722d: Pull complete

ad912193ad5f: Pull complete

25d13d87fd8d: Pull complete

004d383c75ef: Pull complete

6d9bbc82a0b8: Pull complete

81fec07ea550: Pull complete

83357cb2d3a5: Pull complete

8ffe968b82c1: Pull complete

30dfd9a7ed57: Pull complete

35844ae33cbe: Pull complete

Digest:

sha256:86cdfe832c81e39a89cfb63c3fde1683c41cc00ef91e

67653c9c1df0ba80f454

Status: Downloaded newer image for mysql:latest

docker.io/library/mysql:latest

[root@docker001 ~]# docker images

REPOSITORY TAG IMAGE ID CREATED

SIZEcentos nginx 12fea1b890de 13 hours

ago 366MB

centos java17 b6bf774de7bb 14 hours

ago 550MB

centos_httpd v0 fffc96d791d5 39 hours

ago 309MB

centos_yum v0 191d9c84f461 39 hours

ago 260MB

mysql latest a82a8f162e18 4 weeks ago

586MB

centos latest 5d0da3dc9764 2 years ago

231MB

4.创建镜像容器

[root@docker001 ~]# docker run -d --name my01 -e  MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:latest

9338d672d3d819e5eb35fcf9fb5cd8fe88daf5a84b00ab0a4b3

3fc9b9ba87d8a

# -d 后台运⾏,并输出hashcode

# -e MYSQL_ROOT_PASSWORD=root 设置mysql密码

# -p 映射3306端⼝

  1. 管理mysql

[root@docker001 ~]# docker exec -it my01 mysql -

uroot -proot

mysql: [Warning] Using a password on the command

line interface can be insecure.

Welcome to the MySQL monitor. Commands end with ;

or \g.

Your MySQL connection id is 9

Server version: 9.0.1 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its

affiliates.

Oracle is a registered trademark of Oracle

Corporation and/or its

affiliates. Other names may be trademarks of their

respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear

the current input statement.

让容器的时间和宿主机一致

让容器共享宿主机的/etc/localtime

[root@docker0 ~]# docker run -it --name c0 centos:latest /bin/bash

[root@2115eaa4dc02 /]# date

Mon Aug 26 06:37:37 UTC 2024

Ctrl p q

[root@docker0 ~]# docker run -it --name c2 -v /etc/localtime:/etc/localtime centos:latest /bin/bash

[root@7aca1ba22cec /]# date

Mon Aug 26 14:40:04 CST 2024

容器的ip地址不稳定link

--link 容器名:别名

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

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

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

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

1c889f1939417936af1f147c390b539476447eb1bcf04ce8a676438bcca873fd

[root@docker0 ~]# docker inspect m0

"IPAddress": "172.17.0.2",

[root@docker0 ~]# docker run -it --name c0 --link m0:mysqldb

 centos:latest /bin/bash

[root@4bf632f7c6fe /]# ping mysqldb

PING mysqldb (172.17.0.2) 56(84) bytes of data.

64 bytes from mysqldb (172.17.0.2): icmp_seq=1 ttl=64 time=0.184 ms

[root@4bf632f7c6fe /]# cat /etc/hosts

127.0.0.1       localhost

::1     localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

172.17.0.2      mysqldb 1c889f193941 m0

172.17.0.3      4bf632f7c6fe

[root@docker0 ~]# docker stop m0

m0

[root@docker0 ~]# docker run -it --name c1 centos:latest /bin/bash

[root@7fc0f9ada135 /]# [root@docker0 ~]#

[root@docker0 ~]# docker inspect c1

 "IPAddress": "172.17.0.2",

[root@docker0 ~]# docker start m0

m0

[root@docker0 ~]# docker inspect m0

"IPAddress": "172.17.0.4",

[root@docker0 ~]# docker attach c0

[root@4bf632f7c6fe /]# ping mysqldb

PING mysqldb (172.17.0.4) 56(84) bytes of data.

64 bytes from mysqldb (172.17.0.4): icmp_seq=1 ttl=64 time=0.141 ms

每次修改都修改了/etc//hosts文件

[root@4bf632f7c6fe /]# cat /etc/hosts

127.0.0.1       localhost

::1     localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

172.17.0.4      mysqldb 1c889f193941 m0

172.17.0.3      4bf632f7c6fe

  1. 在docker daemo初始状态(没有镜像的时候) /var/lib/docker不存在
  2. 当docker daemon服务器启动,会自动创建docker目录
  3. 在没有镜像的情况下,查看overlay2这个目录只有两个文件,管道文件,目录(管理镜像和容器的软连接目录)
  4. 当我们pull一个镜像后/var/lib/docker/overlay2下就有一个新目录,这个目录就是centos的基础目录,这个新目录就是镜像,就是不可读的层
  5. 当我们使用这个镜像创建一个容器,在overlay2会添加2个目录,一个是init目录,另外一个目录就是镜像的可写层

[root@docker0 ~]# systemctl stop docker.service

[root@docker0 ~]# rm -rf /var/lib/docker/

[root@docker0 ~]# systemctl start docker

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

buildkit    engine-id  network   plugins   swarm  volumes

containers  image      overlay2  runtimes  tmp

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

backingFsBlockDev  l

[root@docker0 ~]# docker pull centos

Using default tag: latest

latest: Pulling from library/centos

a1d0c7532777: Pull complete

Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177

Status: Downloaded newer image for centos:latest

docker.io/library/centos:latest

[root@docker0 ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

centos       latest    5d0da3dc9764   2 years ago   231MB

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

02cd71150a75d00200a702a8790862a723a3bec9ec1e8027c2eb320906a9e6c6

backingFsBlockDev

l

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

diff  link

[root@docker0 ~]# ls /var/lib/docker/overlay2/02cd71150a75d00200a702a8790862a723a3bec9ec1e8027c2eb320906a9e6c6/diff/

bin  home   lost+found  opt   run   sys  var

dev  lib    media       proc  sbin  tmp

etc  lib64  mnt         root  srv   usr

[root@docker0 ~]# docker run -it --name c0 centos:latest /bin/bash

[root@14a5325b2169 /]# [root@docker0 ~]#

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

02cd71150a75d00200a702a8790862a723a3bec9ec1e8027c2eb320906a9e6c6

aeffabaf23c400af84a96fa3c037258d5e22c59c371804119f346d2a5392d296

aeffabaf23c400af84a96fa3c037258d5e22c59c371804119f346d2a5392d296-init

backingFsBlockDev

l

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

diff  link  lower  merged  work

[root@docker0 ~]# docker exec c0 dd if=/dev/zero of=/zhangsanlisi.txt bs=10M count=100

100+0 records in

100+0 records out

1048576000 bytes (1.0 GB, 1000 MiB) copied, 2.60088 s, 403 MB/s

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

bin  home   lost+found  opt   run   sys  var

dev  lib    media       proc  sbin  tmp  zhangsanlisi.txt

etc  lib64  mnt         root  srv   usr

[root@localhost ~]# tar --numeric-owner --exclude=/proc --exclude=/sys -cvf tjj.tar /

[root@localhost ~]# scp tjj.tar root@192.168.2.13:~

[root@docker0 ~]#docker import -m 我要去上天“ tjj.tar jj:v0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值