云计算实训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

相关推荐
半部论语5 分钟前
openEuler 安装 LibreOffice 技术指南
linux
r-t-H5 分钟前
Docker进阶与容器编排实践-第二章
运维·docker·容器·dockerfile·docker compose·docker网络
爱装代码的小瓶子10 分钟前
muduo库 --socket的封装
服务器·开发语言·php
凡人叶枫10 分钟前
Effective C++ 条款13:以对象管理资源(RAII)
java·linux·开发语言·c++·嵌入式开发
“码”力全开13 分钟前
深入解构企业级 AI 视频管理平台:基于 Docker 的异构计算架构,支持 GB28181/RTSP 多协议接入与全面源码交付
人工智能·docker·音视频
周明..17 分钟前
如何评价深度学习相关顶级期刊论文难复现的问题?
深度学习·论文写作
高洁0121 分钟前
人人可用的智能体来了
python·深度学习·机器学习·数据挖掘·知识图谱
m0_7373025822 分钟前
OpenClaw:不止于对话,能真正动手的开源 AI 智能体
服务器
装不满的克莱因瓶23 分钟前
NLP中的卷积神经网络CNN——从图像卷积到文本特征提取的跨界应用
人工智能·pytorch·python·深度学习·神经网络·自然语言处理·cnn
红信鸽24 分钟前
5G-A+边缘计算:低延迟应用爆发的真正推手
云计算