暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker命令的简化

PHP神灯 2021-07-16
818

1、背景

我们在使用Docker的时候,有些命令非常常用,但是其默认的输出非常不理想,命令也过长,因此导致输入命令耗时很长,此时就有必要将常用的命令给简化,本文推荐几个简化后的命令;

2、命令别名

~/.bashrc
文件中加入如下命令:

alias docker-img='sudo docker images --format "table {{.Repository}}:{{.Tag}}\t{{.ID}}"'
alias docker-ps='sudo docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Image}}"'
alias docker-ps-a='sudo docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Image}}"'
alias idocker='sudo idocker'

然后使用如下命令重新加载 ~/.bashrc
,使新配置生效:

chenzhiwei:advanced$ source ~/.bashrc

2.1 docker-img

这个命令是查看容器镜像的,大家可以看一下原始命令的输出:

chenzhiwei:advanced$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
advanced_backend latest a58f1afa680a 9 days ago 490MB
advanced_frontend latest f7bd51b10138 9 days ago 490MB
yiisoftware/yii2-php 7.4-apache 26481723ed8b 9 days ago 490MB

下面使用 docker-img
输出

chenzhiwei:advanced$ docker-img
REPOSITORY:TAG IMAGE ID
advanced_backend:latest a58f1afa680a
advanced_frontend:latest f7bd51b10138
yiisoftware/yii2-php:7.4-apache 26481723ed8b

是不是简洁很多。

2.2 docker-ps

这个是重点,用于查看目前已经启动运行的容器,如果是原始的命令,展示如下:

chenzhiwei:advanced$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
931a767f5d1a centos "/bin/bash" 23 hours ago Up 23 hours advaned_centos


下面是优化后的命令:

chenzhiwei:advanced$ docker-ps
CONTAINER ID NAMES IMAGE
931a767f5d1a advaned_centos centos

去掉了很多并不重要的列的输出;

2.3 docker-ps-a

这个命令也很常用,用于展示所有容器,不管正在跑的还是挂掉的都会有,原始命令如下:

chenzhiwei:Desktop$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
931a767f5d1a centos "/bin/bash" 23 hours ago Up 23 hours advaned_centos

这个命令比 docker ps
输出的字段还要多,导致终端异常拥挤,非常不利于浏览,如下是优化后的效果:

chenzhiwei:Desktop$ docker-ps-a
CONTAINER ID NAMES IMAGE
931a767f5d1a advaned_centos centos
03d980e76164 advanced_frontend_1 advanced_frontend
85b2502a9a48 advanced_backend_1 advanced_backend
7acacee718a5 advanced_mysql_1 mysql:5.7

3、idocker

这个命令是我自定义的于docker相关的命令,是一个shell脚本,主要功能如下:

  • 快速进入容器;

  • 任何目录下启动某个容器组

  • 任何目录下停止某个容器组

代码如下,主要把idocker文件放到 $PATH
目录下,并且设置可执行权限:

#!/bin/bash
#example:
#params $2 :第二个参数表示
#idocker in mysql


if [ "$1" == "in" ];then
sudo docker exec -it $2 /bin/bash
fi


if [ "$1" == "start" ];then
if [ "$2" == "yii" ];then
sudo /usr/local/bin/docker-compose -f /tmp/advanced/docker-compose.yml start
fi
fi
if [ "$1" == "stop" ];then
if [ "$2" == "yii" ];then
sudo /usr/local/bin/docker-compose -f /tmp/advanced/docker-compose.yml stop
fi
fi


演示如下:

进入某个容器:

chenzhiwei:Desktop$ idocker in advaned_centos
[root@931a767f5d1a /]#

启停容器组:

chenzhiwei:Desktop$ idocker start yii
Starting frontend ... done
Starting backend ... done
Starting mysql ... done
chenzhiwei:Desktop$ idocker stop yii
Stopping advanced_frontend_1 ... done
Stopping advanced_backend_1 ... done
Stopping advanced_mysql_1 ... done

4、总结

好的工具可以让开发事半功倍,大家也可以自定义idocker脚本,实现更多的功能。


文章转载自PHP神灯,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论