runlike简介
runlike是一款能通过容器打印出容器的启动命令的产品
github地址:https://github.com/lavie/runlike
whaler 简介
whaler是一款能通过容器打印出容器的Dockerfile的产品
github地址: https://github.com/P3GLEG/Whaler
runlike安装及使用
安装方式一
通过pip命令安装
# pip 安装
pip install runlike
# runlike 后跟容器名或id查询
runlike
# 再跟 -p 参数可以自动分行,便于查看
runlike -p
安装方式二
为了简单快捷作者提供了docker版本的方式
# 别名
alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike"
# 查询
runlike -p
runlike使用
语法
Usage: runlike [OPTIONS] [CONTAINER]
显示运行现有Docker容器副本的必要命令行
Options:
--no-name 不在输出中包括容器名称
-p, --pretty
-s, --stdin
--help 显示此信息并退出。
案例
[root@VM-12-13-centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4cfc7863407c wordpress:latest "docker-entrypoint.s…" 8 days ago Up 8 days 0.0.0.0:80->80/tcp, :::80->80/tcp my_wordpress-wordpress-1
e87d0ef2032c mysql:5.7 "docker-entrypoint.s…" 8 days ago Up 8 days 3306/tcp, 33060/tcp my_wordpress-db-1
[root@VM-12-13-centos ~]# runlike -p e87d0ef2032c
docker run \
--name=my_wordpress-db-1 \
--hostname=e87d0ef2032c \
--env=MYSQL_USER=wordpress \
--env=MYSQL_PASSWORD=wordpress \
--env=MYSQL_ROOT_PASSWORD=somewordpress \
--env=MYSQL_DATABASE=wordpress \
--env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
--env=GOSU_VERSION=1.12 \
--env=MYSQL_MAJOR=5.7 \
--env=MYSQL_VERSION=5.7.36-1debian10 \
--volume=/var/lib/mysql \
--network=my_wordpress_default \
--expose=3306 \
--expose=33060 \
--restart=always \
--label='com.docker.compose.config-hash=b1baa84e6b1740710aae0373da116ee38a8503089191c4b673171b5d8f515e5b' \
--label='com.docker.compose.image=sha256:c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76' \
--label='com.docker.compose.version=2.17.0' \
--label='com.docker.compose.project=my_wordpress' \
--label='com.docker.compose.project.config_files=/home/my_wordpress/docker-compose.yaml' \
--label='com.docker.compose.container-number=1' \
--label='com.docker.compose.depends_on=' \
--label='com.docker.compose.project.working_dir=/home/my_wordpress' \
--label='com.docker.compose.oneoff=False' \
--label='com.docker.compose.service=db' \
--runtime=runc \
mysql:5.7 \
mysqld
[root@VM-12-13-centos ~]# runlike -s e87d0ef2032c
docker run --name=my_wordpress-db-1 --hostname=e87d0ef2032c --env=MYSQL_USER=wordpress --env=MYSQL_PASSWORD=wordpress --env=MYSQL_ROOT_PASSWORD=somewordpress --env=MYSQL_DATABASE=wordpress --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=GOSU_VERSION=1.12 --env=MYSQL_MAJOR=5.7 --env=MYSQL_VERSION=5.7.36-1debian10 --volume=/var/lib/mysql --network=my_wordpress_default --expose=3306 --expose=33060 --restart=always --label='com.docker.compose.service=db' --label='com.docker.compose.container-number=1' --label='com.docker.compose.depends_on=' --label='com.docker.compose.oneoff=False' --label='com.docker.compose.image=sha256:c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76' --label='com.docker.compose.config-hash=b1baa84e6b1740710aae0373da116ee38a8503089191c4b673171b5d8f515e5b' --label='com.docker.compose.project=my_wordpress' --label='com.docker.compose.project.working_dir=/home/my_wordpress' --label='com.docker.compose.project.config_files=/home/my_wordpress/docker-compose.yaml' --label='com.docker.compose.version=2.17.0' --runtime=runc mysql:5.7 mysqld
注意:runlike只能输出运行的docker 启动命令
whaler安装及使用
安装
通过别名的方式
# 设置别名
alias whaler="docker run -t --rm -v /var/run/docker.sock:/var/run/docker.sock:ro pegleg/whaler"
# 查询
whaler
# 将docker客户端ID设置为特定版本
whaler -sV=1.36
使用
[root@VM-12-13-centos ~]# whaler mysql
Unable to find image 'pegleg/whaler:latest' locally
latest: Pulling from pegleg/whaler
df20fa9351a1: Pull complete
5bef82ae6286: Pull complete
Digest: sha256:7b8fec82c8d09ba1a4da54e50b5a831a304681a13c17cb2abf10849878e86a73
Status: Downloaded newer image for pegleg/whaler:latest
latest: Pulling from library/mysql
72a69066d2fe: Already exists
93619dbc5b36: Already exists
99da31dd6142: Already exists
626033c43d70: Already exists
37d5d7efb64e: Already exists
ac563158d721: Already exists
d2ba16033dad: Already exists
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
Analyzing mysql
Docker Version: 20.10.7
GraphDriver: overlay2
Environment Variables
|PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|GOSU_VERSION=1.12
|MYSQL_MAJOR=8.0
|MYSQL_VERSION=8.0.27-1debian10
Open Ports
|33060
|3306
Image user
|User is root
Potential secrets:
Dockerfile:
CMD ["bash"]
RUN groupadd -r mysql \
&& useradd -r -g mysql mysql
RUN apt-get update \
&& apt-get install -y --no-install-recommends gnupg dirmngr \
&& rm -rf /var/lib/apt/lists/*
ENV GOSU_VERSION=1.12
RUN set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends ca-certificates wget; rm -rf /var/lib/apt/lists/*; dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; export GNUPGHOME="$(mktemp -d)"; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; gpgconf --kill all; rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; apt-mark auto '.*' > /dev/null; [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; chmod +x /usr/local/bin/gosu; gosu --version; gosu nobody true
RUN mkdir /docker-entrypoint-initdb.d
RUN apt-get update \
&& apt-get install -y --no-install-recommends pwgen openssl perl xz-utils \
&& rm -rf /var/lib/apt/lists/*
RUN set -ex; key='A4A9406876FCBD3C456770C88C718D3B5072E1F5'; export GNUPGHOME="$(mktemp -d)"; gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; gpg --batch --export "$key" > /etc/apt/trusted.gpg.d/mysql.gpg; gpgconf --kill all; rm -rf "$GNUPGHOME"; apt-key list > /dev/null
ENV MYSQL_MAJOR=5.7
ENV MYSQL_VERSION=5.7.36-1debian10
RUN echo 'deb http://repo.mysql.com/apt/debian/ buster mysql-5.7' > /etc/apt/sources.list.d/mysql.list
RUN { echo mysql-community-server mysql-community-server/data-dir select ''; echo mysql-community-server mysql-community-server/root-pass password ''; echo mysql-community-server mysql-community-server/re-root-pass password ''; echo mysql-community-server mysql-community-server/remove-test-db select false; } | debconf-set-selections \
&& apt-get update \
&& apt-get install -y mysql-server="${MYSQL_VERSION}" \
&& find /etc/mysql/ -name '*.cnf' -print0 | xargs -0 grep -lZE '^(bind-address|log)' | xargs -rt -0 sed -Ei 's/^(bind-address|log)/#&/' \
&& echo '[mysqld]\nskip-host-cache\nskip-name-resolve' > /etc/mysql/conf.d/docker.cnf \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/lib/mysql \
&& mkdir -p /var/lib/mysql /var/run/mysqld \
&& chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \
&& chmod 1777 /var/run/mysqld /var/lib/mysql
VOLUME [/var/lib/mysql]
COPY file:345a22fe55d3e6783a17075612415413487e7dba27fbf1000a67c7870364b739 in /usr/local/bin/
usr/
usr/local/
usr/local/bin/
usr/local/bin/docker-entrypoint.sh
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 3306 33060
CMD ["mysqld"]