runlike:通过容器打印启动命令

  1. 通过pip方式安装
1
pip install runlike
  1. 通过容器方式安装(永久别名:配置在~/.bashrc中)
1
alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike"
  1. 用法:
1
2
runlike 容器名/容器id
runlike -p 容器名/容器id
  1. 示例:runlike -p 会自动换行
1
2
3
4
5
6
7
8
9
[root@zabbix ~]# runlike -p busybox
docker run --name=busybox \
--hostname=4871fc667d13 \
--mac-address=02:42:ac:11:00:02 \
--runtime=runc \
--detach=true \
-t \
87ff76f62d36 \
sh

whaler:通过镜像导出dockerfile

例如想学习研究官方dockerfile写法可直接导出文件,安装方式如runlike一致

  1. 用法:
    whaler 镜像名/镜像id
  2. 示例(可以重定向>*.txt文件查看):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[root@zabbix ~]# whaler  72cc77d99849
Analyzing 72cc77d99849
Docker Version:
GraphDriver: overlay2
Environment Variables
|PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Image user
|User is root

Potential secrets:
|Found match etc/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub Possible public key \.pub$ bef3e43d6b12733deb56143ac0c4e8b6111d216f7d5dcb8cfaffde6fd87082ab/layer.tar
|Found match etc/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub Possible public key \.pub$ bef3e43d6b12733deb56143ac0c4e8b6111d216f7d5dcb8cfaffde6fd87082ab/layer.tar
|Found match etc/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub Possible public key \.pub$ bef3e43d6b12733deb56143ac0c4e8b6111d216f7d5dcb8cfaffde6fd87082ab/layer.tar
|Found match etc/udhcpd.conf DHCP server configs dhcpd[^ ]*.conf bef3e43d6b12733deb56143ac0c4e8b6111d216f7d5dcb8cfaffde6fd87082ab/layer.tar
Dockerfile:
CMD ["/bin/sh"]
ARG PINPOINT_VERSION=2.5.4
ARG INSTALL_URL=https://github.com/pinpoint-apm/pinpoint/releases/download/v2.5.4/pinpoint-agent-2.5.4.tar.gz
COPY /build/scripts/configure-agent.sh /usr/local/bin/ # buildkit
usr/
usr/local/
usr/local/bin/
usr/local/bin/configure-agent.sh

RUN |2 PINPOINT_VERSION=2.5.4 INSTALL_URL=https://github.com/pinpoint-apm/pinpoint/releases/download/v2.5.4/pinpoint-agent-2.5.4.tar.gz RUN apk add --update curl bash \
&& chmod a+x /usr/local/bin/configure-agent.sh \
&& mkdir -p /pinpoint-agent \
&& chmod -R o+x /pinpoint-agent \
&& curl -SL ${INSTALL_URL} -o pinpoint-agent.tar.gz \
&& gunzip pinpoint-agent.tar.gz \
&& tar -xf pinpoint-agent.tar --strip 1 -C /pinpoint-agent \
&& rm pinpoint-agent.tar \
&& apk del curl \
&& rm /var/cache/apk/* # buildkit
VOLUME [/pinpoint-agent]
ENTRYPOINT ["/usr/local/bin/configure-agent.sh"]
CMD ["tail" "-f" "/dev/null"]

容器安装命令方式解释

1
docker run -t --rm -v /var/run/docker.sock:/var/run/docker.sock:ro pegleg/whaler
命令 含义
docker run 运行一个新容器实例
-t 或 –tty 为容器分配一个伪终端,可以 -itd
–rm 停止后自动删除,所以docker ps -a查不到对应容器
-v /var/run/docker.sock:/var/run/docker.sock:ro 将宿主机守护进程套接字挂载至容器相同位置
pegleg/whaler 指定镜像

docker守护进程套接字

docker守护进程套接字是一个unix套接字文件,是docker守护进程(dockerd)监听docker api请求的接口。
docker命令行界面(CLI)和其他docker客户端通过该套接字与守护进程进行通信,执行各种docker命令,如构建镜像、运行管理容器。
在docker容器中,文件系统挂载是指将宿主机文件或目录与容器内相关目录进行关联,使得容器可以直接访问宿主机的内容。