Docker学习笔记

    科技2022-08-17  118

    Docker

    A.Docker介绍

    宿主机->大海 docker->鲸鱼 容器->集装箱

    Docker为什么会出现

    开发 vs 运维

    一个代码,在开发的机器上能够正常运行,而把代码交给运维后,在运维的机器上不能运行。这是由于开发和运维的环境不同,那么如何解决这个问题呢?

    ans: 我们不再单纯把代码给运维,而是把我们的代码加上各种中间件,系统,环境,配置,依赖等各种东西打成一个镜像,直接把镜像给运维,运维就可以直接运行。每个软件就是一个集装箱,相互隔离。一只鲸鱼就是一个镜像。

    称之为:一次封装,到处运行!!!

    就像是宠物店买的小金鱼,你直接把金鱼拿回来放到自己家的鱼缸里,金鱼活不成,金鱼只能在原来的鱼缸里面活,所以就直接把鱼缸也一起买来。

    Docker是什么

    解决了运行环境和配置问题的软件容器,方便做持续继承并有助于整体发布的容器虚拟化技术。

    Docker和虚拟机的区别

    客户端通过守护进程来操作docker容器

    B.Docker安装

    https://www.runoob.com/docker/centos-docker-install.html

    这个就行

    curl -sSL https://get.daocloud.io/docker | sh

    配置阿里云镜像加速

    从阿里云镜像服务获取加速地址/etc/docker/daemon.json配置如下 { "registry-mirrors":["https://xxxxx.mirror.aliyuncs.com"] }

    C.Docker常用命令

    这个不是大问题,直接百度得了

    D.Docker镜像原理

    联合文件系统

    就像是一个花卷一样,可以把文件一层一层往上叠docker镜像的基础对外只暴露一个文件系统

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DQg6mO9O-1601886843333)(https://raw.githubusercontent.com/suyan-liang/picgo/main/photos/20201005162742.png)]

    镜像加载原理 && centos镜像为什么这么小?

    镜像就是一个小型精简的LinuxLinux启动的时候需要bootfs来进行引导rootfs是具体的发行版系统bootfs可以共用,所以镜像的centos只需要rootfs,所以很小

    为什么Docker中的Tomcat这么大?

    如下,一层一层包起来那么文件大小是如何计算?共享的算在内吗?

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S1JhI9rz-1601886843340)(https://raw.githubusercontent.com/suyan-liang/picgo/main/photos/20201005162757.png)]

    为什么docker要采用这种分层结构

    docker中镜像的每一层都可以被共享

    docker镜像的commit

    docker commit -a="zs" -m="some changes" 容器id 新名字:tag

    docker中如何进入容器中的文件夹

    docker exec -it 容器id /bin/bash

    docker中如何运行Tomcat?

    docker run -it -p 8080:8090 镜像id->交互运行

    docker run -d -p 8080:8090 镜像id->后台运行

    docker中如何修改Tomcat中的文件?

    在容器中不可以使用vi去编辑文件,如果想修改配置文件可以在容器外部修改然后复制到容器之中

    docker cp 本机文件 容器名:文件夹 注意这个文件夹要全,因为一个容器就是一个小的Linux

    docker cp /dubbo.properties tomcat-01:/usr/local/tomcat/webapps/dubbo-admin/WEB-INF

    镜像修改后要重新commit吗?

    要,修改后需要提交才能保存

    E.容器数据卷

    将docker中产生的数据持久化,类似于redis的rdb和aof,就相当于在主机和容器之间进行绑定

    也可以实现容器间的数据共享

    如何在宿主机和容器之间进行数据绑定?

    通过命令

    docker run -it -v 宿主机下绝对路径:容器下的绝对路径 镜像名

    docker run -it -v /host:/container 831691599b88

    docker run -it -v /host:/container:ro 831691599b88–>如果是ro的话代表只读,此时容器中无法进行修改

    通过DockerFile

    特征

    宿主机和容器之间的数据会共享,更新,保持一致容器停止退出后,主机修改后数据依然同步

    it -v /host:/container:ro 831691599b88`–>如果是ro的话代表只读,此时容器中无法进行修改

    通过DockerFile

    特征

    宿主机和容器之间的数据会共享,更新,保持一致容器停止退出后,主机修改后数据依然同步
    Processed: 0.030, SQL: 9