またまた、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: .
  privileged: true
  command: bash
  hostname: squidsvr
  tty: true

networks:
 app-tier:
  driver: host
 
起動してSquid環境を構築していきます。
docker compose up -d
 
Shellに接続します。
docker exec -it squidsvr2-main-1 bash
 
では、普通にUbuntuを構築していきます。
apt update
apt upgrade -y
apt install init systemd language-pack-ja-base language-pack-ja net-tools iputils-ping traceroute dnsutils vim tzdata vim -y
locale-gen ja_JP.UTF-8
echo "export LANG=ja_JP.UTF-8" >> ~/.bashrc
exit
 
ここで、一旦、コンテナに保存です。
docker commit squidsvr2-main-1 squidsvr2-main
で、停止です。
docker compose down
 
次は、Dockerfileとdocker-compose.ymlを修正します。
 
Dockerfile
FROM squidsvr2-main
EXPOSE 3128/tcp
 
docker-compose.yml
version: "3"
services:
 main:
  build:
   context: .
  ports:
    - "0.0.0.0:3128:3128"
  privileged: true
  command: /sbin/init
  hostname: squidsvr
  tty: true

networks:
 app-tier:
  driver: host
 
起動して続きです。
docker compose up -d
 
Shellに接続します。
docker exec -it squidsvr2-main-1 bash
 
Squidのインストールです。
apt install squid -y
echo "http_access allow localnet" >> /etc/squid/conf.d/debian.conf
systemctl enable squid
systemctl start squid
 
次に、起動シェルを作成します。

/root/start.sh
#!/bin/sh

/etc/init.d/squid start

while [ 1 ]
do
  /usr/bin/sleep 5
done

起動可能にします。

chmod a+x /root/start.sh

exitして、コンテナに保存です。

docker commit squidsvr2-main-1 squidsvr2-main
で、停止です。
docker compose down
 
これで、とりあえず、Squidサーバーの完成です。
しかし、OCIのコンテナインスタンス用に定義を修正し、Push用のイメージを準備します。
 
Dockerfile
FROM squidsvr2-main
ENTRYPOINT [ "/root/start.sh" ]
EXPOSE 3128/tcp
 

さて、ここからは、OCIのコンテナ・レジストリを構築しましょう。

レジストリの作成

パブリック

リボジトリ名を 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