1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker上でスクリプトを作成して実行するまで

Posted at

Dockerイメージを起動しようとしたらプラットフォームの不一致が原因でコンテナの起動に問題が発生した時の対処方法

この記事はプログラミング初心者が自分のメモ用として書いている記事です。
そのため、誤った情報が記述されている可能性があります。
自己判断で読み進めてください

やろうとしたこと:Dockerを使ってLinux環境をを構築する
OS:Mac(Apple M2チップ)

dockerのイメージ起動したら起動できず以下のようなエラーが発生した

(ポート番号「5901」を使用してVNC接続)

エラーメッセージ

% docker run -itd -p 5901:5901 --name ubuntu-desktop --hostname ubuntu:remote queeno/ubuntu-desktop
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
df181d710c8a2000b7439858e1ccc5144d22edc62865c17d81a2ca0b81af175e

原因分析

どうやら入力したコマンドのqueeno/ubuntu-desktop イメージは
linux/amd64 アーキテクチャ向けに作られているが使用しているCPUがlinux/arm64/v8 で動作しているから
不一致が原因でコンテナの起動に問題が発生しているみたい

1 対応するアーキテクチャのイメージを探す
queeno/ubuntu-desktop の arm64 対応版があるかどうか

 % docker buildx imagetools inspect queeno/ubuntu-desktop

Name:      docker.io/queeno/ubuntu-desktop:latest
MediaType: application/vnd.docker.distribution.manifest.v2+json
Digest:    sha256:2415f147541df23b28f3ab59534aee304299025493539b7246443ef259855a95

どうやらサポートされていないみたい
参考にした記事ではなく別の記事を探す
参考にした記事

2 ubuntu公式イメージからとってきたイメージを試す
ubuntu公式イメージ

% docker pull ubuntu:22.04
22.04: Pulling from library/ubuntu
0d1c17d4e593: Pull complete 
Digest: sha256:ed1544e454989078f5dec1bfdabd8c5cc9c48e0705d07b678ab6ae3fb61952d2
Status: Downloaded newer image for ubuntu:22.04
docker.io/library/ubuntu:22.04

3 Ubuntuコンテナの起動と利用
ダウンロードしたUbuntuイメージからコンテナを起動し、環境にログインする

 % docker run -it -d --name ubuntu ubuntu:22.04
a45b5adeae5e01af39d3ac937ce30c91253605769406bdc3643cd332d3b68a99

4 コンテナへのログイン

% docker exec -it ubuntu /bin/bash
root@a45b5adeae5e:/# 

5 コンテナの停止

root@a45b5adeae5e:/# exit

ステップアップ(Docker 上でスクリプトを作成する)

docker run -it --name password_manager_container ubuntu bash

※一度exitして再度作成したコンテナに入るには
docker start -ai password_manager_container

コンテナ内でスクリプトを作成

コンテナ内で nano などのテキストエディタを使用できるように apt update して nano をインストール

apt update && apt install -y nano

ただしこのままだと日本語が正しく入力されない

まず、コンテナ内で以下のコマンドを実行して日本語のロケールをインストール

apt update && apt install -y locales

次に、日本語ロケールを有効化

locale-gen ja_JP.UTF-8

環境変数を設定

echo 'export LANG=ja_JP.UTF-8' >> ~/.bashrc
echo 'export LANGUAGE=ja_JP:ja' >> ~/.bashrc
echo 'export LC_ALL=ja_JP.UTF-8' >> ~/.bashrc
source ~/.bashrc

nano を使うときに文字コードを指定すると、文字化けを防げる

nano -E password_manager.sh

nano エディタでスクリプトを作成

nano password_manager.sh

スクリーンショット 2025-02-11 13.58.40.png

スクリプトを入力

#!/bin/bash

# 保存先のファイル
db_file="passwords.txt"

# メッセージ表示
echo "パスワードマネージャーへようこそ!"

# ユーザー入力を取得
echo -n "サービス名を入力してください:"
read service

echo -n "ユーザー名を入力してください:"
read username

echo -n "パスワードを入力してください:"
read -s password



# 入力データをファイルに保存
echo "$service:$username:$password" >> "$db_file"

echo "データが保存されました。"

echo "\nThank you!"

実行権限を付与

root@be96f8ff3ea8:/# chmod +x password_manager.sh
root@be96f8ff3ea8:/# 

スクリプトを実行するには、以下のコマンドをコンテナ内で実行

./password_manager.sh

実行結果

root@be96f8ff3ea8:/# ./password_manager.sh

スクリーンショット 2025-02-11 14.20.33.png

もしコンテナの外(ホスト)からスクリプトを実行したい場合は、以下のコマンドを使用

docker exec -it password_manager_container bash -c "./password_manager.sh"

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?