Docker实战之腾讯cos

使用hub的镜像工具使用cos

Posted by 张晨 on March 31, 2021

简介

需求是这样的,我需要从linux服务器上面上传文件到腾讯的cos里面去。根据cos官网文档的指示,我需要下载一个coscmd的工具,它是基于python的。我安装了多次安装不下来。(因为我对python不了解,也不了解pip)。

我自己安装不了,难道就不准我是用docker安装了吗?小问题。

操作步骤

  • 搜索是否有coscmd的镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
docker search coscmd
## 结果
NAME                                DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
gjz010/coscmd                                                                       0
ocavue/coscmd                                                                       0
panwenbin/coscmd                    COSCMD tool for qcloud COS                      0
haloislet/coscmd                                                                    0
orangeciplugins/tencentyun-coscmd   【腾讯云插件】使用 COSCMD 工具,用户可通过简…                     0
qianchenglong/coscmd                                                                0
jaehue/coscmd                                                                       0
bigbugteam/coscmd                                                                   0
xiaodajun/coscmd                    里面包含 node ,将 debian 和 pip 都切换为阿…                0
neosus/landing-build                aws, coscmd and tccli                           0
wangshiqiang/coscmd                                                                 0
airdb/coscmd                                                                        0
surenkid/ktsee-coscmd               COSCMD tool from tencent cloud, automatic ba…   0
aslinwang/python-nodejs-coscmd      qcloud coscmd in python-nodejs image            0

看一下。反正上面都不是官方的,能用就行,要求没那么高。那我就挑选了panwenbin/coscmd这个镜像吧。你真是个幸运儿。

注释:是因为我的技术有限,不想自己搭建coscmd的环境,所以才用别人的镜像,不然的话,完全可以自己打包一个coscmd的镜像

  • 拉取镜像
1
2
3
4
5
## 拉镜像
docker pull panwenbin/coscmd

## 可以执行查看当前主机上的镜像
docker images
  • 启动镜像
1
2
3
4
5
docker run -it -d panwenbin/coscmd /bin/bash
6242a56160e704559b644e08903757959b88e1e5959f5539f211d064fb9c099d

## 进入容器,容器id为上一条结果的输出,例如我就是
docker exec -it 6242a56160e7 bash
  • 配置和验证命令
1
2
## 查看命令是否存在
coscmd --help

然后根据官网文档自己进行配置。配置成功之后,自行上传一个文件尝试是否成功。这里不是讲解的重点。

  • 将配置文件拷贝出来本地
1
docker cp 6242a56160e7:/root/.cos.conf ./

然后好像就大功告成了。我们可以尝试一下能不能上传文件

1
2
3
4
5
## 如下命令是运行一个镜像
## --rm 容器结束后删除容器
## -v 挂在目录
## coscmd upload /root/a.txt test/ 将文件上传到cos的test目录中
docker run --rm -v $(pwd)/.cos.conf:/root/.cos.conf -v $(pwd)/a.txt:/root/a.txt panwenbin/coscmd coscmd upload /root/a.txt test/

结果就是成功了。

然后我们就可以每次通过这种方式上传文件到cos了。速度还是蛮快的。

扩展

我将上面的操作步骤搞成了一个命令。然后只需要执行这个命令就可以上传文件了。减轻我们的操作步骤

1
2
3
4
5
6
#!/bin/bash
if [ -n "$1" ]; then
    docker run --rm -v /root/.cos.conf:/root/.cos.conf -v $1:$1 panwenbin/coscmd coscmd upload $1 test/
else
    echo "没有包含第一参数"
fi

上面的应该都能看懂吧,就不解释了。

chmod +x upload2cos让其可以执行就好了

测试一下

1
./upload2cos /root/b.txt