实训day36(8.26)

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

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

1、部署前端服务器

project_exam_system.sql数据库文件

   dist网络资源

1.将资源上传到服务器
C:\Users\89765>scp -r "D:\青岛实训\project_exam_system\dist" root@192.168.8.196:~/

2.创建基础容器 在服务器上
[root@docker ~]# systemctl start docker

[root@docker ~]# docker  pull centos

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

3.在容器中修改yum源
[root@a87ca8be2791 /]# rm -rf /etc/yum.repos.d/*

[root@a87ca8be2791 /]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@a87ca8be2791 /]# yum clean all 
[root@a87ca8be2791 /]# yum makecache

4.在容器中安装epel
[root@a87ca8be2791 /]# yum -y install epel-release

5.在容器中安装nginx
[root@a87ca8be2791 /]# yum -y install nginx 

6.CTRL+P+Q
7.导出tar包

[root@docker ~]# docker export -o centos_nginx.tar c2

8.引入tar包,称为镜像

[root@docker ~]# docker import -m "想回家" centos_nginx.tar centos:nginx

 

9.停用c2容器,删除c2容器
[root@docker ~]# docker stop  c2
c2
[root@docker ~]# docker rm c2
c2

10.创建新的centos nginx容器,同时指定端口,以及挂载目录
[root@docker ~]# docker run -it --name c2 -p80:80/tcp -v /opt/:/usr/share/nginx/html/ centos:nginx /bin/bash

[root@e6addfb6bf6d /]# nginx
[root@b565af57ecb3 /]# ls /usr/share/nginx/html/
assets    containerd  favicon.ico  index.html

11.在容器内部启动nginx CTRL+P+Q
[root@docker ~]# cp -r dist/* /opt/

12.在宿主机上把dist目录中的文件复制到opt目录中
[root@docker ~]# cp -r dist/* /opt/

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

2、数据库 
[root@docker ~]# docker pull mysql

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

[root@docker ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                                                  NAMES
3db02812f30d   mysql:latest   "docker-entrypoint.s…"   26 seconds ago   Up 25 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   m0
[root@docker ~]# docker exec -it m0 mysql -uroot -proot

用navicat连接宿主机,然后上传sql文件

mysql> show databases;
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| mysql               |
| performance_schema  |
| project_exam_system |
| sys                 |
+---------------------+
mysql> use project_exam_system;
mysql> show tables;
+-------------------------------+
| Tables_in_project_exam_system |
+-------------------------------+
| admin                         |
| category                      |
| com_city                      |
| com_nation                    |
| course                        |
| dept                          |
| dept_student                  |
| exam                          |
| exam_dept                     |
| exam_process                  |
| loginlog                      |
| major                         |
| menu                          |
| paper                         |
| paper_topic                   |
| role                          |
| role_admin                    |
| role_menu                     |
| semester                      |
| student                       |
| teacher                       |
| topic                         |
| user                          |
+-------------------------------+
 

 3、让容器时间和宿主机时间同步
[root@docker ~]# docker run -it --name c3 centos:latest /bin/bash 
[root@9ed7ae58448f /]# date
Mon Aug 26 06:38:07 UTC 2024
[root@9ed7ae58448f /]# [root@docker ~]# 

1.让容器共享宿主的/etc/localtime
[root@docker ~]# docker run -it --name c4 -v /etc/localtime:/etc/localtime centos:latest /bin/bash
[root@98ffe8dffbeb /]# date
Mon Aug 26 14:39:54 CST 2024

4、exec命令
[root@docker ~]# docker exec c4 ls /

5、使用link docker容器IP地址不固定,如果要作为服务器使用,就必须能够直接访问服务,不能直接使用IP,为了容器设置域名,做端口映射也可以保证,但是一旦端口占用,就无法启动了 
语法: docker run -link 容器名称/id:自定义域名

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

[root@docker ~]# docker run -d --name m0 -e MYSQL_ROOT_PASSWORD=root mysql:latest
[root@docker ~]# docker run -it --name c0 --link m0:mysqldb centos:latest /bin/bash
[root@f6a428495b41 /]# 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.083 ms
64 bytes from mysqldb (172.17.0.2): icmp_seq=2 ttl=64 time=0.052 ms
[root@f6a428495b41 /]# cat /etc/hosts

172.17.0.2    mysqldb d0d9d505fd15 m0
172.17.0.3    f6a428495b41
[root@docker ~]# docker stop m0

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

[root@docker ~]# docker start m0
[root@docker ~]# docker attach c0
[root@f6a428495b41 /]# 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.091 ms
64 bytes from mysqldb (172.17.0.4): icmp_seq=2 ttl=64 time=0.053 ms
[root@f6a428495b41 /]# cat /etc/hosts
172.17.0.4    mysqldb d0d9d505fd15 m0
172.17.0.3    f6a428495b41

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

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

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

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

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


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

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

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

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

[root@docker ~]# systemctl stop docker
[root@docker ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket
[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 overlay2]# cd
[root@docker ~]# rm -rf /var/lib/docker/

[root@docker ~]# systemctl start docker
[root@docker ~]# ls /var/lib/docker/
buildkit    engine-id  network   plugins   swarm  volumes
containers  image      overlay2  runtimes  tmp
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES[root@docker ~]# docker pull centos
[root@docker ~]# ls /var/lib/docker/overlay2/[root@docker ~]# docker run -it --name c0 centos:latest /bin/bash[root@docker ~]# ls /var/lib/docker/overlay2/3b75c5c682b0f40acd84fc2ecb42c6db8f2de904610b728bafb08dff880d01bc

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

[root@docker ~]# ls /var/lib/docker/overlay2/3b75c5c682b0f40acd84fc2ecb42c6db8f2de904610b728bafb08dff880d01bc/merged/
[root@docker ~]# tar --numeric-owner --exclude=/proc --exclude=/sys -cvf lxe.tar /
[root@docker ~]# rm -rf lxe.tar 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值