docker 镜像容器仓库
镜像
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
- 下载指定的 tag
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
- 需要在 dockerHub 上面注册一个账户:
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
:表示启动容器时要运行的命令
- OPTIONS :选项
- 参数
-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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论