またまた、OCI ネタですよ

今度は、みなさん大好き、コンテナです。

要するに、Dockerですね。

今回は、OCI コンテナに、Proxyサーバーを構築してみます。

なんでって、意味なんかありませんから

ついでに、格安で構築したいので、ampere(Arm)で構築してみますよ。


まずは、作業用PCが要りますよね。

しかも、Armです。

RaspberryPIでも良いんですが、OCI 使ってるんだし、OCI のインスタンスを構築して下さいよ。

それで、適当にDocker環境を構築して下さい。

じゃー開始です。


まず、Dockerfileとdocker-compose.ymlを作成して作業用コンテナを構築します。

コンテナは、squidsvr2としましょう。

mkdir squidsvr2

cd squidsvr2

 

Dockerfile
FROM ubuntu
RUN bash
 
docker-compose.yml
version: "3"
services:
 main:
  build:
   context: .
  command: bash
  hostname: squidsvr
  tty: true
 
起動してSquid環境を構築していきます。
docker compose up -d
 
Shellに接続します。
docker exec -it squidsvr2-main-1 bash
 
では、普通にUbuntuを構築していきます。
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
 
次は、Dockerfileとdocker-compose.ymlを修正します。
 
Dockerfile
FROM squidsvr2-main
ENTRYPOINT [ "/root/start.sh" ]
EXPOSE 3128/tcp
 
docker-compose.yml
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
 
これで、とりあえず、Squidサーバーの完成です。

さて、ここからは、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

 

Joomla templates by a4joomla