またまた、OCI ネタですよ
今度は、みなさん大好き、コンテナです。
要するに、Dockerですね。
今回は、OCI コンテナに、Proxyサーバーを構築してみます。
なんでって、意味なんかありませんから
ついでに、格安で構築したいので、ampere(Arm)で構築してみますよ。
まずは、作業用PCが要りますよね。
しかも、Armです。
RaspberryPIでも良いんですが、OCI 使ってるんだし、OCI のインスタンスを構築して下さいよ。
それで、適当にDocker環境を構築して下さい。
じゃー開始です。
まず、Dockerfileとdocker-compose.ymlを作成して作業用コンテナを構築します。
コンテナは、squidsvr2としましょう。
mkdir squidsvr2
cd squidsvr2
FROM ubuntu
RUN bash
version: "3"
services:
main:
build:
context: .
command: bash
hostname: squidsvr
tty: true
docker compose up -d
docker exec -it squidsvr2-main-1 bash
apt update
apt upgrade -y
apt install net-tools iputils-ping traceroute dnsutils vim tzdata squid -y
echo "http_access allow localnet" >> /etc/squid/conf.d/debian.conf
/root/start.sh
#!/bin/bash
# safty Exit
function exit_script(){
echo "Caught SIGTERM"
/etc/init.d/squid stop
exit 0
}
trap exit_script SIGTERM
/etc/init.d/squid start
while [ 1 ]
do
/usr/bin/sleep 5
STATUSSTR=`/etc/init.d/squid status | grep running`
if [ ! -n "$STATUSSTR" ]; then
break
fi
done
起動可能にします。
chmod a+x /root/start.sh
exitして、コンテナに保存です。
docker commit squidsvr2-main-1 squidsvr2-main
docker compose down
FROM squidsvr2-main
ENTRYPOINT [ "/root/start.sh" ]
EXPOSE 3128/tcp
version: "3"
services:
main:
build:
context: .
ports:
- "0.0.0.0:3128:3128"
command: /root/start.sh
hostname: squidsvr
tty: true
docker compose up -d
docker compose down
さて、ここからは、OCIのコンテナ・レジストリを構築しましょう。
レジストリの作成
パブリックかプライベート
※プライベートの場合、kubectl create secret docker-registry で、シークレットを登録し、yaml定義に、imagePullSecrets: を指定する必要があります。
リボジトリ名を squidsvr2 で構築します。
次にリポジトリアクセス用の認証トークンを作成します。
自分のプロファイルから認証トークンを選択して作成します。
すると、謎の文字列を生成してくれるので、記録して下さい。
さっ、Dockerに戻ります。
リポジトリにログインします。 サンプルは、大阪リージョンですよ。
サーバーアドレスは、ここに載ってます。
docker login kix.ocir.io
認証するんですが、ユーザー名の前にネームスペースを付けないとダメなんですね。
ネームスペースって何っと思うでしょ。テナンシに割りついている謎の文字列のことです。
テナンシ詳細画面から、オブジェクト・ストレージ・ネームスペースってとこに書かれているので、記録して下さい。
ということで、認証は、以下です。
User:ネームスペース/ユーザー名
Pass:認証トークン
無事認証すると、イメージを構築しリポジトリにプッシュします。
docker image build -t kix.ocir.io/ネームスペース/squidsvr2:1.0 .
docker push kix.ocir.io/ネームスペース/squidsvr2:1.0
ご苦労様でしたって、とこなんですが、まだ、このイメージを実行するやつを構築しなとダメですよね。
コンテナ・インスタンスを構築しましょう。
VNCとサブネット、ルート表とかってのは、先に構築しておいて下さいね。
シェイプをAmpereにして下さいね。
1CPU 1Gメモリでも動作するので、適当に
後は、作ったコンテナを選択して、どーーーーんです。
あっ テストしましょう
hostip="コンテナインスタンスのIPアドレス"
proxy="${hostip}:3128"
export http_proxy="http://$proxy"
export https_proxy=$http_proxy
export ftp_proxy=$http_proxy
export no_proxy="127.0.0.1, localhost, url"
curl www.google.com --head