前言
docker不容置疑,目前最为成熟最广泛的虚拟容器产品,虽然k8s在docker编排基础上,基于战略原因,协同google,ibm推出了CRI标准,兼容一切符合CRI标准的容器厂商,而带动了podman等其他容器产品的百花齐放,但是docker依然在诸多的容器产品里鹤立鸡群,强就是强,无惧大厂商的霸权,今天这里谈谈docker使用里查看容器启动命令的一个工具。runcommand
介绍
runcommand是一款使用golang实现的基于容器管理的工具,市面上也有一些同类产品的实现,比如笔者我,在没有开发runcommand之前使用的是assaflavie/runlike这个产品,该产品使用python开发。
镜像大小89.4M, 提供的查询容器启动命令的功能
joinsunsoft/runcommand基于golang实现,使用golang语言进行开发的,和docker融合的更加的紧密。 docker也是使用golang进行开发的。
优点
在功能相同的情况下, joinsunsoft/runcommand的镜像大小只有8M不到, 不到assaflavie/runlike这个产品的十分之一
使用
镜像的TAG: joinsunsoft/runcommand:latest
使用docker命令查看
docker container run --rm --name runcommand -v /var/run/docker.sock:/var/run/docker.sock joinsunsoft/runcommand etcd01
直接使用命令
runcommand <container-name>|<container-id> <docker-url>
实例
root@boot2docker:~# docker container run --rm --name runcommand\
-v /var/run/docker.sock:/var/run/docker.sock \
joinsunsoft/command etcd01
查看到容器etcd01的启动命令
Container[etcd01] run command(vendor by joinsunsoft)
docker run --name=etcd01 --hostname=96dbf62644ed --env=ETCD_ENABLE_V2=true
--env=ALLOW_NONE_AUTHENTICATION=yes
--env=ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
--env=PATH=/opt/bitnami/common/bin:/opt/bitnami/etcd/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
--env=HOME=/ --env=OS_ARCH=amd64 --env=OS_FLAVOUR=debian-10
--env=OS_NAME=linux --env=BITNAMI_APP_NAME=etcd
--env=BITNAMI_IMAGE_VERSION=3.5.1-debian-10-r76 --env=ETCDCTL_API=3
--volume=/mnt/sda1/var/lib/docker/volumes/etcddata/_data:/bitnami/etcd/data
-p 32379:2379/tcp -p 32380:2380/tcp --workdir=/opt/bitnami/etcd
-p 28080:80 --restart=always --runtime=runc bitnami/etcd /opt/bitnami/scripts/etcd/run.sh
结束语
docker的使用会越来越广泛, 有很多人都说k8s强制的占用了docker的市场, docker和k8s是两种不同的产品, k8s是关注与容器的编排,云原生下的容器管理和相关的整体的docker集群的维护,这个扯起来,就要说到docker的compose和swarm了,在某些方面对docker的这两者有非常大的冲击,实际上,还是docker本身自己在docker集群上的战略失败, 不过对于非大型的容器集群还是推荐使用docker,比较k8s大重, slidecar模式看是轻便,但是对于网络结构和网络流量这方面还有太多需要优化的挑战。 云原生和微服务云是两个完全不同的使用场景,需要根据具体的来进行选择。