本文阅读量 次
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 load
和 docker 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>