跳转至
本文阅读量

1. Docker

1.1 Docker 基本命令

1.1.1 运行 Docker

1.2 DockerFile 基本指令

DockerFile 用于从文本(配置文件)生成 Docker Image

DockerFile 中使用 # 标记注释

# 安装 Python 依赖
RUN pip install --no-cache-dir -r /tmp/requirements.txt

DockerFile 支持的指令如下:

指令 描述 示例
ADD 添加文件或目录
ARG 设定编译时的变量
CMD 指定默认命令
COPY 拷贝文件或目录
ENTRYPOINT 制定默认可执行文件
ENV 设置环境变量
EXPOSE 指定对外暴露的端口
FROM 创建 Image 依赖的基础 Image
HEALTHCHECK
LABEL
MAINTAINER 指定 Image 的维护者
ONBUILD
RUN 编译 Image 时执行的命令
SHELL 指定默认的 shell
STOPSIGNAL
USER
VOLUME
WORKDIR 更改工作目录

1.3 docker loaddocker import 有什么区别

1.4 HowTo

1.4.1 Windows 上如何将 Docker 安装到非 C 盘路径

sc stop docker
dockerd --unregister-service
dockerd --register-service --data-root e:\ProgramData\docker
sc start docker
sc stop docker
dockerd --unregister-service
dockerd --register-service --data-root D:\Program Files\Docker(replace with targetlocation)
SC CONFIG com.docker.service binPath= “D:\Program Files\Docker\Docker\com.docker.service”(replace with targetlocation)

1.4.2 Docker 内部如何查看当前网络连接情况

docker 内部一般没有 netstat 等网络工具,可以通过如下命令进行查询

grep -v "rem_address" /proc/net/tcp
0: 00000000:1F40 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 6106109 1 ffff889f5ff35800 100 0 0 10 0
1: 00000000:0C6D 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 6112091 1 ffff889ee7e96000 100 0 0 10 0
2: 611F820A:0C6D E61E820A:A5E6 01 00000000:00000000 00:00000000 00000000     0        0 6122922 1 ffff889d2b712800 20 0 0 10 -1
3: 611F820A:0C6D E61E820A:A5EE 01 00000000:00000000 00:00000000 00000000     0        0 6118270 1 ffff889e736e3000 20 4 21 10 -1
4: 611F820A:1F40 F21F820A:DE3E 01 00000000:00000000 00:00000000 00000000     0        0 6119808 1 ffff889e78be7000 20 4 3 10 -1
5: 611F820A:0C6D E61E820A:A5FC 01 00000000:00000000 00:00000000 00000000     0        0 6128773 1 ffff889e78bf2000 20 4 33 10 -1

结果的最开始两列包含了十六进制形式的 ip, port 的十六进制

可以通过如下脚本转化为可读性强的形式

grep -v "rem_address" /proc/net/tcp | awk 'function hextonum(str, ret, n, i, k, c) {if (str ~ /^0[xX][0-9a-fA-F]+$/) {str = substr(str, 3);n = length(str);ret = 0;for (i = 1; i <= n; i++) {c = substr(str, i, 1);c = tolower(c);k = index("123456789abcdef", c);ret = ret * 16 + k}} else ret = "NOT-A-NUMBER";return ret} {y=hextonum("0x"substr($2,index($2,":")-2,2));x=hextonum("0x"substr($3,index($3,":")-2,2));for (i=5; i>0; i-=2) {x = x"."hextonum("0x"substr($3,i,2));y = y"."hextonum("0x"substr($2,i,2));} print y":"hextonum("0x"substr($2,index($2,":")+1,4))" "x":"hextonum("0x"substr($3,index($3,":")+1,4));}'

此脚本的输出如下

0.0.0.0:8000 0.0.0.0:0
0.0.0.0:3181 0.0.0.0:0
10.130.31.97:3181 10.130.30.230:42470
10.130.31.97:3181 10.130.30.230:42478
10.130.31.97:8000 10.130.31.242:56894

1.4.3 如何查看 container 重启次数

docker inspect -f "{{ .RestartCount }}" <container-name>