An introduction to docker
Why docker?
Docker 是领先的软件容器平台。在和其他人合作开发时,利用Docker可以消除“只能在我的机器上运行”的问题。
将应用程序和容器分隔开有利于消除冲突,增强安全性。
公司使用Docker来构建敏捷软件交付流水线,可以使新功能更快面市。
What’s image, container, registry, layer?
container是一个轻量级的,包含运行时所需的各种环境的可以独立运行的主机。
如果docker run 命令没有 –rm 参数,container会一直存在。
image相当于container的模板。image可以通过container创建,也可以通过Dockerfile创建。
image有一系列layer组成。Dockerfile的每一条命令代表一层layer。除了最后一层layer,其他都是只读的。
registry是存放image的仓库。docker默认使用的仓库是dockerhub。
Autostart a service when run a container
方法有很多,比如在Dockerfile中用CMD, Entrypoint或者用Supervisor
以CMD为例,Dockerfile内容如下:
FROM ubuntu:14.04
CMD ["sh", "-c", "nginx start"]
Unable to delete id_xxx, image has dependent child images
查看id_xxx的child images:
docker inspect –format=’{{.Id}} {{.Parent}}’ $(docker images –filter since=id_xxx -q)
常用的docker命令
- docker 命令帮助
docker help [COMMAND]
- 列出机器上的image
docker images
- 搜索image
docker search [opton] TERM
- 从image启动一个container
docker run [OPTION] IMAGE [COMMAND] [ARG...]
- 从一个container创建一个image
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
- 给image打tag
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
- 查看container信息
docker ps [OPTIONS]
- 登录docker registry
docker login [OPTIONS] [SERVER]
- container有主机之间数据拷贝
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
- 删除所有不在运行的container
docker rm `docker ps -aq`