和Docker镜像相关命令)
目录安装 dockerDocker Server安装步骤Docker 镜像源修改Docker目录修改Docker生态新时代软件诉求Docker 解决方案Docker Registry镜像仓库什么是 Docker Registry镜像仓库分类镜像仓库工作机制镜像仓库命令docker logindocker pulldocker pushdocker searchdocker logout镜像命令docker imagesdocker image inspectdocker tag容器命令run和psdocker rundocker ps安装 dockerDocker Sverver支持的osDocker Server安装步骤1、确定 CPU,可以看到我们的是 X86_64是支持的如果是 arm 一般会显示aarch64,我们ubuntu是X86架构的2、配置 docker 下载源#curl 命令安装sudo apt install curl -y#创建 gpg key 目录sudo mkdir -m 0755 -p /etc/apt/keyrings#下载 gpg keycurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpgecho \deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg]https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null3、安装sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y4、自启动配置#配置加载sudo systemctl daemon-reload#启动服务sudo systemctl start docker#开启启动sudo systemctl enable docker#查看服务状态sudo systemctl status docker5、检查安装版本Docker 镜像源修改对于使用 systemd 的系统Ubuntu 16.04、Debian 8、CentOS 7 如果是腾讯云在配置文件 /etc/docker/daemon.json 中加入JSON{registry-mirrors: [https://mirror.ccs.tencentyun.com]}如果是阿里云因为只对企业开放海外代理只能找私人的一些开放的源目前可以使用的源如下{registry-mirrors: [https://docker.m.daocloud.io,https://dockerhub.timeweb.cloud,https://huecker.io]}重新启动 dockerdsudo systemctl daemon-reloadsudo systemctl restart dockerDocker目录修改Docker 默认的安装目录为/var/lib/docker,这里面会存放很多很多镜像所以我们在安装的时候需要考虑这个目录的空间有三种解决方案。1将/var/lib/docker 挂载到一个大的磁盘这种一般我们能控制挂载目录像腾讯云这种云厂商在安装 K8s 的节点的时候提供了挂载选项可以直接挂载这个目录过去2安装之前挂载一个大的磁盘然后创建一个软链接到/var/lib/docker这样就自动安装到我们空间比较大的磁盘了3安装了 docker然后发现忘了配置这个目录我们需要修改 docker 的配置文件#假定我们磁盘的大的目录为 /datamkdir -p /data/var/lib/docker# 编辑配置文件vi /etc/docker/daemon.json# 输入下面的 json{data-root: /data/var/lib/docker}# 加载配置sudo systemctl daemon-reload# 重启 dockersudo systemctl restart docker#查看 docker 状态sudo systemctl status dockerDocker生态新时代软件诉求我们来考虑 2 个问题Docker 为什么要设计镜像然后又搭建个 Docker Hub搞个镜像仓库呢我们来看下现在的时代发生了什么数据量疯狂增长随着物联网、边缘计算等智能终端设备不断普及受到来自物联网设备信号、元数据、娱乐相关数据、云计算和边缘计算的数据增长的驱动全球数据量呈现加速增长。根据 IDC 分布的《数据时代 2025》预测全球数据量将从 2018 年的 33ZB 增至 2025年的 175ZB增长超过 5 倍中国平均增速快于全球 3%预计到 2025 年将增至48.6ZB占全球数据圈的比例由 23.4%提升27.8%。其中中国企业级数据量将从2015 年占中国数据量的 49增长到 2025 年的 69。处理能力快速增加腾讯云全球服务器数量 100w数据量 EB2020 年阿里云在全国已建成 5 大超级数据中心阿里云在全球 22 个地域部署了上百个数据中心服务器的总规模数已经接近 200 万台。某省疾控中心疫苗预约系统、全员核酸检测系统、健康码系统共 300 余台服务器并为核酸检测系统快速扩容计算和存储资源软件需求爆发式增长研发模式从瀑布开发演变为敏捷开发原来 3 个月上一次新功能现在两周一次而开发过程中我们也经常遇到需要修改需求然后变更再发布的情况软件上线有问题需要快速回滚对软件有着极强的版本管理和回滚诉求。软件的研发人员、研发公司在设计、研发好一款软件的时候如何方便的共享给他人而又能快速的使用起来每个项目组使用的语言不一样需要不同的环境每个都得搞一套。每次都要一个个完成部署安装每次都有各种奇怪的问题Docker 解决方案云时代需要我们针对这些诉求有一套针对的解决方案。我们要处理海量的数据如何处理呢购买大量的服务器并研发对应软件开发的需求需要频繁的变更上线如何才能将修改的代码快速的分发到几百或者几千台服务器呢如何共享软件呢搞一个中心仓库让各个服务器去下载软件包安装所以 CentOS 搞了 yum 仓库docker 设计了镜像仓库docker hub 是公共的托管仓库。软件设计好以后怎么快速安装启动有问题回滚呢将 docker 需要的所有信息设计一套软件格式把所有的依赖搞进去并打上版本标签这样不会换一个服务器各种问题所以 Docker 设计了镜像。不同的开发环境怎么搭建呢一会 java一会 cdocker 设计了镜像来应对镜像里面存放了需要运行的环境就像我们的 iPhone 内置 ios我们的华为 mate 50 内置鸿蒙一样一条命令就可以完成某个环境的搭建。Docker Registry镜像仓库什么是 Docker Registry镜像仓库(Docker Registry) 负责存储、管理和分发镜像并且提供了登录认证能力建立了仓库的索引。镜像仓库管理多个 Repository Repository 通过命名来区分。每个 Repository 包含一个或多个镜像镜像通过镜像名称和标签 (Tag)来区分。镜像仓库(Registry):要从哪一个镜像仓库拉取镜像通常通过 DNS 或 IP 地址来确定一个镜像仓库如 hub.docker.com;一个 Registry 中可以存在多个Repository·Repository 可分为“顶层仓库”和“用户仓库”;·用户仓库名称格式为“用户名/仓库名”·每个仓库可以包含多个 Tag(标签)每个标签对应一个镜像Repository: ·由某特定的 docker 镜像的所有迭代版本组成的镜像仓库镜像名称name标签(tag):如 nginx:latest认证能力提供用户注册登录、登出能力索引提供镜像的索引信息方便检索一个容器镜像包含了两个部分一个是元数据其实就是由 dockerfile 构建出来的描述文件这个描述文件会说这个容器镜像有多少层每一层里面有什么内容它的checksum 这些信息都会记录下来还有最终的可执行文件在哪就是在存储数据里面就是在一个一个的 blob 里面真正占有空间的就是这些 blob。镜像仓库分类按是否对外开放划分也是研发人员常说的1公有仓库像阿里云、dockerhub等放到公有网络上不用登录就可以下载镜像供大家访问使用2私有仓库不对外开放往往位于私有网络只有公司内部人员可以使用。按供应商和面向群体划分(1)sponsor赞助registry第三方的registry供客户和docker社区版使用(2)mirror(镜像registry第三方的registry只让客户使用例如阿里云必须注册才能使用(3)vendor(供应商) registry由发布docker镜像的供应商提供的registry例如像Google 和Redhat提供了镜像仓库服务(4)private registry通过没有防火墙和额外的安全层的私有实体提供的registry仅供内部使用镜像仓库工作机制镜像仓库使用流程 通过docker login登录仓库docker pull拉取需要的镜像通过dockerfile或者commit等方式制作完镜像通过docker push上传到仓库常用的镜像仓库Docker HubDocker Hub是Docker提供的托管存储库服务用于查找容器映像并与您的团队共享。具有以下功能1个人可以注册私有仓库能够发布自己的镜像2提供镜像检索能力3提供海量官方和认证组织的镜像4从GitHub和Bitbucket自动构建容器镜像并将它们推送到Docker Hub5支持webhookwebhook是一种基于HTTP的回调函数,发生指定的事件时服务器会自动将相关的有效负载发送到客户端的 webhook URL。 私有仓库私有镜像仓库则是指部署在公司或组织内部用于自身应用Docker镜像存储、分发的镜像仓库。在构建公司内部使用的自动化发布系统的过程中从安全的角度出发应用的打包镜像一般情况下只会被存储在私有镜像仓库中CI/CD流程的衔接点也是通过向私有镜像仓库上传镜像和拉取镜像的操作来完成的镜像仓库命令docker login功能登陆到一个 Docker 镜像仓库如果未指定镜像仓库地址默认为官方仓库 DockerHub语法docker login [OPTIONS] [SERVER]关键参数-u :登陆的用户名-p :登陆的密码docker pull功能 从镜像仓库中拉取或者更新指定镜像语法docker pull [OPTIONS] NAME[:TAG|DIGEST]关键参数-a :拉取所有tagged镜像--disable-content-trust :忽略镜像的校验,默认开启docker push功能 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库语法docker push [OPTIONS] NAME[:TAG]关键参数-a :推送所有tagged镜像--disable-content-trust :忽略镜像的校验,默认开启docker search功能 从 Docker Hub查找镜像因docker网站被封该命令暂时国内无法实操需要国外网络联系。语法docker search [OPTIONS] TERM关键参数--no-trunc :显示完整的镜像描述-f 过滤条件:列出收藏数不小于指定值的镜像。docker logout功能登出一个 Docker镜像仓库如果未指定镜像仓库地址默认为官方仓库Docker Hub语法docker logout [SERVER]镜像命令docker images功能 列出本地镜像语法docker images [OPTIONS] [REPOSITORY[:TAG]]关键参数-a :列出本地所有的镜像含中间映像层默认情况下过滤掉中间映像层--digests :显示镜像的摘要信息-f :显示满足条件的镜像--format :指定返回值的模板文件--no-trunc :显示完整的镜像信息-q :只显示镜像ID。docker image inspect功能 查看镜像详细信息语法docker image inspect [OPTIONS] IMAGE [IMAGE...]docker tag功能 标记本地镜像将其归入某一仓库语法docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]容器命令run和psdocker run功能创建一个新的容器并运行一个命令语法docker run [OPTIONS] IMAGE [COMMAND] [ARG...]关键参数-d:后台运行容器并返回容器ID-i:以交互模式运行容器通常与-t同时使用-P:随机端口映射容器内部端口随机映射到主机的端口-p:指定端口映射格式为主机(宿主)端口:容器端口-t:为容器重新分配一个伪输入终端通常与-i同时使用--namenginx-lb:为容器指定一个名称-h mars:指定容器的hostname-e usernameritchie:设置环境变量--cpuset-cpus0-2 or --cpuset-cpus0,1,2:绑定容器到指定CPU运行-m :设置容器使用内存最大值--networkbridge:指定容器的网络连接类型--link[]:添加链接到另一个容器--volume , -v:绑定一个卷--rm:shell退出的时候自动删除容器docker ps功能 列出容器语法docker ps [OPTIONS]关键参数-a :显示所有的容器包括未运行的。-f :根据条件过滤显示的内容。--format :指定返回值的模板文件。如json或者table-l :显示latest的容器。-n :列出最近创建的n个容器。--no-trunc :不截断输出。-q :静默模式只显示容器编号。-s :显示总的文件大小。