DOCKER学习总结

这里写目录标题

一、Docker安装

1.1 在线安装

  • 查看是否安装docker

    yum list installed | grep docker
    

    或者用docker -v 查看当前系统版本,来判断是否安装docker

    docker -v
    
  • 安装docker

    yum -y install docker
    
  • Linux默认安装位置
    默认安装路径:/var/lib/docker
    镜像位置:/var/lib/docker/image
    容器位置:/var/lib/docker/containers

  • 启动docker

    systemctl start docker
    

1.2 离线安装

下载安装包

下载地址:https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz。其它版本可打开以下页面下载https://download.docker.com/linux/static/stable/x86_64/

安装配置

  • 上传压缩包到服务器

  • 解压,tar -xvf docker-24.0.7.tgz

  • 将解压出来的docker文件内容移动到 /usr/bin/ 目录下,cp docker/* /usr/bin/

  • 注册编辑docker服务,vi /etc/systemd/system/docker.service,内容如下

    bash 复制代码
    [Unit]
    Description=Docker Application Container Engine
    Documentation=https://docs.docker.com
    After=network-online.target firewalld.service
    Wants=network-online.target
    
    [Service]
    Type=notify
    # the default is not to use systemd for cgroups because the delegate issues still
    # exists and systemd currently does not support the cgroup feature set required
    # for containers run by docker
    ExecStart=/usr/bin/dockerd
    ExecReload=/bin/kill -s HUP $MAINPID
    # Having non-zero Limit*s causes performance problems due to accounting overhead
    # in the kernel. We recommend using cgroups to do container-local accounting.
    LimitNOFILE=infinity
    LimitNPROC=infinity
    LimitCORE=infinity
    # Uncomment TasksMax if your systemd version supports it.
    # Only systemd 226 and above support this version.
    #TasksMax=infinity
    TimeoutStartSec=0
    # set delegate yes so that systemd does not reset the cgroups of docker containers
    Delegate=yes
    # kill only the docker process, not all processes in the cgroup
    KillMode=process
    # restart the docker process if it exits prematurely
    Restart=on-failure
    StartLimitBurst=3
    StartLimitInterval=60s
    
    [Install]
    WantedBy=multi-user.target

启动服务

bash 复制代码
systemctl daemon-reload
systemctl enable docker && systemctl start docker

1.3 配置镜像

在daemon.json文件中,配置阿里云的镜像加速器地址,如下所示:

{

"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]

}

保存daemon.json文件。

重启Docker服务以应用新的配置:

sudo systemctl daemon-reload

sudo systemctl restart docker

1.4 Docker启动相关命令

  • 启动docker

    systemctl start docker
    
  • 停止docker

    systemctl stop docker
    
  • 重启docker

    systemctl restart docker
    
  • 查看docker状态

    systemctl status docker
    

二、Docker三大核心概念

Docker的三大核心概念是镜像(Image)、容器(Container)和仓库(Repository)。

2.1 镜像

镜像是一个只读的模板,用来创建Docker容器。里面包含一个完整的操作系统环境,里面包含了程序和必要的以来文件。

  • 查看镜像

    docker images
    
  • 搜索镜像

    docker search 镜像名称
    
  • 拉取镜像

    docker pull 镜像名称
    
  • 删除镜像

    docker rmi 镜像ID
    
  • 删除所有镜像

    docker rmi `docker images -q`
    

2.2 容器

容器是从镜像创建的运行实例,可以运行、开始、停止、删除等。每个容器是相互隔离的、保证安全的平台。

  • 查看正在运行的容器

    docker ps 
    
  • 查看所有容器

    docker ps -a
    
  • 查看最后一次运行的容器

    docker ps -l
    
  • 查看停止的容器

    docker ps -f status=exited
    
  • 停止与启动容器

    docker start 容器名称(或者容器ID)
    
    docker stop 容器名称(或者容器ID)
    
  • 交互式方式创建容器

    docker run -it --name=容器名称 镜像名称:标签 /bin/bash
    
    exit
    
  • 守护式方式创建容器

    docker run -di --name=容器名称 镜像名称:标签
    

    登录守护式容器方式

    docker exec -it 容器名称 (或者容器ID)  /bin/bash
    

2.3 仓库

仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上 往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的 标签(tag)。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

2.3.1 公有仓库

公有仓库是指可以供用户面免费使用的Docker镜像仓库,用户可以在其中存储和分享自己的Docker镜像。Docker官方提供了Docker HUb公有仓库,其中包含了大量的Docker镜像,用户可以通过搜索和下载这些镜像来快速部署和运行应用程序。

2.3.2 私有仓库

私有仓库是指用户自己搭建的Docker镜像仓库,用于存储和管理自己的Docker镜像。相比于公有仓库,私有仓库更加安全和可控,用户可以完全掌控自己的镜像,避免了公有仓库的镜像被篡改或者存在漏洞而导致的安全问题。

私有仓库可以部署在本地服务器或者云服务器上,用户可以根据自己的需求进行扩容和优化。

Docker官方提供了Docker Registry作为私有仓库的解决方案,用户可以在其中搭建自己的私有仓库。使用私有仓库可以提高应用程序的安全性和可控性。

  • 安装Docker Registry

    Docker Registry是Docker 官方提供的镜像仓库,可以用来搭建私有仓库。可以通过命令来拉取Docker Registry镜像:

    docker pull registry
    
  • 运行Docker Registry容器

    可以通过命令来运行Docker Registry容器:

    docker run -d -p 5000:5000 --name  registry registry
    

    其中,-p 5000:5000表示将容器内部的5000端口映射到主机的5000端口,--name registry表示指定容器的名称为 registry 。

  • 配置Docker客户端

    在使用私有仓库时,需要在Docker客户端配置私有仓库的地址,可以通过命令来:

    echo '{"insecure-registries":["<私有仓库地址>:<端口号>"]}' > /etc/docker/daemon.json
    

    配置完成后,需要重启 Docker 服务:

    ```

    docker restart docker

    复制代码
  • 推送和拉取镜像

    配置完成后,就可以使用docker push命令在推送镜像到私有仓库,使用docker pull命令来从私有仓库拉取镜像,docker tag 为镜像打上标签。

    docker tag <镜像名称> <私有仓库地址>:<端口号>/<镜像名称>
    
    docker push <私有仓库地址>:<端口号>/<镜像名称>
    
    docker pull <私有仓库地址>:<端口号>/<镜像名称>
    

二、容器与虚拟机比较

下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。

特性 容器 虚拟机
启动速度 极快 (通常在几秒内)
资源占用 轻量(共享主机内核) 重(每个VM有独立OS,资源消耗大)
隔离性 中等(共享内核,但进程隔离) 高(完全隔离,每个VM独立运行)
移植性 高(能在不同环境中一致运行) 中等(依赖于hypervisor及OS)
管理工具 Docker, Kubernetes等 VMware, Hyper-V, KVM等
性能指标 容器 虚拟机
启动时间 几秒 几分钟
内存占用 20MB-50MB 512MB-2GB
CPU占用率 较高
实例数 50+ 5-10
用例 容器 虚拟机
微服务架构 适合,轻量级和灵活性高 可行,但不如容器高效
开发与测试 快速部署和环境一致性 隔离性强,适合测试多个操作系统
大规模部署 理想选择,易于扩展和管理 适用于复杂应用和遗留系统
处理敏感数据 需额外安全措施 适合,安全隔离性强
相关推荐
名字不要太长 像我这样就好6 分钟前
【iOS】《Effective Objective-C 2.0》阅读笔记(一)
开发语言·笔记·学习·macos·ios·objective-c
小萌新~~~~29 分钟前
在Scala中Array不可变的学习
开发语言·学习·scala
{⌐■_■}30 分钟前
【docker】docker build上下文
java·docker·容器
安静读书2 小时前
Docker使用教程
运维·docker·容器
小狗爱吃黄桃罐头3 小时前
Ubuntu22.04上kdump和crash的使用
学习
喝醉酒的小白3 小时前
Kafka的学习路径规划
分布式·学习·kafka
白手小弟3 小时前
docker部署RustDesk自建服务器
运维·docker·容器
Gooooa3 小时前
docker运行jar包脚本【备忘】
运维·docker·容器
yours_Gabriel3 小时前
【微服务】Docker
docker·微服务·架构