美文网首页
Docker(一)

Docker(一)

作者: 87d6dc4b11a7 | 来源:发表于2022-01-09 08:44 被阅读0次

    CentOS 下安装 Docker

    Docker 是跨平台的解决方案,它支持在当前主流的各大平台安装,包括 Ubuntu、RHEL、CentOS、Debian 等 Linux 发行版,同时也可以在 OSX 、Microsoft Windows 等非 Linux 平台下安装使用。

    因为 Linux 是 Docker 的原生支持平台,所以推荐在 Linux 上使用 Docker。由于生产环境中使用 CentOS 较多,下面主要针对在 CentOS 平台下安装和使用 Docker 展开介绍。

    [root@localhost ~]# cat /etc/redhat-release
    CentOS Linux release 7.9.2009 (Core)
    
    卸载已有的docker

    如果你已经安装过旧版的 Docker,可以先执行以下命令卸载旧版 Docker。

    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    
    安装 Docker
    # step 1: 安装必要的一些系统工具
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    # Step 2: 添加软件源信息
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # Step 3: 更新并安装 Docker-CE
    sudo yum makecache fast
    sudo yum -y install docker-ce
    # Step 4: 开启Docker服务
    sudo service docker start
    # Step 5: 加入开机启动项
    sudo systemctl enable docker
    #查看所有仓库中所有docker版本,并选择特定版本安装
    yum list docker-ce --showduplicates | sort -r
    #可以指定某个版本安装
    sudo yum install docker-ce-17.12.1.ce
    

    安装完成后默认 docker 命令只能以 root 用户执行,如果想允许普通用户执行 docker 命令,需要执行以下命令 sudo groupadd docker && sudo gpasswd -a ${USER} docker && sudo systemctl reload docker ,执行完命令后,退出当前命令行窗口并打开新的窗口即可。

    安装完 Docker,来了解下容器的技术原理。

    容器技术原理

    Docker 是利用 Linux 的 Namespace 、Cgroups 和联合文件系统三大机制来保证实现的, 所以它的原理是使用 Namespace 做主机名、网络、PID 等资源的隔离,使用 Cgroups 对进程或者进程组做资源(例如:CPU、内存等)的限制,联合文件系统用于镜像构建和容器运行环境。

    Namespace

    Namespace 是 Linux 内核的一项功能,该功能对内核资源进行隔离,使得容器中的进程都可以在单独的命名空间中运行,并且只可以访问当前容器命名空间的资源。Namespace 可以隔离进程 ID、主机名、用户 ID、文件名、网络访问和进程间通信等相关资源。
    Docker 主要用到以下五种命名空间。
    pid namespace:用于隔离进程 ID。
    net namespace:隔离网络接口,在虚拟的 net namespace 内用户可以拥有自己独立的 IP、路由、端口等。
    mnt namespace:文件系统挂载点隔离。
    ipc namespace:信号量,消息队列和共享内存的隔离。
    uts namespace:主机名和域名的隔离。

    Cgroups

    Cgroups 是一种 Linux 内核功能,可以限制和隔离进程的资源使用情况(CPU、内存、磁盘 I/O、网络等)。在容器的实现中,Cgroups 通常用来限制容器的 CPU 和内存等资源的使用。

    联合文件系统

    联合文件系统,又叫 UnionFS,是一种通过创建文件层进程操作的文件系统,因此,联合文件系统非常轻快。Docker 使用联合文件系统为容器提供构建层,使得容器可以实现写时复制以及镜像的分层构建和存储。常用的联合文件系统有 AUFS、Overlay 和 Devicemapper 等。

    参考:https://docs.docker.com/engine/install/centos/

    相关文章

      网友评论

          本文标题:Docker(一)

          本文链接:https://www.haomeiwen.com/subject/svgecrtx.html