docker container inspect --format='{{.Id}}' eosforce
- http://blog.51cto.com/soybean/1939164
--log-opt max-size=10m --log-opt max-file=3
- no – 容器退出时不要自动重启. 这个是默认值.
- on-failure[:max-retries] – 只在容器以非0状态码退出时重启. 可选的, 可以退出 docker daemon 尝试重启容器的次数.
- always – 不管退出状态码是什么始终重启容器. 当指定 always 时, docker daemon 将无限次数地重启容器. 容器也会在 daemon 启动时尝试重启, 不管容器当时的状态如何.
- unless-stopped – 不管退出状态码是什么始终重启容器, 不过当 daemon 启动时, 如果容器之前已经为停止状态, 不要尝试启动它.
/var/lib/docker/containers
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install openssl && rm -rf /var/lib/apt/lists/*
- Docker Swarm + TICK: https://gist.github.com/cdelaitre/85949d8b697359a319e30a678e23d8bd
- Docker + TICK: https://github.com/influxdata/TICK-docker
docker exec -it --env COLUMNS=`tput cols` --env LINES=`tput lines` b8 bash
- custom install: https://docs.docker.com/install/linux/docker-ce/centos/#install-using-the-repository
apt-get install -y ssh openssh-server
/etc/init.d/ssh start
- permission: https://stackoverflow.com/questions/24288616/permission-denied-on-accessing-host-directory-in-docker
- 试试 docker 命令加 --privileged=true
- aufs
- overlay2
- devicemapper
- loop-lvm
- direct-lvm
docker system df
- 查看
docker image ls -f dangling=true
- 删除
docker image prune
docker image ls -a
默认情况下, docker 命令会使用 Unix socket 与 Docker 引擎通讯. 而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket. 出于安全考虑, 一般 Linux 系统上不会直接使用 root 用户. 因此, 更好地做法是将需要使用 docker 的用户加入 docker 用户组.
建立 docker 组: sudo groupadd docker
将当前用户加入 docker 组: sudo usermod -aG docker $USER
docker logs -f my-container-name
类似tail -f
docker logs -n 10 my-container-name
显示最近 10 行.
/var/lib/docker
下文件可以清理掉, 然后重新docker pull
.
- docker daemon
- docker client
- LXC/VM
- 镜像 (image)
- 容器 (container)
- Understand images, containers, and storage drivers
- AUFS
- 写时拷贝 (copy-on-write)
- 数据卷 (volume)
- docker volume 命令
- 端口映射 (port mapping)
- 容器链接 (container link)
- 用户自定义网络
- docker network 命令
- Understand Docker container networks
- Legacy container links
- tag 不要用 latest
- 使用提供 dockerfile 的镜像 (为了安全)
- machine
- compose
- swarm
- build
- 执行
docker build -f <dockerfile> <build-context-path>
构建镜像 (image), 构建镜像需要一个 Dockerfile 文件和一个构建上下文 (build context). - Dockerfile 是一系列 docker 命令, 用于按步骤构建 docker 容器, 然后再导出一份镜像. 构建上下文会被发送给 docker daemon, 用于 ADD, COPY 等命令操作. 所以注意不要把
/
目录或者其他过大的目录作为构建上下文.
- 12 factor: http://12factor.net/
- 尽可能连用 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
- phusion/baseimage-docker
- gliderlabs/docker-alpine alpine 是一个只有 5M 大小的 linux 系统, 基于 mulc 和 busybox
- Yelp/dumb-init
- krallin/tini
- Best practices for writing Dockerfiles Docker 官方撰写
- Quest for minimal Docker images 奇技淫巧
- containerd: containerd is a daemon to control runC, built for performance and density.
- coreos
- rkt
- kubernetes
- mesos
还有要有人回答下,docker服务端和客户端需要通过/var/run/docker.sock通信,这个目录需要root才能读写 我也尝试过chmod这个文件,以后客户端不用root也可以正常地执行命令
学习一下,留个名。