Docker 入门
什么是docker
简单的说它可以帮助用户将应用和所有的依赖打包成一个标准单元,但又不像虚拟机有很大的overhead,所以更加的高效
什么是container
虚拟机提供了很好的分离机制,host OS中的程序与guest OS中的程序不易相互影响。但硬件虚拟化的代价是很大的
但container不同,它就用host OS的硬件,并且提供了较好的分离机制
相关术语
- Image:就像一个蓝图,是container的基础
- Container:依据image创建出来,是真正运行应用的东西
- docker deamon:管理docker container 的守护进程,client会与它交流
- Docker client:一个命令行工具,用户可通过它与docker deamon交互
- Docker hub:里面是所有可用的docker image
基本的命令
- 从Docker registry中抓取image存到本机中
docker pull IMAGE
- 列出系统中所有的image
docker images
- 搜索docker hub中的image
docker [options] search TERM
- 运行container
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
当运行这个命令时,docker client找到这个image,加载一个container,并在这个container中运行一个命令
-it 这个option会给container交互的tty, 这样就可以在container中尽情运行各种命令了
可以用docker run —help查看所有的option
-p 指定端口的转发
- 查看系统中的container
docker ps [options]
如不提供option,则只列出正在运行的container
-a 这个option会列出所有的container
-q 只返回container 的id
-f 根据提供的条件过滤出符合条件的container
- 删除特定ID的container
docker rm [options] CONTAINER
- 删除已经退出的container
docker rm $(docker ps -a -q -f status=exited)
- 删除指定 的image
docker rmi [options] IMAGE
- 创建image
Docker build [options] PATH
指定dockerfile 的路径,根据docker file 建立 image
Dockerfile
除了可以从docker hub中下载image外,也可以自己创建image
Dockerfile就是一个文本文件,里面是一系列的命令,docker client在创建image时会调用这些命令。这些命令与linux命令几乎一样
常用关键字:
- FROM:声明base image
- EXPOSE:暴露端口
- RUN:运行命令
- COPY:将本地的文件复制到container中