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

推薦する

6つの珍しいHTMLタグ

まず: <abbr> または <acronym>これら 2 つの記号は同じ意...

MySQLログに関する知識のまとめ

目次SQL実行順序ビンログ何ですかいつ生産されるのか何の役に立つんだディスクはいつドロップされますか...

MySQLキーワードDistinctの詳細な紹介

MySQLキーワードDistinctの使い方の紹介DDL SQLを準備します: テーブルテストを作成...

MySql の知識ポイント: トランザクション、インデックス、ロックの原則、使用状況の分析

この記事では、トランザクション、インデックス、ロックなどの MySQL の知識ポイントの原理と使用法...

Linux tac コマンドの実装例

1. コマンドの紹介tac (cat の逆順) コマンドは、ファイルの内容を行単位で逆順に出力します...

Linux コマンドラインでパケットをキャプチャするために tcpdump を使用するいくつかの機能

tcpdump は、ネットワークの問題のトラブルシューティングに効果的に役立つ、柔軟で強力なパケット...

MySQL に配列を保存するサンプルコードと方法

多くの場合、ストアド プロシージャを作成するときに配列がよく使用されますが、MySQL ではストアド...

Docker.v19 で Docker Compose オーケストレーション ツールをインストールして構成する方法

1. Compose の紹介Compose は、マルチコンテナ Docker アプリケーションを定義...

Vue2.0/3.0双方向データバインディングの実装原理の詳細説明

Vue2.0/3.0双方向データバインディングの実装原理双方向データバインディングとは、データの変更...

Docker Swarm クラスタ管理の使用と原理の分析

Swarm クラスター管理導入Docker Swarm は Docker 用のクラスター管理ツールで...

React Native環境のインストールプロセス

react-native インストールプロセス1.npx react-native init Awe...

Docker+nacos+seata1.3.0 のインストールと使用設定チュートリアル

これに先立ち、1日かけてやってみました。Seataは使い方が簡単で超シンプルですが、インストールや設...

DockerでGDBを使用するときにブレークポイントを入力できない問題を解決する

質問docker で gdb を実行すると、ブレークポイントに到達しますが、ブレークポイントに入るこ...

MySQL インデックス データ構造の詳細な分析

目次概要インデックスデータ構造バイナリツリー赤黒木BツリーB+ツリーハッシュ索引InnoDB インデ...