20220108のLinuxに関する記事は10件です。

LinuxにNICが複数接続されているときの見分け方

はじめに NICが複数枚あるとき、どの口がeth0? どのアンテナがwlan1?とか迷うことがあるので見分け方をまとめたい テスト環境としてRaspberryPiを用いたが、一般的なLinuxマシンでも同じ方法で見分けられるのではないかと思う 環境 RaspberryPi 3B+ Raspberry Pi OS 32bit Linux raspberrypi 5.10.63-v7+ #1459 SMP Wed Oct 6 16:41:10 BST 2021 armv7l GNU/Linux USB Wi-Fiデバイスを追加 TL;DR 後から調べようとするとめんどくさい。 NICにMACアドレスのシールを貼っておけばすぐ分かる。NICを買ったらすぐ貼ろう!! 1. 基本的な情報を収集する 認識しているNICの一覧をip addressコマンドで取得する。 オプションのaddressは短縮してaとすることもできる。 $ ip address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether b8:27:eb:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.0.2.5/24 brd 192.0.2.255 scope global dynamic noprefixroute eth0 valid_lft 74503sec preferred_lft 63703sec inet6 2402:6b00:3e2e:0000:0000:0000:0000:0000/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 292sec preferred_lft 292sec inet6 fe80::2261:a142:0000:0000/64 scope link valid_lft forever preferred_lft forever 3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 link/ether b8:27:eb:xx:xx:xx brd ff:ff:ff:ff:ff:ff 4: wlan1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether 34:76:c5:xx:xx:xx brd ff:ff:ff:ff:ff:ff 上記例から、下記のような構成とわかる if type state mac lo ループバック UNKNOWN なし eth0 有線 UP b8:27:eb:xx:xx:xx wlan0 Wi-Fi DOWN b8:27:eb:xx:xx:xx wlan1 Wi-Fi DOWN 34:76:c5:xx:xx:xx 2. MACアドレスベンダーから判別を試みる IEEEウェブサイトでの検索例: IEEE Registration Authority: Assignments サイトへアクセスする 「Please select a Product 」をクリックし、「ALL MAC (MA-L, MA-M, MA-S)」を選択する 「SEARCH RESULTS」の「Filter results by search text」にMACアドレスの頭6桁を入力し「Filter」をクリックする 「ALL MAC (MA-L, MA-M, MA-S) SEARCH RESULTS」の表がフィルタリングされる ※IEEEが総本山であるため紹介したが、ほかにもMACアドレス検索できるサイトが数多くある。好みのものを使ってもらいたい。 サンプルデータを用いて調査した結果、下記の通りとなった if mac頭6桁 CompanyName eth0 b8:27:eb Raspberry Pi Foundation wlan0 b8:27:eb Raspberry Pi Foundation wlan1 34:76:c5 I-O DATA DEVICE,INC. eth0はオンボードの有線NIC wlan0はオンボードの無線NIC wlan1は外付けの無線NIC(アイ・オー・データ機器製) の可能性が高いということが分かった。 2. デバイスのチップ型番で判別する 追加したNICのチップが分かっている場合に有効 ethtool $ ethtool -i wlan1 driver: rtl8192cu version: 5.10.63-v7+ firmware-version: N/A (後略) lsusb $ lsusb Bus 001 Device 004: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter (後略) lspci $ lspci pcilib: Cannot open /proc/bus/pci lspci: Cannot find any working access method. ※Raspberry Pi 3B+ にはPCIバスが存在しないのかデータを取ることができなかった。 上記例から、USBにRealtek社の「RTL8192CU」が搭載された無線LANアダプタが存在することが分かる。 これはwlan1に適用されているドライバーとチップ型番が一致する。 3. NICのLEDを点滅させ、目視で判別する NICドライバによっては、NICのLEDを点灯・点滅させて目視で判別できる機能を備えているものがある。 ethtool --identify [nic] コマンドで起動することができる。 $ sudo ethtool --identify eth0 Cannot identify NIC: Operation not supported 実際に実行してみたところ、その操作はサポートされていないというメッセージが出てしまったため どのような動きをするのか確認はできなかった。 おわりに 他にナイスな知り方があれば教えてください!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

UNIXコマンド

画面 Ctrl + u クリアー Ctrl + l 画面 クリアー 階層移動 Cd ~ (チルダ) = cd homeDIR /フォルダ名/ で階層移動可 Cd/ tab*2 タブ二回でdir先の補完 現階層確認 Pwd ファイル表示 Ls listコマンド Ls -a 隠しファイル Ls -l 詳細 ls -al  = ls -la --help ヘルプ Ls -l *.conf confファイル検索 Ls -l s????? sからはじまる6文字 Ls -l [ps]????? P||sからはじまる6文字 Ls -l [f-h]* F~hからはじまる Ls -l {sh,ho}* sh||hoからはじまる Ls フォルダ名/ フォルダ名下を表示 マニュアル Man コマンド名 マニュアル ファイル作成、削除、移動 Touch ファイル名 Cp コピー元 → コピー先ファイル名 Mv 元ファイル名 新ファイル名 ファイル名変更 Rm ファイル名 ファイル削除 フォルダ作成、削除、移動 Mkdir フォルダ名 Mv ファイル名 フォルダ名/で フォルダ名下に移動 Mv 元フォルダ名/ 新フォルダ名 フォルダ名変更 Rmdir  フォルダ名/ でフォルダ削除 Mkdir -p mysite/css 階層まとめて作成 文字を打っている途中にtabキーで補完が効く 階層毎コピーする際は-r オプションをつける Cp -r コピー元フォルダ/ コピー先フォルダ Rm -r フォルダ中身毎削除 シンボリックリンク よく使うdirを保存 mkdir -p myapp/css/common ln -s myapp/css/common/ mycommon(シンボリックリンク) 階層のショートカット名みたいな cd (シンボリックリンク) touch (シンボリックリンク) /common.css ls (シンボリックリンク) rm (シンボリックリンク) 各動作も可 ファイル中身 cat フォルダ名 ページャーで見る more フォルダ名 spaceで次ページへ less フォルダ名 /検索名 で検索可 nで複数ヒット時次の検索結果まで検索できる テキスト操作コマンドあれこれ wc ファイル名 行数 単語数 バイト数 ファイル名 -l オプションをつけると行数とファイル名のみ head -num ファイル名 先頭からnum行表示 tail -num ファイル名 最後からnum行 検索表示 grep '検索文字' ファイル名 検索文字列を表示 オプション多々 履歴 history 過去行ったコマンド一覧 !num でnumのコマンド実行 !! で直前のコマンド実行 !-num でnum前のコマンド実行 !コマンド名の頭文字で過去コマンド保管して実行 !pw:p 過去コマンド確認 ctrl + rでも検索可 ユーザー管理、アクセス権限 /etc/passwd ユーザー名:パスワード:ユーザーID:ユーザー所属グループID:コメント:ホームディレクトリの位置:シェルコマンド グループ設定 /etc/group グループの名前:グループのパスワード:グループのID:グループのユーザー groups ユーザー名 で所属先一覧 アクセス権限 ls -l ファイル名 -rw-r--r-- 1文字目 - 通常ファイル d ディレクトリ l シンボリックリンク 2~4文字目ユーザのアクセス権 この場合 r + w 読み書き 5~7文字目所有するグループのアクセス権 r 8~10文字目その他ユーザーのアクセス権 r x 実行可能 || dirなら開くことが可能 アクセス権限変更 chmod a=rwxrwxrwx ファイル、フォルダ名 全権限付与 chmod u=rwx g=rwx o=rwx ファイル、フォルダ名 全権限付与 chmod u+rwx g+rwx o+rwx ファイル、フォルダ名 全権限付与 r=4 w=2 x=1 chmod 777 ファイル、フォルダ名 全権限付与 chmod 644 ファイル、フォルダ名 -rw-r--r-- sudoコマンド 権限がない場合にpassword確認などで一時的に実行可 vim vi ファイル名で編集可能 i 編集モード esc 編集やめ vim 終了:q 保存終了 :wq 保存せずに終了:q!. shell helloworld #!/bin/bash || ash echo 'helloworld' 環境変数 echo $PATH パスを通す = どこの階層からでも実行可能にする export PATH=pwd(現階層):$PATH which コマンド コマンドの呼び出し先 ログアウトすれば元に戻る リダイレクション echo 'cal' > cmd.txt cal書き込み(カレンダー) echo 'date' >> cmd.txt date追記 /bin/bash < cmd.txt cal date コマンド実行 /bin/bash < cmd.txt > result.txt result.txtに結果書き込み vi date #!/bin/bash date chmod u+x date ./date > result.txt 同意 パイプ ls -l /etc/ | grep sudo etcからsudoを検索 ls -l /etc/ | grep sudo | wc -l > result.txt etcからsudoを検索して件数を表示した結果をresultに書き込み ブレース展開 echo {1..20}{a..d}mkdi 順次実行 mkdir test && cd test コマンド順次実行 出席番号順フォルダ作成 mkdir id{1..30} id1~id30フォルダ作成 touch app{1..5}/test{1..3}{.jpg,.png,.gif} 各フォルダにtest1~3,各拡張子のファイル作成 rm app{1..5}/test{1..3}{.gif,.jpg} 各フォルダのgif.jpgを削除 検索 find test -name 'app3*' -type f ファイルのみ app3*を検索 find test -name 'app3*' -type d dirのみ 参考:dotinstall unix編
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

クリス フォレスト執筆図書一覧

クリスフォレスト執筆図書一覧 Splunk Enterpriseの始め方、Splunk Cloudへの引っ越し - Windows編 (2021/12/4) Splunk Enterpriseの始め方、Splunk Cloudへの引っ越し - Linux編 (2021/12/17) 本気でWindowsマシンを監視する方法: Splunk + Splunk Windows Add-on編 (2022/1/7) プロフィール Splunk Certified Architect資格保持。Splunkを触り始めて10年のキャリア。森を好み、森の中で一日中過ごしたいと思う森の妖精。最近は持ち前のデータアナリティクス思考をフル活用し、新たなイノベーションを見出すべく、仮想通貨に没頭中。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Game of Pods攻略(Redis Islands編)

Game of Pods攻略~Redis Islands~ redisHAクラスターの構築です Game of Pods関連のソースコードを挙げてます https://github.com/hayama17/Game-of-Pods 作りたい環境 Redisクラスター(StatefulSet) NodePort clinet port: 6379 targetport: 6379 gossip port: 16379 targetPort: 16379 PV6個 /dataをPVCにマウント /confをconfigmapにマウント PVの作成 6個作る。 一気に作りたかったけどやり方が分らない... apiVersion: v1 kind: PersistentVolume metadata: name: redis(01~06) #合わせて作る spec: capacity: storage: 1Gi accessModes: - ReadWriteOnce hostPath: path: /redis(01~06) #合わせて作る type: DirectoryOrCreate StatefulSetの作成 要件通りに作成 apiVersion: apps/v1 kind: StatefulSet metadata: name: redis-cluster spec: serviceName: redis-cluster replicas: 6 selector: matchLabels: app: redis template: metadata: labels: app: redis spec: containers: - image: redis:5.0.1-alpine name: redis command: ["/conf/update-node.sh", "redis-server", "/conf/redis.conf"] env: - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP ports: - name: client containerPort: 6379 - name: gossip containerPort: 16379 volumeMounts: - name: conf mountPath: /conf readOnly: false - name: data mountPath: /data readOnly: false volumes: - name: conf configMap: name: redis-cluster-configmap defaultMode: 0755 volumeClaimTemplates: - metadata: name: data spec: resources: requests: storage: 1Gi accessModes: - ReadWriteOnce NodePortの作成 apiVersion: v1 kind: Service metadata: name: redis-cluster-service spec: ports: - name: client port: 6379 targetPort: 6379 - name: gossip port: 16379 targetPort: 16379 selector: app: redis 各コンテンナをクラスターとして登録 $ kubectl exec -it redis-cluster-0 -- redis-cli --cluster create --cluster-replicas 1 $(kubectl get pods -l app=redis-cluster -o jsonpath='{range.items[*]}{.status.podIP}:6379 ') [ERR] Wrong number of arguments for specified --cluster sub command command terminated with exit code 1 あれ? 動かない... 原因 ラベルが違っていた yaml app: redis command app:redis-cluster 解決策 ラベルを変えるだけ $ kubectl exec -it redis-cluster-0 -- redis-cli --cluster create --cluster-replicas 1 $(kubectl get pods -l app=redis -o jsonpath='{range.items[*]}{.status.podIP}:6379 ') >>> Performing hash slots allocation on 6 nodes... . . . Can I set the above configuration? (type 'yes' to accept): yes >>> Nodes configuration updated . . . [OK] All 16384 slots covered. できた! GitHub
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS EC2(Amazon Linux2)でFTPサーバを構築する

今回はさくっとAWS EC2でFTPサーバお試し構築してみます。EC2は同一サブネットに2つデプロイして、1つをFTPサーバ、もう1つをクライアントとして設定し、FTPでファイル送受信を行う設定になります。 前提 利用するインスタンスはFTPサーバはAmazon Linux2で、クライアント側はWindows Serverとし、FTPソフトウェアはWinSCPとする コマンド操作はRoot権限のあるユーザで実施する 構築手順 ①EC2をサーバ、クライアント用でそれぞれデプロイ ②サーバ側にvsftpdをインストールして、FTPユーザを作成 ③vsftpdの設定ファイルをデフォルトから変更 ④クライアント側でWinSCPをインストールし、接続 実際にやってみた まず①についてはほ他に詳しい記事がたくさんあるので割愛します。EC2をデプロイしてRoot権限のユーザに昇格したものとして以下進めます。 次の②のvfstpdのインストールですが以下でインストールします。 #サーバ側にvsftpdをインストール yum -y install vsftpd    #vsftpdサービス起動および自動起動されるように設定 systemctl start vsftpd systemctl enable vsftpd   これでとりあえず、サーバ側で必要なパッケージは準備OKです。 クライアント用のEC2も同じVPCにデプロイして、RDPできるところまで進めます 続いて③ですがvsftpdの設定コンフィグである/etc/vsftpd/vsftpd.confの中身をデフォルトから変更していきます。 ※別にデフォルトのままでもFTP接続することは可能です。 #/etc/vsftpd/vsftpd.confを修正 vi /etc/vsftpd/vsftpd.conf ~~~以下抜粋~~~~ 1 # Example config file /etc/vsftpd/vsftpd.conf 2 # 3 # The default compiled in settings are fairly paranoid. This sample file 4 # loosens things up a bit, to make the ftp daemon more usable. 5 # Please see vsftpd.conf.5 for all compiled in defaults. 6 # 7 # READ THIS: This example file is NOT an exhaustive list of vsftpd options. 8 # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's 9 # capabilities. 10 # 11 # Allow anonymous FTP? (Beware - allowed by default if you comment this out). 12 anonymous_enable=YES  →「No」に変更 13 # 14 # Uncomment this to allow local users to log in. 15 # When SELinux is enforcing check for SE bool ftp_home_dir 16 local_enable=YES 12行目:anonymous_enable=YESは不特定ユーザのアクセス許可はセキュリティ上、よろしくないので「No」にします。 16行目:local_enable=Yesはローカルユーザ(/etc/passwdに記述されたユーザー)のアクセス許可なので「YES」のままでOKです。 112 # When "listen" directive is enabled, vsftpd runs in standalone mode and 113 # listens on IPv4 sockets. This directive cannot be used in conjunction 114 # with the listen_ipv6 directive. 115 listen=NO 116 # 117 # This directive enables listening on IPv6 sockets. By default, listening 118 # on the IPv6 "any" address (::) will accept connections from both IPv6 119 # and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6 120 # sockets. If you want that (perhaps because you want to listen on specific 121 # addresses) then you must run two copies of vsftpd with two configuration 122 # files. 123 # Make sure, that one of the listen options is commented !! 124 listen_ipv6=No 125 126 pam_service_name=vsftpd 127 userlist_enable=YES →「YES」だと userlist_file に記載しているユーザは接続拒否されるので「No」に変更 128 tcp_wrappers=YES 115行目:listen=スタンドアロンでvsftpdを起動するかの設定で、デフォルトが[NO]なのでそのままでOKです。 124行目:listen_ipv6=IPv4ソケットの代わりにIPv6ソケットをリッスンする。 このオプションとlistenオプションは、同時に有効にすることができないがこれも「NO」でOKです。 127行目:userlist_enable=userlist_fileオプション(デフォルトは/etc/vsftpd.user_listファイル)で指定したファイルに含まれるユーザリストを元に、ログインの許可/拒否が決定されます。[YES]にすると/etc/vsftpd.user_listがブラックリストになり、ユーザを追記するとアクセス拒否されてしまうので、今回は[NO]に変更しておきます。 「userlist_enable=YES」のままでも、下に「userlist_deny=NO」を記述すれば同じ設定にできますので、そっちの方がわかりやすいかもしれませんね。 FTPにはアクティブモードとパッシブモードがありますが、デフォルトだと「パッシブモード」で設定されます。 明示的に記載する場合は「pasv_enable=YES」とします。 とりあえず最低限の変更は以上です。 次にFTPでアクセスするユーザをサーバ側で作成します。 #ftpで利用するユーザを作成 useradd ftp-user passwd ftp-user New-Passwd:任意のパスワード 続いて、etc/vsftpd.user_listに先ほど作成したユーザを追記してやります。 vi etc/vsftpd.user_list ~~以下を追記~~ ftp-user またリストに既に記載されているユーザでもFTPサーバにアクセスできてしまうので、不要であれば削除しておきましょう。 最後に設定反映のためにvsftpdをサービス再起動させましょう。 systemctl restart vsftpd これでサーバ側の設定は完了です。 では④のクライアント側の設定に移ります。とっいてもEC2のログインして、WinSCPをインストールするだけなので手順は簡略化します。 とりあえず窓の杜からインストールしておけばOKです。 クライアントのEC2でWinSCPを起動させると以下のような画面になるので、「ホスト名」にサーバのIPアドレスを、ユーザ名のところに「ftp-user」と設定したPWを入力します。 こんな感じで接続できています! 参考にしたサイト 【AWS】閉域網のEC2にFTPサーバーを構築 【CentOS7】vsftpdでパッシブモードのFTPサーバーを設定する
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Splunk本出版のお知らせ - 「Splunk Enterpriseの始め方、Splunk Cloudへの引っ越し - Linux編」

先日出版した「Splunk Enterpriseの始め方、Splunk Cloudへの引っ越し - Windows編」はお陰様で大好評です。 ありがとうございました。 つづいて似たような構成ですが、Linux版もほしいという要望をいただきましたので、執筆いたしました。 「Splunk Enterpriseの始め方、Splunk Cloudへの引っ越し - Linux編: Unixアドオンを使ってみよう!https://www.amazon.co.jp/dp/B09NT1TJQB/ref=cm_sw_r_tw_dp_NECFEDEGA15C2VP5EPZ3」 Unixアドオンやデプロイメントサーバーも動かしていますので、面白いですよ。ぜひ、Linux大好きな方は読んでみてください。 Linuxログの収集や分析をする方法として、ぜひオススメしたいのがSplunk Enterprise。 そして効率よく、簡単に導入するガイドを、Splunk歴10年以上の著者が、簡潔、明瞭に執筆。 忙しいコンサルタント、エンジニアの方が、サクッと導入、サクッと分析、サクッとSplunk Cloudへ移行できるよう、わかりやすい内容になるよう心がけました。手を動かしながらでも、2時間程度で終わる内容にも関わらず、Linux Add-onを利用し、Universal Forwarderからも収集、Deployment Server機能も使い、最終的にはSplunk Cloudへお引越し。 ぜひこのスムーズなやり方をマスターしてください。 目次 はじめに Splunk EnterpriseとSplunk Cloudの違い Splunk Enterpriseのサポート期間に注意 Splunk アカウントの作成 オンプレ版をSplunk社サイトから入手 LinuxにインストールしたらLinuxを可視化 ここまでのおさらいと、他のマシンからもログ収集 もう一台のLinuxマシンから収集 Splunk Cloud Trialへ移行&集約する クラウドへの流れ Splunk Cloud Trialに申し込む Splunk Cloud Trial側にも同じAdd-onをインストール splunkclouduf.spl を取得 「test2」インデックスをSplunk Cloud 側で作成 Splunk EnterpriseをSplunk Heavy Forwarderへ Splunk Cloud Trialでの検索 Splunk Enterpriseのライセンス切り替え 最後に 著者プロフィール 著者のご紹介) クリス フォレスト Splunk Certified Architect資格保持。Splunkを触り始めて10年のキャリア。森を好み、森の中で一日中過ごしたいと思う森の妖精。最近は持ち前のデータアナリティクス思考をフル活用し、新たなイノベーションを見出すべく、仮想通貨に没頭中。 クリス フォレスト
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LinuxにDockerをインストールする方法

UbuntuでDockerをインストールする方法について説明します 手順 - リポジトリを設定 - Docker Engineをインストール - hello-worldイメージの実行 リポジトリを設定 Dockerのインストール前にaptパッケージインデックスを更新し、パッケージをインストールして、aptがHTTPS経由でリポジトリを使用できるようにします。 以下コマンドをターミナルにコピペして実行してください。 terminal sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release それぞれのコマンド実行の様子 terminal $sudo apt-get update Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB] Hit:2 http://archive.ubuntu.com/ubuntu focal InRelease Get:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB] Get:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB] Get:5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [1445 kB] Get:6 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [892 kB] Fetched 2672 kB in 4s (676 kB/s) Reading package lists... Done terminal $sudo apt-get install \ > ca-certificates \ > curl \ > gnupg \ > lsb-release Reading package lists... Done Building dependency tree Reading state information... Done lsb-release is already the newest version (11.1.0ubuntu2). lsb-release set to manually installed. ca-certificates is already the newest version (20210119~20.04.2). ca-certificates set to manually installed. curl is already the newest version (7.68.0-1ubuntu2.7). curl set to manually installed. gnupg is already the newest version (2.2.19-3ubuntu2.1). gnupg set to manually installed. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 続いて、Dockerの公式GPGキーを追加します。(実行後は特に何も表示されません) terminal curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 次に安定板のリポジトリをセットアップします。(実行後は特に何も表示されません) terminal echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null Docker Engineをインストールします。 terminal sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io それぞれのコマンド実行後の様子 sudo apt-get updateは再度実行します。 terminal $sudo apt-get update Get:1 https://download.docker.com/linux/ubuntu focal InRelease [57.7 kB] Get:2 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages [13.5 kB] Get:3 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB] Hit:4 http://archive.ubuntu.com/ubuntu focal InRelease Hit:5 http://archive.ubuntu.com/ubuntu focal-updates InRelease Get:6 http://archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB] Fetched 293 kB in 2s (130 kB/s) Reading package lists... Done terminal $sudo apt-get install docker-ce docker-ce-cli containerd.io Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: docker-ce-rootless-extras docker-scan-plugin pigz slirp4netns Suggested packages: . (途中省略) . Do you want to continue? [Y/n] Y Get:1 https://download.docker.com/linux/ubuntu focal/stable amd64 containerd.io amd64 1.4.12-1 [23.7 MB] Get:2 http://archive.ubuntu.com/ubuntu focal/universe amd64 pigz amd64 2.4-1 [57.4 kB] Get:3 http://archive.ubuntu.com/ubuntu focal/universe amd64 slirp4netns amd64 0.4.3-1 [74.3 kB] Get:4 https://download.docker.com/linux/ubuntu focal/stable amd64 docker-ce-cli amd64 5:20.10.12~3-0~ubuntu-focal [40.7 MB] Get:5 https://download.docker.com/linux/ubuntu focal/stable amd64 docker-ce amd64 5:20.10.12~3-0~ubuntu-focal [21.2 MB] 65% [5 docker-ce 32.3 kB/21.2 MB 0%] (以下省略) これでDockerがインストールされたので、Dockerを起動します。 terminal $ sudo service docker start * Docker is running Dockerが正常に起動したことを確認できたら、 hello-worldイメージを実行して、DockerEngineが正しくインストールされていることを確認します。 terminal $sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/ これでDockerのインストールは完了です。 <参考記事> Install Docker Engine on Ubuntu WSL上でDockerを動かす際に躓いたこと
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

WSL使ってWindowsにLinux環境構築してみた

Windows上にLinux環境を構築する方法について説明します。 今回はWSLというLinux用 Windows サブシステムを利用します。 環境 OS: Windows 10 バージョン21H1 手順 WSLのインストール Linux環境で使うユーザー名とパスワードを設定 Linuxパッケージの更新およびアップグレード WSLのインストール Windows PowerShellを【管理者】として実行します 起動したらコマンドwsl --installを実行します。 デフォルトではUbuntuがインストールされるので、それ以外をインストールしたい場合は wsl --list --onlineコマンドを実行しインストール可能なディストリビューションを調べて wsl --install -d Debianのように変更してインストールしてください。 PowerShell(Ubuntu以外を使いたい人向け) PS C:\Windows\system32> wsl --list --online インストールできる有効なディストリビューションの一覧を次に示します。 既定の分布は ' * ' で表されます。 'wsl --install -d <Distro>'を使用してインストールします。 NAME FRIENDLY NAME * Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling openSUSE-42 openSUSE Leap 42 SLES-12 SUSE Linux Enterprise Server v12 Ubuntu-16.04 Ubuntu 16.04 LTS Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS インストールコマンド実行 PowerShell PS C:\Windows\system32> wsl --install インストール中: 仮想マシン プラットフォーム 仮想マシン プラットフォーム はインストールされました。 インストール中: Linux 用 Windows サブシステム Linux 用 Windows サブシステム はインストールされました。 ダウンロード中: WSL カーネル インストール中: WSL カーネル WSL カーネル はインストールされました。 ダウンロード中: Ubuntu 要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。 PS C:\Windows\system32> インストールが完了したので、案内に従ってPCを再起動します。 再起動後にUbuntuのターミナルが立ち上がっていればWSLのインストールはOKです。 しかし、Ubuntuのインストールに失敗したようです。 Ubuntu Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x80370102 Error: 0x80370102 ?????????????????????????????????????? こちらの記事を参考にBIOSで設定を変えれば大丈夫です。 BIOSで設定を変更してPC再起動後、スタートメニューからUbuntuを起動します。 するとインストールが正常に進みユーザー名の入力が求められます。 Linux環境で使うユーザー名とパスワードを設定します ここで作成したユーザーはLinux 管理者と見なされ、sudo (Super User Do) 管理コマンドを実行できます。 今回はユーザー名をadminuserとしパスワードも入力すると以下のように進みます。 Ubuntu Enter new UNIX username: adminuser New password: Retype new password: passwd: password updated successfully Installation successful! To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.10.16.3-microsoft-standard-WSL2 x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Sat Jan 8 04:06:04 JST 2022 System load: 0.0 Processes: 8 Usage of /: 0.4% of 250.98GB Users logged in: 0 Memory usage: 0% IPv4 address for eth0: 172.31.192.218 Swap usage: 0% 0 updates can be installed immediately. 0 of these updates are security updates. The list of available updates is more than a week old. To check for new updates run: sudo apt update This message is shown once once a day. To disable it please create the /home/adminuser/.hushlogin file. adminuser@DESKTOP-4AABD6F:~$ これでLinuxが使える状態になったのでUbuntuで優先パッケージ マネージャーを使用して、パッケージを更新およびアップグレードします。(Windowsでは自動更新がないため手動で定期更新が必要です) Ubuntu sudo apt update && sudo apt upgrade これで環境構築は終了です <参考記事> WSL のインストール 【WSL2】wsl2のインストールで0x80370102 エラーが出たときの対処方法【HP】 WSL 開発環境を設定する
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

シェルとは?

はじめに 学んだことをqiitaに投稿という形でアウトプットするため、また備忘録として記事を作成しました。 シェルとは? Linuxの操作はコマンドでする シェルはコマンドを操作する場所 LinuxのCLIを提供するソフトウェア カーネルとユーザの橋渡しをしているのがシェル、インターフェース シェルの画面 ユーザ名、ホスト名、プロンプトが表示されている ・ユーザ名 ログインしているユーザ ・ホスト名はコンピュータなどの機器を人間が識別しやすいようにつけた名前、コンピュータの名前やIPアドレスが入っている ・プロンプト 「コマンド入力を待っているから、コマンドを入力してね」と待っている記号 シェルの仕組み 1、ユーザがプロンプトにコマンドを打つ 2、シェルが入力された名前のコマンドを探す 3、Linuxカーネルが見つかったコマンドを実行 4、シェルが実行されたコマンドを画面に表示 ※macではターミナルを立ち上げてコマンドを入力するが, ターミナルは入出力の画面を提供するソフトウェア シェルはコマンドを解釈するソフトウェア ターミナルの中でシェルが動いている 別物なので注意 なぜ別れているかというとLinuxにはひとつのプログラムにはひとつの機能をやらせる、色々な機能を出来るだけ細かく切り分ける設計思想がある。 機能が別れていることでお互いに影響を与えることなく柔軟に開発することが出来る、この設計思想は非常に有用で身につけるべき シェルの種類 ・sh  もっとも古い ほぼ全てのUnixで使用可能 機能は少ない ・bash shを基本として機能を拡張してシェル Linux環境でデフォルトのログインシェル 学習で使うならbashがおすすめ ・zsh bashの機能を取り込み、独自の拡張も追加 機能が豊富 まとめ シェルはLinuxのCLIを提供するソフトウェア プロンプトは入力待ちの記号 ターミナル、シェルは別物 シェルは3種類、sh,bash,zsh ひとつのプログラムにはひとつの機能をやらせる、色々な機能を出来るだけ細かく切り分ける設計思想がある
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxについて

はじめに 学んだことをqiitaに投稿という形でアウトプットするため、また備忘録として記事を作成しました。 背景を確認してから、勉強することで便利さを確認。使う意味を理解する。そして実際に手を動かしながらハンズオンで学び体に染み込ませる Linuxとは? OSの一種でコンピュータを動かすための基本ソフトウェア、これがないとコンピュータは動かない Windows,macOS,Android等 背景 1970年頃にUnixというOSが誕生 これはライセンス縛りがあり、有料 ソースコードは公開されていたので、様々なUnixの派生が誕生 しかし、ライセンス料がかかるので当時大学生のリーナス・トーバルズがLinuxを開発し、オープンソース化、無償で提供 オープンソースの文化の発展とともに育っていった。 無償で提供しているのでキャラツイフローサービス?(検索しても出てこなかった)という物が無い、なのでオープンソースを使うには、自分で調べたり、工夫したり自助努力が必要。そうやって問題解決したらインターネットで困っている人を助けてあげようと、お互いに助け合いながら開発。こうして育ってきたのがオープンソースの文化です。 どこで使われているか? サーバー、組み込み、デスクトップ サーバーのOSがLinuxだと操作ができないという状態に 特徴と欠点 特徴 ・信頼性が高い、サーバのOSとして広く普及。 ・自動化の仕組みがあり、サーバの運用が行いやすい。 欠点 ・商用アプリケーションがあまりない ーマイクロソフトオフィスが動作しない ー画像、音楽、動画などマルチメディア系の編集が苦手 ・日本語対応していない まとめ LinuxとはOSの一種 1991年にリーナス・トーバルズがUnixをベースに開発、リリース 幅広い用途で使われている なぜLiuxを学ぶのか? ・幅広いところで使われている サーバ用 ーweb系では90%以上のサーバがLinuxを使っている 組み込み機用 ・長年使われている ー多くのユーザに検証されていてこれから大きく仕様が変わることはない ー技術が枯れている ー一度習得すれば何年も使える、自分の基礎力として身に付く Linuxディストリビューションとは? カーネルとディストリビューション カーネルはOSの中核となるソフトウェア、狭義での意味でのLinuxとも呼べる。機能が少ないため実用的ではない ここに基本のコマンドやアプリケーションを付け加えてユーザがそのまま仕様出来るようにしてものをLinuxディストリビューションという。 一般的にLinuxと言ったら、このディストリビューションのことを指す ディストリビューションは1000種類以上がある。 Red Hat系とDebian系が主流 Red Hat系のCentOSが無償で 対してカーネルは一つ まとめ カーネルはOSの中核にソフトウェア ディストリビューションはカーネルに様々なソフトウェアを加えて使い易くしたもの ディストリビューションは1000種類以上あり、独自のコミュニティが開発している RedHat系とDebian系が主流
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む