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 の詳細な説明

推薦する

Dockerで構築されたコンテナにpingツールをインストールする

Centos や Ubuntu など、Docker が pull する Base イメージは最もシン...

Dockerfile を使用して Docker でイメージを構築する方法

イメージを構築するこれまで、テストやデモンストレーションにさまざまなイメージを使用しました。多くの場...

MySQLチュートリアルDMLデータ操作言語の例の詳細な説明

目次1. データ操作言語 (DML) 2. データを追加する(挿入) 3. 既存のテーブルをコピーし...

CSS background-blend-modeの仕組みを深く理解する

この記事は共有および集約することを歓迎します。全文を転載する必要はありません。著作権を尊重してくださ...

Vue3.0でカスタム命令を書くための簡単な手順

序文Vue には、v-if、v-bind、v-on などの豊富な組み込みディレクティブが用意されてい...

Docker構成 Alibaba Cloud Container Serviceの操作

Alibaba Cloud Dockerコンテナサービスの設定Alibaba Cloud Image...

HTML チュートリアル、HTML デフォルト スタイル

html 、アドレス、引用、本文、 dd 、 div 、 dl 、 dt 、フィールドセット、フォ...

Vueはシンプルなショッピングカートの例を実装します

この記事では、Vueの具体的なコードを共有して、簡単なショッピングカートを実装します。具体的な内容は...

非常に実用的なTomcat起動スクリプトの実装方法

序文セキュリティ上の理由から、会社が Linux サーバーへのすべてのログインにセキュリティ制限を課...

Centos 7 64 ビット デスクトップ バージョンのインストール グラフィック チュートリアル

システムが遅いと感じてソースを変更したい場合は、別の記事で整理しました https://blog.c...

Vueルーティングコンポーネントでパラメータを渡す8つの方法の詳細な説明

シングルページアプリケーションを開発する場合、特定のルートを入力し、パラメータに基づいてサーバーから...

MySQL インデックスの正しい使い方とインデックスの原理の詳細な説明

1. はじめになぜインデックスが必要なのでしょうか?一般的なアプリケーション システムでは、読み取り...

Linux のリンク解除機能とファイルの削除方法

1. リンク解除機能ハード リンクの場合、unlink はディレクトリ エントリを削除し、inode...

MySQL を使用した分散ロックの実装

導入分散システムでは、分散ロックは最も基本的なツール クラスです。たとえば、支払い機能を備えた 2 ...

Ubuntu 20.04 ベスト設定ガイド (初心者向け)

1. システム構成1. sudoパスワードをオフにするsudo コマンドを使用するたびにパスワード...