楠槡

Docker Cheat Sheet

2018-03-04

部分内容参考 wsargent/docker-cheat-sheet

What’s Docker? - 什么是Docker

logo
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker 相关概念 - Docker 初次见面

Installation - 安装

获得最新的docker安装包。

1
$ sudo curl -sSL https://get.docker.com/ | sh

安装时间较长,Why not drink a cup of coffer?

确认Docker是否安装成功。

1
$ sudo docker run hello-world

这个命令会下载一个测试用的镜像并启动一个容器运行它。

Permissions - 权限相关

非Root用户授权

实际的开发运维情况下,一般极少使用Root权限,所以Docker提供了一个权限组,把当前用户加入到Docker用户组中。

一共需要三条指令:

1
2
3
$ sudo groupadd docker
$ sudo gpasswd -a ${USER} docker
$ sudo service docker restart

三条指令的意思分别是:

  • 添加docker用户组,一般会默认创建,提示已存在
  • 将用户添加到docker用户组
  • 重启docker服务

Containers - 容器

粗暴来说,可以简单的把一个 Containers 容器理解为一个虚拟机,一个完全的虚拟化的环境。虽然实际上,容器(Container)之于虚拟机(Virtual Machine)就如同线程和进程。

Lifecycle - 生命周期

docker run --rm可以用于创建一个在容器停止之后删除的临时容器,方便测试。
docker run -d IMAGE [COMMAND] [AGR…] 创建守护式容器

docker run -v $HOSTDIR:$DOCKERDIR 用于映射宿主(host)的一个文件夹到 docker 容器。具体参考 Volumes

Operation - 操作

如果你想整合容器到宿主进程管理(host process manager),那么以 -r=false 启动守护进程(daemon)然后使用 docker start -a

守护式容器切出到后台,使用快捷键 Ctrl+P + Ctrl+Q 切出,并使用 attach 命令回到容器。

如果你想通过宿主暴露容器的端口(ports),请看暴露端口一节。

故障 docker 实例的重启策略在这里

容器限制

CPU 限制

你可以限制 CPU,包括使用所有 CPU 的百分比,或者使用特定内核数。

比如,你可以设置 cpu-shares 。这个设置看起来有点奇怪 – 1024 的意思是 100% CPU,因此如果你希望容器使用全体 CPU 内核的 50%,应将其设置为 512。更多信息,请查阅 https://goldmann.pl/blog/2014/09/11/resource-management-in-docker/#_cpu :

1
docker run -ti --c 512 agileek/cpuset-test

你可以只对某些 CPU 内核使用 cpuset-cpus]。请参阅 https://agileek.github.io/docker/2014/08/06/docker-cpuset/ 获取更多细节以及一些不错的视频:

1
docker run -ti --cpuset-cpus=0,4,6 agileek/cpuset-test

注意,Docker 在容器内仍然可以看到所有的 CPU – 虽然它只是用了其中一部分。请查阅 https://github.com/docker/docker/issues/20770 获取更多细节。

内存限制

你同样可以在 Docker 设置内存限制 :

1
docker run -it -m 300M ubuntu:14.04 /bin/bash

能力(Capabilities)

Linux 的 capability 可以通过使用 cap-addcap-drop 设置。请参阅 https://docs.docker.com/engine/reference/run/#/runtime-privilege-and-linux-capabilities 获取更多细节。这有助于提高安全性。

如需要挂载基于 FUSE 文件系统,你需要同时结合 –cap-add 和 –device 使用:

1
docker run --rm -it --cap-add SYS_ADMIN --device /dev/fuse sshfs

授予对单个设备访问权限:

1
docker run -it --device=/dev/ttyUSB0 debian bash

授予所有设备访问权限:

1
docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb debian bash

有关容器特权的更多详情请参考这里

Info - 信息

  • docker ps 查看运行中的所有容器。
  • docker logs 从容器中获取日志。(你也可以使用自定义日志驱动,不过在 1.10 中,它只支持 json-filejournald)
  • docker inspect 查看某个容器的所有信息(包括 IP 地址)。
  • docker events 从容器中获取事件(events)。
  • docker port 查看容器的公开端口。
  • docker top 查看容器中活动进程。
  • docker stats 查看容器的资源使用情况统计信息。
  • docker diff 查看容器的 FS 中有变化文件信息。

常用指令:

  • docker ps -a 查看所有容器,包括正在运行的和已停止的。

  • docker stats --all 显示正在运行的容器列表

Import&Export - 导入&导出

  • docker cp 在容器和本地文件系统之间复制文件或文件夹。

  • docker export 将容器的文件系统切换为压缩包(tarball archive stream)输出到 STDOUT。

Tags: Docker
使用支付宝打赏
使用微信打赏

若你觉得我的文章对您有帮助,点击上方按钮请我喝杯咖啡☕

若文章中存在问题,或您有任何意见和疑问,均可与我联系

扫描二维码,分享此文章 📱