概括

《Docker技术入门与实战》很适合新手入门 Docker。内容系统全面,深入浅出地讲解Docker的构建与操作。

Docker 镜像

分层存储的一种特殊文件系统

// 创建 Nginx 服务器
docker run -d -p 80:80 --name webserver nginx

// 列出已经下载的镜像
docker image list
// 显示中间层镜像
docker image ls -a

// 查看 docker 镜像实际存储大小
docker system df

// 显示由于新旧镜像名称相同,旧镜像被名称被取消的,通常称为虚悬镜像
docker image ls -f dangling=true

// 删除虚悬镜像
docker image prune

Docker 容器

简单理解 Docker 容器就是镜像的实体。如果不想对容器研究太深,关于容器其实没有必要记住太多的命令行,直接用 Kitematic 工具就可以对容器进行很方便的管理

// 获取容器的输出信息
docker container logs

// 查看终止状态的容器
docker container ls -a

// 清理所有处于终止状态的容器
docker container prune

数据卷

数据卷是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除 数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v 这个命令。

// 创建一个数据卷
docker volume create my-vol

// 查看所有的数据卷
docker volume ls

// 删除数据卷
docker volume rm my-vol

// 清理无主的数据卷
docker volume prune

Compose 介绍

Dockerfile 文件可以很方便的定义一个单独的容器,Compose 则是用来定义一组相关联的应用容器为一个项目

// 会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项
docker-compose up -d

修改docker-compose.yml文件生效

docker-compose build 
docker-compose up -d

显示所有容器IP地址

docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

删除所有 Docker 镜像

# ~/.bash_aliases

# 杀死所有正在运行的容器.
alias dockerkill='docker kill $(docker ps -a -q)'

# 删除所有已经停止的容器.
alias dockercleanc='docker rm $(docker ps -a -q)'

# 删除所有未打标签的镜像.
alias dockercleani='docker rmi $(docker images -q -f dangling=true)'

# 删除所有已经停止的容器和未打标签的镜像.
alias dockerclean='dockercleanc || true && dockercleani'

# 删除所有镜像
docker rmi $(docker images -q)