侧边栏壁纸
博主头像
成云博主等级

行动起来,活在当下

  • 累计撰写 40 篇文章
  • 累计创建 25 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

Docker基础知识(转载)

佳航
2023-04-05 / 0 评论 / 0 点赞 / 481 阅读 / 4677 字
  • Docker 底层是linux容器实现 Docker是一个容器技术的应用,只是实现层
  • linux容器隔离与共享。(cgroups控制组和Namespace)
    Linux一共构建了6种不同的Namespace,用于不同场景下的隔离
  1. Mount - 隔离文件系统挂载点
  2. UTS - 隔离主机名和域名
  3. IPC - 隔离进程间通信资源
  4. PID - 隔离PID空间
  5. Network - 隔离网络接口
  6. User - 隔离用户/用户组空间
    二、Docker简介

1、是什么
Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在本地编译通过的容器可以批量的在生产环境上部署。
Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱与集装箱之前没有影响。Docker是一个开放平台,使开发人员和管理员可以在称为容器的松散隔离的环境中构建镜像、交互和运行分布式应用程序,以便在开发、QA和生产环境之间进行高效的应用程序生命周期管理。

  1. Docker三个重要组件
    image.png
    (1)镜像(images)

一个特殊的文件系统。操作系统分为内核和用户空间,对于Linux来说,内核启动后会挂载root文件系统为其提供用户控件的支持。而Docker镜像,就相当于是一个root文件系统。

除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含一些为运行时准备的配置参数。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

镜像实际是由多层文件系统联合组成。镜像构建时,会一层一层构建,前一层是后一层的基础。每一层构建完就不会再改变,后一层上的任何改变只发生在当前层。比如:删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅把当前层标记为该文件已删除。

分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。

(2)容器(Container)

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、暂停、停止、删除等。

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行与属于自己独立的命名空间,容器也是分层存储。

容器存储层的生命周期跟容器一样,容器消亡时,容器存储层也会消亡,任何保存于容器存储层的信息都会丢失。

容器不应该向其存储层内写入任何数据,容器存储层也要保持无状态化。所有的文件写入操作,都应该使用数据卷、或者绑定宿主目录,在这些位置的读写会跳过存储层,直接对宿主发生读写,其性能和稳定性更高。容器消亡后数据卷的数据不会丢失。

容器在整个应用程序生命周期工作流中提供以下优点:隔离性、可移植性、灵活性、可伸缩性和可控性。 最重要的优点是可在开发和运营之间提供隔离。

(3)仓库(Registry)

Docker Registry是一个集中存储、分发镜像的服务。

一个Registry可以包含多个仓库(Repository),每个仓库只包含一种软件,但可以包含多个标签(tag,也就是版本),每个标签对应一个镜像。image.png
3、docker持续开发工作流
image.png
二、Docker安装、卸载

环境:Centos7
1、安装

1、先更新yum安装包sudo yum update
2、sudo yum install -y yum-utils
3.  sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
 sudo yum install docker-ce docker-ce-cli containerd.io
3、安装之后查看docker版本,也可以用docker infodocker version
4、如果出现Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?  
 启动docker service docker start 
5、配置开机启动sudo systemctl enable docker

阿里云获取镜像加速器地址https://cr.console.aliyun.com/undefined/instances/mirrors
脚本安裝方法:
使用脚本自动安装
在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装:
若你想安装测试版的 Docker, 请从 test.docker.com 获取脚本
curl -fsSL test.docker.com -o get-docker.sh
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
sudo sh get-docker.sh --mirror AzureChinaCloud

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。
启动 Docker
$ sudo systemctl enable docker
$ sudo systemctl start docker

2、卸载
(1)首先查看安装的Docker yum包
yum list installed | grep docker
(2)依次卸载yum包
yum -y remove 包名
(3)卸载掉之后,依次删除目录
rm -rf /etc/dockerrm -rf /run/dockerrm -rf /var/lib/dockershimrm -rf /var/lib/docker
如果出现如下错误:
rm: cannot remove ‘/var/lib/docker/containers’: Device or resource busy
执行如下命令:
cat /proc/mounts|grep containersumount /var/lib/docker/containers/

0

评论区