介绍
Docker是一个虚拟环境容器,可以将开发环境、代码、配置文件等一并打包到容器中,并发布和应用到任意平台中。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低
优点
- 快速、一致的交付程序,都在标准化环境工作,简化了开发周期
- 响应式部署和扩展,是基于容器的平台,可以在多个平台运行
- 在同一硬件上运行更多工作负载
Docker架构
镜像(image)
- 类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板,用来提供程序的运行环境
容器(container)
- 类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境,以及运行在其中的应用程序
- 容器是镜像创建的应用实例,可以创建、启动、停止、删除容器
- 各个容器之间是是相互隔离的,互不影响
- 镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变
仓库(repository)
- 类似于代码仓库,是Docker用来集中存放镜像文件的地方
- 与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库,而仓库是存放镜像的地方,每个仓库可以包含多个标签,每个标签对应一个镜像
Docker命令
基本命令
docker # 查看Docker客户端的所有命令选项
docker version
docker info # Docker系统信息
docker command --help # 查看某个命令的具体使用方法
镜像命令
1.docker images 查看当前系统中的images信息
docker images [options]
# options
-a, --all # 显示所有的镜像
-q, --quiet # 只显示 id
2.docker search 搜索镜像是否存在
docker search [image]
3.docker pull 下载镜像
docker pull [options] name[:tag|@digest]
# options
--all-tags,a # 下载仓库所有镜像
--disable-content-trust # 跳过镜像校验
--platform # 设置镜像所属平台, 如果有多个镜像服务
# tag
每个仓库有多个镜像,用tag标识,不加默认为latest镜像
# @digest
内容可寻址标识符,只和镜像的内容有关系,镜像内容不变digest也不会变
用于更精确的指定唯一镜像,并防止镜像被篡改
4.docker commit 从容器创建一个新的镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# options
-a # 镜像作者
-c # 使用Dockerfile指令来创建镜像
-m # 说明信息
-p # 在commit时,容器会暂停
# container
容器id
容器命令
1.docker run 新建容器并启动
docker run [options] image
# options
--name="" # 容器名称
-d # 后台运行容器,并返回容器ID
-i # 以交互模式运行容器,通常与-t同时使用
-t # 为容器重新分配一个伪输入终端,通常与-i同时使用
-P # 随机端口映射,容器内部端口随机映射到主机的端口
-p # 指定端口映射,格式为:主机(宿主)端口:容器端口
-e # 设置环境变量,格式为:username="ritchie" 为例
2.docker start/stop/restart 启动/停止/重启命令
docker start container
docker stop container
docker restart container
3.docker ps 查看容器
docker ps [options]
# options
-a # 显示所有容器,包括未运行的
-f # 根据条件过滤显示内容
-q # 只显示容器编号
4.docker attach/exec 进入容器
使用 docker attach 命令之后从容器退出会导致容器停止,使用docker exec 命令之后退出不会导致容器停止
docker attach
docker exec