使用docker部署oci-cli(oracle cloud)

利用docker挂载不同账号的认证文件到容器中,可实现多账号管理,先在dockerhub试用了star最多的镜像,但其1GB的占用太大了,还是自己动手整一个吧。

Dockerhub 链接

qwinwin/oci-cli
默认TAG基于 python:3-slim-buster,镜像总大小294MB
docker image ls

Dockerfile 编写

选择基础镜像

oci-cli有oracle官方维护的PyPI,可以使用pip直接安装,那么找python镜像就好了

python_dockerhub

最初为了尽可能减小镜像体积选择用alpine即tag:3-alpine(同一行的镜像都是一样的)
但由于alpine太过精简,需要配置安装cryptography的依赖环境,后来发现用 3-slim-buster 做基础镜像体积还更小。。(debian永远的神!)

安装oci-cli

pip安装后初始化一下,最后指定ENTRYPOINT就行了

1
2
3
RUN pip install oci-cli && \  
yes | oci setup autocomplete
ENTRYPOINT ["/usr/local/bin/oci"]

附上Dockerfile

Dockerfile

debian

1
2
3
4
5
6
7
8
9
10
FROM python:3-slim-buster

LABEL maintainer="qwinwin"

WORKDIR /oci-cli

RUN pip install oci-cli && \
yes | oci setup autocomplete

ENTRYPOINT ["/usr/local/bin/oci"]

alpine

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FROM python:3-alpine

LABEL maintainer="qwinwin"

WORKDIR /oci-cli

RUN apk --no-cache add gcc \
musl-dev \
libffi-dev \
openssl-dev

RUN pip install oci-cli && \
yes | oci setup autocomplete

ENTRYPOINT ["/usr/local/bin/oci"]

配置本地环境

~/.bashrc中添加alias,以下可供参考

1
2
alias oci_kr="docker run --rm -i -v /home/ocicli/kr:/root/.oci qwinwin/oci-cli"
alias oci_us="docker run --rm -i -v /home/ocicli/us:/root/.oci qwinwin/oci-cli"

以上oci_kroci_us分别使用/home/ocicli/kr/home/ocicli/us两个文件夹下的凭证文件,以此实现不同账号的操作管理

如果要进行上传(下载),记得还要挂载本地要上传文件的目录,如下例:ociupload命令将本地文件夹/hdd/oracle_ooss中所有文件上传至Oracle OSS

1
alias ociupload="docker run --rm -i -v /home/ocicli/kr:/root/.oci -v /hdd/oracle_oss:/root/upload qwinwin/oci-cli os object bulk-upload --bucket-name bucket-oracle-kr --src-dir /root/upload/ --no-overwrite"

Reference

OCI-CLI Documentation
AWS-CLI (docker)
jpoon/oci-cli
Install cryptography in alpine

Author: kwin
Link: https://blog.kwin.win/2021/01/25/oci-cli-docker/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.