dockerコンテナにvimをインストールするソリューション

dockerコンテナにvimをインストールするソリューション

物語の始まり

多くのインターネット企業は、0から1への急成長を経て、洗練された経営を行っているに違いありません。特に自社のユーザーに関しては、ユーザーの特性/ニーズ/クズを理解して、どうすれば彼らを満足させることができるかを知る必要があります。そうして初めて、彼らは心からあなたに従うでしょう。

ビジネス ユーザー向けであれば、問題は非常に単純です。さまざまなパートナー企業や業界リーダーを訪問するだけです。それぞれに目的があり、数回の訪問で相互のメリットが明らかになります。

しかし、私たちのようなユーザー志向の企業にとって、1 回限りの調査どころか、ランダムにユーザーを抽出して会社に招待し、アンケート調査を実施した場合、抽出されたユーザー データは代表的なものになるでしょうか。ユーザーから寄せられた質問は、チームの現在の開発の方向性を反映しているでしょうか。

そこで私の最近の仕事は、元のビジネス分析にもう1つのレイヤー、ユーザータグを追加することです。アプリケーション内でのユーザーの行動をマークし、ユーザーの特性と使用習慣を分析します。

中間のプロセスでビッグデータが必要なため、独自のテスト開発環境の構築に docker を使用することにしました。途中で vim をインストールする際に問題が発生しました。

vimをインストールし、hadoop-hive.envを編集します。

CentOS 7 に Docker を使用して Hive イメージをインストールする

$ docker ps
コンテナID イメージ コマンド ポート名
dc387ff5c56d bde2020/hive:2.1.0-postgresql-metastore "entrypoint.sh /bin/…" 0.0.0.0:10000->10000/tcp、10002/tcp hive-server

$ docker exec -it dc387ff5c56d /bin/bash

# vim で hadoop-hive.env を編集します
/opt# vi hadoop-hive.env
bash: vi: コマンドが見つかりません

# イメージが純粋なものであることは理解できるので、コンパイルしてインストールします。/opt# yum install vim
bash: yum: コマンドが見つかりません
/opt#rpm
bash: rpm: コマンドが見つかりません

# curl はまだ信頼できます/opt# wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz
bash: wget: コマンドが見つかりません
/opt# rz
bash: rz: コマンドが見つかりません

/opt# カール
curl: 詳細については、「curl --help」または「curl --manual」を参照してください
/opt# curl -o yum-3.2.28.tar.gz http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz
  % 合計 % 受信 % 転送 平均速度 時間 時間 時間 現在
                                 ダウンロード アップロード 合計使用時間 残り 速度
100 864k 100 864k 0 0 276k 0 0:00:03 0:00:03 --:--:-- 667k

# あなたは純粋すぎる。/opt# tar -zxvf yum-3.2.28.tar.gz
/opt/yum-3.2.28# ls
著者 変更履歴 プラグインのインストール TODO callback.py ドキュメント output.py rpmUtils テスト yum yum.spec yummain.py
コピー FAQ Makefile README bin cli.py etc po shell.py utils.py yum-updatesd.py yumcommands.py

/opt/yum-3.2.28# を作る
bash: make: コマンドが見つかりません

この時点で~ bash: make: command not found ん?makeコンパイルコマンドすら無い。コンテナって今こんなに荒れてるの?

不注意で回避しませんでした。Debian であることが判明しました。

いいえ、おそらくその画像は Centos 7 用ではないのでしょうか?

# Linuxカーネルのバージョンを確認する /opt/yum-3.2.28# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 7 (wheezy)"
名前="Debian GNU/Linux"
バージョンID = "7"
バージョン="7 (ぜいぜい)"
ID=デビアン
ANSI_COLOR="1;31"
HOME_URL="http://www.debian.org/"
サポートURL="http://www.debian.org/support/"
BUG_REPORT_URL="http://bugs.debian.org/"

PRETTY_NAME="Debian GNU/Linux 7 (wheezy)" なんと、Debian です。apt-get インストール コマンドを確認してみましょう。

/opt/yum-3.2.28# apt-get をインストール vim
パッケージリストを読み込んでいます...完了
依存関係ツリーの構築       
状態情報を読み込んでいます...完了
E:

そんなに単純ではないことはわかっています。パッケージ vim が見つからないのは、通常、中国の Debian で使用される apt-get ソースをバイパスする必要があるためです。国内のミラーを構成するだけです。

# オリジナルの `apt-get` ソースファイルをバックアップして再設定します/# mv /etc/apt/sources.list /etc/apt/sources.list.bak
deb http://mirrors.163.com/debian/ jessie メイン 非フリー 貢献
/opt/yum-3.2.28# echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list

/opt/yum-3.2.28# echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

/opt/yum-3.2.28# echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list

/opt/yum-3.2.28# echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

# apt-getを更新し、vimをインストール
/opt/yum-3.2.28# apt-getアップデート
/opt/yum-3.2.28# apt-get をインストール vim

パッケージリストを読み込んでいます...完了
依存関係ツリーの構築       
状態情報を読み込んでいます...完了
次の追加パッケージがインストールされます:
  libc6 vim-common vim-runtime
推奨パッケージ:
  glibc-doc ロケール ctags vim-doc vim-scripts
次の新しいパッケージがインストールされます:
  vim vim-common vim-runtime
以下のパッケージがアップグレードされます:
  libc6
1 個がアップグレードされ、3 個が新規インストールされ、0 個が削除され、179 個がアップグレードされませんでした。
10.8 MB のアーカイブを取得する必要があります。
この操作の後、29.6 MB の追加ディスク領域が使用されます。
続行しますか? [Y/n]?

その他の方法

また、単純な設定ファイルの置き換えであれば、ホストマシン上の hadoop-hive.env 設定ファイルを編集し、docker cp hadoop-hive.env dc387ff5c56d:/opt を実行してコンテナの指定フォルダにコピーすることもできます。

要約する

Dockerイメージをインストールするときは、システムバージョンカーネルに注意する必要があります。バージョンが間違っている場合、またはバージョン番号がDockerコンテナと一致しない場合、問題が発生します。

これで、docker コンテナに vim をインストールする問題の解決に関するこの記事は終了です。docker に vim をインストールすることに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerコンテナにvimコマンドがない問題を解決する方法
  • Dockerコンテナでvimコマンドが使えない問題を解決する

<<:  ボタンを使用してフォームを送信する代わりに、画像を使用してフォームを送信します。

>>:  Unicode 署名 BOM の詳細な説明

推薦する

Linuxのbasenameコマンドの使い方

01. コマンドの概要basename - ファイル名からディレクトリとサフィックスを削除しますba...

CSS クリアフロートクリア:both サンプルコード

今日はフロートのクリアについてお話します。フロートのクリアについてお話する前に、フロートとは何かを理...

vscode で Prettier Code プラグインを使用する詳細なチュートリアル

なぜprettierを使うのですか?大企業では、フロントエンド開発コードに独自のコード標準がある場合...

JS における for、for...in、for...of、forEach の違いと使用例

forループ基本的な構文形式: for(変数の初期化; 条件式; 演算式){ループ本体ステートメント...

Docker を使用して Nginx+Flask+Mongo アプリケーションをデプロイする

サーバーにはNginx、データベースサポートにはMongo、Python言語のWebフレームワークに...

フィールドを結合するSQL関数

最近、関連テーブル内のすべてのフィールドをクエリし、それらを 1 つのフィールドに再グループ化する必...

CSSマウスを画像の上に置いたときにマスクレイヤー効果を追加する実装

まず効果を見てみましょう: マウスを画像の上に移動すると、影の効果とテキスト/アイコンが追加されます...

js を使用して USB スキャナー データを取得する方法

この記事では、USBバーコードスキャナデータを取得するjsの具体的なプロセスを参考までに紹介します。...

CSSアニメーションでポイント獲得効果を実現するアイデアを詳しく解説

最近のプロジェクトでは、ポイントを集める効果を作成する必要があります。 ボスの説明によると、この効果...

MySQL テーブルを作成するためによく使用される SQL ステートメントの概要

最近、私はプロジェクトに取り組んでおり、背景を記述するために SQL ステートメントを使用する必要が...

Mysql ルートユーザーアカウントのパスワードをリセットする問題を解決する

問題の説明: mysqladmin.exe を使用してコマンドを実行すると、次のエラー メッセージが...

MySQL 文字セットの変更に関する実践的なチュートリアル

序文: MySQL では、システムが多くの文字セットをサポートしており、異なる文字セット間にはわずか...

ドロップダウンメニューを表示または非表示にするJavaScript

この記事では、ドロップダウンメニューを表示および非表示にするJavaScriptの具体的なコードを参...

PDO を使用して SQL インジェクションを防ぐ原理の分析

序文この記事では、SQL インジェクションを回避するために pdo の前処理メソッドを使用します。詳...

Reactスロットの使い方

目次必要コアアイデアReactでスロットを実装する2つの方法必要コンポーネントを自分で書きました。コ...