返回介绍

docker 镜像容器仓库

发布于 2024-01-20 01:25:02 字数 4901 浏览 0 评论 0 收藏 0

镜像

Docker 镜像就是一个 Linux 的文件系统(Root FileSystem),这个文件系统里面包含可以运 行在 Linux 内核的程序以及相应的数据

  • 镜像是分层(Layer)的:即一个镜像可以多个中间层组成,多个镜像可以共享同一中 间层,我们也可以通过在镜像添加多一层来生成一个新的镜像。
  • 镜像是只读的(read-only):镜像在构建完成之后,便不可以再修改,而上面我们所说 的添加一层构建新的镜像,这中间实际是通过创建一个临时的容器,在容器上增加或 删除文件,从而形成新的镜像,因为容器是可以动态改变的

容器

类似 linux 系统环境,运行和隔离应用。容器从镜像启动的时候,docker 会在镜像的最上一 层创建一个可写层,镜像本身是只读的,保持不变。容器与镜像的关系,就如同面向编程中 对象与类之间的关系。

  • 因为容器是通过镜像来创建的,所以必须先有镜像才能创建容器,而生成的容器是一个独立 于宿主机的隔离进程,并且有属于容器自己的网络和命名空间
  • 镜像由多个中间层(layer)组成,生成的镜像是只读的,但容器却是可读 可写的,这是因为容器是在镜像上面添一层读写层(writer/read layer)来实现的,如下图所 示:

仓库

仓库(Repository)是集中存储镜像的地方,这里有个概念要区分一下,那就是仓库与仓库 服务器(Registry) 是两回事,像我们上面说的 Docker Hub,就是 Docker 官方提供的一个仓库 服务器,不过其实有时候我们不太需要太过区分这两个概念。

公共仓库

  • 公共仓库一般是指 Docker Hub,除了 获取镜像外,我们也可以将自己构建的镜像存放到 Docker Hub,这样,别人也可以使用我们 构建的镜像。
  • 不过要将镜像上传到 Docker Hub,必须先在 Docker 的官方网站上注册一个账号

私有仓库

有时候自己部门内部有一些镜像要共享时,如果直接导出镜像拿给别人又比较麻烦,使用像 Docker Hub 这样的公共仓库又不是很方便,这时候我们可以自己搭建属于自己的私有仓库服 务,用于存储和分布我们的镜像。

Docker 镜像以及仓库

Docker 镜像就是一个 Linux 的文件系统(Root FileSystem),这个文件系统里面包含可以运 行在 Linux 内核的程序以及相应的数据

镜像结构: registryname/repositoryname/imagename:tagname 例如: docker.io/library/centos:8.3.2011

  • docker search 搜索镜像 docker search centos
  • docker pull 下载镜像 docker pull centos
    • 下载指定的 tag docker pull centos:8.3.2011
  • docker images 查看本地镜像
  • docker tag 给镜像打标签
    • 给镜像打标签可以创建自己的镜像
    • 镜像结构: registryname/repositoryname/imagename:tagname
    • 例如: docker.io/library/centos:8.3.2011
  • docker rmi 镜像 ID -f(强制删除) 删除镜像
    • 这样删除只会删除对应的标签 docker images | grep centos
  • 把本地镜像推送到 dockerHub 仓库
    • 需要在 dockerHub 上面注册一个账户: https://hub.docker.com/
    • 使用 docker login 本地登录 dockerHub
    • docker login
    • 查看保存的账户信息 cat .docker/config.json
  • docker push 镜像名称 把本地镜像推送到远程

Docker 容器

类似 linux 系统环境,运行和隔离应用。容器从镜像启动的时候,docker 会在镜像的最上一 层创建一个可写层,镜像本身是只读的,保持不变。容器与镜像的关系,就如同面向编程中 对象与类之间的关系。

因为容器是通过镜像来创建的,所以必须先有镜像才能创建容器,而生成的容器是一个独立 于宿主机的隔离进程,并且有属于容器自己的网络和命名空间

  • 查看所的容器
    • docker ps
    • docker ps -a 查看所有容器
  • docker run 参数
    • docker run :创建一个新的容器并运行一个命令
    • docker run 是日常用的最频繁用的命令之一,同样也是较为复杂的命令之一 命令格式: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
      • 参数
        • OPTIONS :选项
          • -i :表示启动一个可交互的容器,并持续打开标准输入
          • -t : 表示使用终端关联到容器的标准输入输出上
          • -d :表示容器放置后台运行
          • --rm :退出后即删除容器
          • --name :表示定义容器唯一名称
          • -p 映射端口
          • -v 指定路径挂载数据卷
          • -e 运行容器传递环境变量
        • IMAGE :表示要运行的镜像
        • COMMAND :表示启动容器时要运行的命令
    • -it 启动一个交互式容器
      • docker run 启动一个交互式容器在容器内执行 /bin/bash 命令
      • docker run -it nginx(镜像 ID 或名称) /bin/bash
  • 删除容器 docker rm 容器 ID -f
  • 停止容器 docker stop 容器 ID
  • 启动容器 docker start 容器 ID
  • 重启容器 docker restart 容器 ID
  • 进入容器内部
    • 进入容器内部 docker exec -it 容器 ID /bin/bash
    • docker exec :进入容器开启一个新的终端(常用) 执行 exit 退出的时候不会停止容器
    • docker attach :进入容器正在执行的终端 exit 退出会停止容器
  • 查看容器日志 docker logs 容器 ID
    • 语法 docker logs [OPTIONS] CONTAINER
    • -f : 跟踪日志输出
    • --since :显示某个开始时间的所有日志
    • -t : 显示时间戳
    • --tail :仅列出最新 N 条容器日志
  • docker commit 容器转换为镜像
    • 镜像是没有写入权限的,但是我们可以修改容器把容器制作为镜像
    • 启动一个容器 给容器写入内容
    • docker exec -it 容器 ID /bin/bash 进入容器内部,写入内容 echo test > 1.txt
    • docker commit 容器 ID 自定义镜像名称 将容器转换为镜像

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文