初识docker

34 阅读2分钟

docker是什么

轻量级的虚拟化技术。Docker 可以让开发者在构建应用时,将应用与其依赖的环境一起打包到一个可移植的容器中, 然后很方便地发布到任意操作系统中。

docker主要由什么组成

  • docker client (客户端)
  • docker deamon (docker守护进程)
  • docker registry (注册中心,存储docker镜像的地方)
  • docker image (镜像 )
  • docker container (容器 镜像运行的实例)

image

  • 镜像 虚拟化主机环境
  • 镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。
  • 分层存储的特征还使得镜像的复用、定制变的更为容易。
  • 利用 Union FS 的技术

container

  • 虚拟机镜像实例
  • 容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。
  • 每一个容器进行时,是以镜像为基础层,在其上创建一个当前容器的存储层,称之为容器存储层
  • 按照docker的最佳实践要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。

Repository

  • Docker Registry 中可以包含多个 仓库(Repository);每个仓库可以包含多个 标签(Tag);每个标签对应一个镜像。



镜像操作

  • 搜索镜像:
docker search [op] keyword
  • 拉取&下载镜像
docker pull [IMAGE_NAME]:[TAG]
  • 保存镜像
docker save -o redis.tar redis:latest
  • 导入镜像
docker load -i redis.tar
docker load < redis.tar
  • 删除镜像
docker rmi [image] 
docker image rm [image]

# -f, -force: 强制删除镜像,即便有容器引用该镜像;
# -no-prune: 不要删除未带标签的父镜像;
# -a, --all: 删除所有没有用的镜像,而不仅仅是临时文件;

容器操作

启动

docker run IMAGE:TAG
  • 示例:
docker run -it ubuntu:18.04 /bin/bash 
  • 重要选项
选项说明
-a, --attach=[]是否绑定到标准输人、输出和错误
-d,--detach=truelfalse是否在后台运行容器,默认为否
--expose=[]指定容器会暴露出来的端口或端口范围
-i, --interactive=truelfalse保持标准输入打开,默认为 false
-P,--publish-all=truelfalse指定如何映射到本地主机端口,例如-p 1123-12234:1234-2234
-t,--tty=truelfalse是否分配一个伪终端,默认为 false
-v / --volume[=[[HOST-DIR:] CONTAINER-DIR[:OPTIONS]]挂载主机上的文件卷到容器内
--name=""指定容器的别名

进入

  • 命令 : docker exec (推荐)| docker attach
    区别 : exec 命令和下面 attach 命令的区别在于,当使用 exit 退出容器时,不会导致容器停止
  • exec:
docker exec -it [container ID or NAMES]
#退出 exit
  • attach:
docker attach [container ID or NAMES]