Skip to content

Instantly share code, notes, and snippets.

@Akagi201
Last active April 17, 2020 06:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Akagi201/732c3a0eeeaa647b9702 to your computer and use it in GitHub Desktop.
Save Akagi201/732c3a0eeeaa647b9702 to your computer and use it in GitHub Desktop.
[docker]

国内 docker 加速

run docker as none-root user

insecure registry

docker root

ubuntu mod docker

Docker ID

  • docker container inspect --format='{{.Id}}' eosforce

日志切割

docker-machine

tutorial

restart 策略

  • no – 容器退出时不要自动重启. 这个是默认值.
  • on-failure[:max-retries] – 只在容器以非0状态码退出时重启. 可选的, 可以退出 docker daemon 尝试重启容器的次数.
  • always – 不管退出状态码是什么始终重启容器. 当指定 always 时, docker daemon 将无限次数地重启容器. 容器也会在 daemon 启动时尝试重启, 不管容器当时的状态如何.
  • unless-stopped – 不管退出状态码是什么始终重启容器, 不过当 daemon 启动时, 如果容器之前已经为停止状态, 不要尝试启动它.

log

  • /var/lib/docker/containers

apt-get

  • RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install openssl && rm -rf /var/lib/apt/lists/*

TICK

exec

docker exec -it --env COLUMNS=`tput cols` --env LINES=`tput lines` b8 bash

dns

custom install

ssh

  • apt-get install -y ssh openssh-server
  • /etc/init.d/ssh start

port mirroring

data volumn

代理

UnionFS

Ubuntu/Debian

  • aufs
  • overlay2

CentOS/RHEL

  • devicemapper
  • loop-lvm
  • direct-lvm

查看镜像, 容器, 数据卷所占用的空间

  • docker system df

虚悬镜像

  • 查看 docker image ls -f dangling=true
  • 删除 docker image prune

中间层镜像

  • docker image ls -a

建立 docker 用户组

默认情况下, docker 命令会使用 Unix socket 与 Docker 引擎通讯. 而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket. 出于安全考虑, 一般 Linux 系统上不会直接使用 root 用户. 因此, 更好地做法是将需要使用 docker 的用户加入 docker 用户组.

建立 docker 组: sudo groupadd docker

将当前用户加入 docker 组: sudo usermod -aG docker $USER

book

linter

os docker

dockerfile

tutorial

查看日志

  • docker logs -f my-container-name 类似 tail -f
  • docker logs -n 10 my-container-name 显示最近 10 行.

公有云服务

docker image 存放目录

  • /var/lib/docker 下文件可以清理掉, 然后重新 docker pull.

docker 的简单介绍

layer 分析工具

文件系统

  • AUFS
  • 写时拷贝 (copy-on-write)
  • 数据卷 (volume)
  • docker volume 命令

网络

docker 使用上的建议

  • tag 不要用 latest
  • 使用提供 dockerfile 的镜像 (为了安全)

docker 官方组件的简单介绍

  • machine
  • compose
  • swarm

dockerfile 的介绍

如何使用 dockerfile

  • build
  • 执行 docker build -f <dockerfile> <build-context-path> 构建镜像 (image), 构建镜像需要一个 Dockerfile 文件和一个构建上下文 (build context).
  • Dockerfile 是一系列 docker 命令, 用于按步骤构建 docker 容器, 然后再导出一份镜像. 构建上下文会被发送给 docker daemon, 用于 ADD, COPY 等命令操作. 所以注意不要把 / 目录或者其他过大的目录作为构建上下文.

编写 dockerfile 的最佳实践

注意中间层镜像

  • 尽可能连用 LABEL, ENV, RUN 等命令, 因为每次执行一行命令, 都会产生一个新的镜像.
  • 尽量这么写
LABEL home="http://gitlab.widget-inc.com/her/her-gateway" \
      private="true"

ENV GATEWAY_VERSION="0.19.3" \
    NODE_VERSION="0.12.9"

RUN addgroup -S redis && adduser -S -G redis redis
  • 而不是:
LABEL home http://gitlab.widget-inc.com/her/her-gateway
LABEL private true

ENV GATEWAY_VERSION 0.19.3
ENV NODE_VERSION 0.12.9

RUN addgroup -S redis
RUN adduser -S -G redis redis

init 进程

是否要启动 sshd

是否要启动守护进程

日志转发

使用基础镜像

最佳实践

轻量级, 应用级的容器

docker 生态圈

  • containerd: containerd is a daemon to control runC, built for performance and density.
  • coreos
  • rkt
  • kubernetes
  • mesos

docker生态

国内镜像

forum

tutorial

tools

源码分析

root

还有要有人回答下,docker服务端和客户端需要通过/var/run/docker.sock通信,这个目录需要root才能读写 我也尝试过chmod这个文件,以后客户端不用root也可以正常地执行命令

book

docker vs vagrant

OS X GUI for Docker

courses

@zning1994
Copy link

学习一下,留个名。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment