云计算实训36——mysql镜像管理、同步容器和宿主机时间、在容器外执行容器内命令、容器的ip地址不稳定问题、基础镜像的制作、镜像应用

本文主要是介绍云计算实训36——mysql镜像管理、同步容器和宿主机时间、在容器外执行容器内命令、容器的ip地址不稳定问题、基础镜像的制作、镜像应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

1.部署前段服务器

步骤一:将资源上传到服务器

将dist.zip上传给服务器  

下载unzip的包

yum -y install unzip

解压

unzip dist.zip 

步骤二:创建基础容器在服务器上

启动服务

systemctl start docker.service

拉取镜像

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

步骤三:在容器中修改yum源

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault8.5.2111.repo yum clean all && yum makecache

步骤四:在容器中安装epel

yum -y install epel-release

步骤五:在容器中安装nginx

yum -y install nginx

步骤六:退出

ctrl p+q

步骤七:导出tar包

docker export -o centos_nginx.tar

步骤八:引⼊tar包,称为镜像

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

步骤九:查看镜像

docker image ls

docker images

REPOSITORY   TAG       IMAGE ID               CREATED        SIZE
centos               nginx     1c2a0901c77a         2 hours ago      368MB
centos               httpd      e9a1ee725b43        3 days ago        311MB
centos               yum       82ca12d9b058         3 days ago        261MB
centos               latest     5d0da3dc9764         2 years ago       31MB

步骤十:停⽤c0容器,删除c0容器

步骤十一:创建新的centos nginx容器,在创建的同时指定端⼝,以及挂载⽬录

docker run -it --name c0 -p80:80/tcp -v /opt/:/usr/share/nginx/html centos:nginx /bin/bash

步骤十二:在容器内部启动nginx服务

nginx

#退出

ctrl p +q

步骤十三:在宿主上把dist⽬录中的⽂件复制opt⽬录中

cp -r dist/* /opt

2.启动docker守护进程

systemctl start docker.service

3.搜索mysql镜像

docker search mysql

4.拉取mysql镜像

拉取镜像

docker pull mysql

查看镜像

docker images

REPOSITORY   TAG       IMAGE ID               CREATED               SIZE
centos               nginx     1c2a0901c77a         2 hours ago           368MB
centos               httpd      e9a1ee725b43        3 days ago            311MB
centos               yum       82ca12d9b058         3 days ago            261MB
mysql                latest     a82a8f162e18          4 weeks ago          586MB
centos               latest     5d0da3dc9764         2 years ago           231MB

5.创建镜像容器

docker run -d --name my01 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:latest# -d 后台运⾏,并输出hashcode# -e MYSQL_ROOT_PASSWORD=root 设置mysql密码# -p 映射3306端⼝

6.管理mysql

docker exec -it my01 mysql -uroot -proot

7.浏览器访问

192.168.1.32

二、让容器时间和宿主机时间⼀致

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

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

查看日期

[root@6caf88cce814 /]# date

Sat Aug 24 13:36:54 UTC 2024

[root@docker001 ~]# docker run -it --name c1 -v /etc/localtime:/etc/localtime centos:nginx /bin/bash

[root@f01eb51c8a59 /]# date

Sat Aug 24 21:38:29 CST 2024

[root@docker001 ~]# docker exec c0 date

Sat Aug 24 13:40:14 UTC 2024

[root@docker001 ~]# docker exec c1 date

Sat Aug 24 21:40:19 CST 2024

三、在容器外执行容器内的命令

# 容器内部已经安装的指令⽅可执⾏,否则⽆法执⾏

[root@docker001 ~]# docker exec c0 ifconfig

OCI runtime exec failed: exec failed: unable to

start container process: exec: "ifconfig": executable file not found in $PATH: unknown [root@docker001 ~]# docker exec c0 ls /

bin dev etc home lib lib64 lost+found media

四、容器的ip地址不稳定问题

docker容器的ip地址是不固定,如果要作为服务器使⽤,就必须能够直接访问服务,不能直接使⽤ip,为容器设置域名,做端⼝映射也能保证,确定是⼀旦停⽤之后端⼝被占⽤,就⽆法再次启动,此时则需要做link

语法:

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

注:被link容器必须处于启动状态,否则当前容器⽆法启动

--link 容器名:别名

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

[root@docker001 ~]# docker run -it --link c0:mysqldb --name c1 centos:nginx /bin/bash

[root@ba46c0e4055d /]# 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.057 ms

64 bytes from mysqldb (172.17.0.2): icmp_seq=2 ttl=64 time=0.044 ms

64 bytes from mysqldb (172.17.0.2): icmp_seq=3 ttl=64 time=0.039 ms

测试

# 暂停服务

[root@docker001 ~]# docker stop c0 c1

c0

c1

# 先启动主动依赖容器

[root@docker001 ~]# docker start c1

# ⽆法启动,提示被link的容器没有启动

Error response from daemon: Cannot link to a non running container: /c0 AS /c1/mysqldb Error: failed to start containers: c1

# 先启动被依赖的容器

[root@docker001 ~]# docker start c0

c0

# 在启动主动依赖的容器

[root@docker001 ~]# docker start c1

c1

测试 使⽤⼀个容器占⽤172.17.0.2,测试

# 停⽤容器

[root@docker001 ~]# docker stop c0 c1

c0

c1

# 创建新容器 占⽤172.17.02

[root@docker001 ~]# docker run -it --name c2 centos:nginx /bin/bash

# 启动 c0 c1

[root@docker001 ~]# docker start c0 c1

c0

c1

# 在c1容器ping别名

[root@docker001 ~]# docker exec c1 ping mysqldb

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

64 bytes from mysqldb (172.17.0.3): icmp_seq=1 ttl=64 time=0.157 ms

64 bytes from mysqldb (172.17.0.3): icmp_seq=2 ttl=64 time=0.037 ms

64 bytes from mysqldb (172.17.0.3): icmp_seq=3 ttl=64 time=0.056 ms

每次启动都修改了/ets/hosts⽂件

[root@docker001 ~]# docker exec c1 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.3 mysqldb 20f05670b7df c0
172.17.0.4 ba46c0e4055d

五、基础镜像的制作

1.进程⽬录

ls /proc/

2.sys⽬录是内核⽂件保存位置,不允许修改

3.排除以上2个⽬录,并且将⽤户设置为数字

[root@docker001 sys]# tar --numeric-owner -- exclude=/proc --exclude=/sys -cvf centos7.tar /

4.将项⽬移动到dockerserver主机上

scp centos.tar root@192.168.1.132:~

5.查看tar包

[root@docker001 ~]# ls

anaconda-ks.cfg centos7.tar centos_java17 frp initserver.sh jdk-17_linux-x64_bin.tar.gz

5.加载镜像

[root@docker001 ~]# docker import -m "冬冬最棒!" centos7.tar me:me00

6.查看镜像

[root@docker001 ~]# docker images

REPOSITORY     TAG       IMAGE ID               CREATED                 SIZE

me                       me00      64abc01ff8c4           3 minutes ago         2.55GB

centos                 nginx      12fea1b890de          24 hours ago           366MB

centos                 java17     b6bf774de7bb         24 hours ago           550MB

centos_httpd        v0           fffc96d791d5           2 days ago              309MB

centos_yum          v0         191d9c84f461          2 days ago              260MB

mysql                 latest       a82a8f162e18          4 weeks ago            586MB

centos                latest       5d0da3dc9764         2 years ago             231MB

7.创建容器

[root@docker001 ~]# docker run -it --name c00 me:me00 /bin/bash

查看

[root@4199382c490f /]# ls

bin   dev home lib64 mnt proc run   srv tmp var boot etc lib   media opt root sbin sys usr 

六、应用镜像

1.根据基础镜像创建容器

docker run -it --name c0 centos_yum:v0 /bin/bash

2.安装应⽤

yum -y install httpd

3.退出

ctrl p + q

4.使用commit应用镜像

[root@docker001 ~]# docker commit c0 centos:httpd

查看镜像

[root@docker001 ~]# docker images

REPOSITORY     TAG       IMAGE ID               CREATED          SIZE

centos                 httpd       bbf5ed97db84        3 minutes ago    340MB

这篇关于云计算实训36——mysql镜像管理、同步容器和宿主机时间、在容器外执行容器内命令、容器的ip地址不稳定问题、基础镜像的制作、镜像应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110947

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间