- 投稿日:2019-02-26T23:33:43+09:00
VMware上での仮想マシン作成(CentOS 7)
はじめに
このページで説明すること
VMware上に仮想マシンを作成して、OS(CentOS 7)をインストールします。
大まかな流れは以下の通りです。
① 仮想マシンのイメージを作ります。空の箱を準備する作業です。
② OSをインストールします。空の箱に中身を入れる作業です。こんな方向け
✔ 初めてVMwareを使う人
✔ ひとつひとつの工程をキャプチャで確認したい人準備するもの
- VMware Workstation Player (今回、筆者の環境は14)
- インストールするOSのISOファイル (今回はCentOS 7 64-bitを使用 )
- 仮想マシンを作成できるスペックのホストPC (メモリやストレージの空き容量に注意!)
- (できれば)インターネットに接続できる環境
やってみよう!
仮想マシンイメージの作成
使用するOSとバージョンを選択し、[次へ]をクリックします。
今回は「Linux」「CentOS 7 64ビット」を選択しています。
仮想マシンのディスク容量を入力し、[次へ]をクリックします。
※注意※
あまりに大きいサイズにするとホストサーバが死亡するので気をつけましょう!
ただし、あまりに小さいとソフトウェアが動作しない可能性がありますので少し大きめにしておいた方がいいでしょう。
使いたいソフトウェアのシステム要件をチェックしておくとGood!
OSインストール
ISOの接続
(任意)インストール画面の解像度を変えておく方法
CentOS 7の場合、このままインストールすると画面が見切れて作業しづらいことがあります。
解像度を変更してからインストールを開始すると、適切な画面サイズで作業できます
下部にあるインストールオプション(白い文字の部分)の、「...quiet」の後ろに
resolution=1360x768
と付け足して「Enter」キーを押します。
※設定が英語キーボード(101キーボード)になっている場合、「=」は日本語キーボードでは「^」を押すことで入力できます。
インストール言語の設定
地域設定
日付と時刻
キーボード
言語サポート
ソフトウェア設定
インストールソース
- 何もしなくて構いません
ソフトウェアの選択
システム設定
インストール先
ディスクの追加やパーティション構成を設定し、左上の[完了]をクリックします。
▼パーティション:
初めてのときや、とにかく何でもいいからサーバが欲しいときは[パーティションを自動で構成する]を選択します。
画像の例では[パーティションを自分で構成する]を選択しています。
(パーティションを自分で構成する場合)以下の画面で左下の[+]をクリックします。
パーティションの考え方と推奨値については、【Red Hat社公式サイト】推奨されるパーティション設定スキームで確認できます。
今回は/work(5120MiB)と/home(512MiB)を作成してみました。
※ユーザをほとんど作らない予定のため、/homeはRed Hat社の推奨値より小さくしています。
パーティションを決めたら、左上の[完了]をクリックします。
kdump
ネットワークとホスト名
Security Policy
- ここでは何もしなくて構いません
インストールの開始
root以外のユーザを作成する場合は、[ユーザの作成]をクリックし、ユーザ名やパスワードを設定します。
おつかれさまでした
これで仮想マシンを使えますね!
- 投稿日:2019-02-26T22:19:12+09:00
Docker Registryを構築する
はじめに
本記事は、Docker Registryを使用して、プライベートレジストリ環境を構築する手順について記載しています。
本記事の環境は以下になります。
手元のMacBook Airがクライアントで、iMacがプライベートレジストリ環境になります。Docker Registry
Docker Registryは、Dockerイメージを一元管理するためのリポジトリサービスです。
公式のDocker Hubでは、CentOSなど各種Linuxディストリビューションの公式イメージや、有志で作成されたイメージなどが配布されています。公式イメージの「registry」を使用することで、プライベートレジストリ環境を構築することができます。
現在、registryはVersion2.0系が主流で、Go言語で実装されています。
Docker Registryの構築
イメージのダウンロード(registry)
はじめに、registryイメージをダウンロードします。
- ダウンロードするイメージの確認
docker search registry
NAME DESCRIPTION STARS OFFICIAL AUTOMATED registry The Docker Registry 2.0 implementation for s… 2454 [OK] konradkleine/docker-registry-frontend Browse and modify your Docker registry in a … 213 [OK] hyper/docker-registry-web Web UI, authentication service and event rec… 161 [OK] atcol/docker-registry-ui A web UI for easy private/local Docker Regis… 113 [OK] distribution/registry WARNING: NOT the registry official image!!! … 57 [OK] marvambass/nginx-registry-proxy Docker Registry Reverse Proxy with Basic Aut… 44 [OK] jhipster/jhipster-registry JHipster Registry, based on Netflix Eureka a… 41 [OK] google/docker-registry Docker Registry w/ Google Cloud Storage driv… 37 confluentinc/cp-schema-registry Official Confluent Docker Images for Schema … 29 joxit/docker-registry-ui Docker registry v2 web User Interface 23 [OK] klausmeyer/docker-registry-browser Web Interface for the Docker Registry HTTP A… 17 [OK] openshift/origin-docker-registry The integrated OpenShift V3 registry 13 deis/registry Docker image registry for the Deis open sour… 12 landoop/schema-registry-ui UI for Confluent's Schema Registry 7 [OK] parabuzzle/docker-registry-ui Docker registry frontend for registry v2 6 quiq/docker-registry-ui Docker Registry UI 5 anoxis/registry-cli You can list and delete tags from your priva… 5 [OK] elasticio/docker-registry-ecs Docker image to run Docker private registry … 4 [OK] allingeek/registry A specialization of registry:2 configured fo… 4 [OK] webhippie/registry Docker images for registry 1 [OK] aibaars/docker-registry2-gcs Docker Registry2 w/ Google Cloud Storage dri… 1 yammer/docker-registry-cache Simple docker registry cache using squid-pro… 1 [OK] convox/registry 0 lorieri/registry-ceph Ceph Rados Gateway (and any other S3 compati… 0 torchbox/kube-registry-proxy kube-registry-proxy fork with correct timeou… 0 [OK]
- イメージのダウンロード
docker pull registry
Using default tag: latest latest: Pulling from library/registry 169185f82c45: Pull complete 046e2d030894: Pull complete 188836fddeeb: Pull complete 832744537747: Pull complete 7ceea07e80be: Pull complete Digest: sha256:870474507964d8e7d8c3b53bcfa738e3356d2747a42adad26d0d81ef4479eb1b Status: Downloaded newer image for registry:latest
- イメージの確認
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE registry latest d0eed8dad114 3 weeks ago 25.8MB centos latest 1e1148e4cc2c 2 months ago 202MB
コンテナの起動
次に、ダウンロードしたregistryイメージをもとにレジストリ用のコンテナを起動します。
レジストリは5000番ポートを使用します。
- コンテナの起動
docker run -d -p 5000:5000 registry
e4a6f960fdb3c79250a4baf90e84c96bcebedd86c023900bb3786f32828ae0b8
- コンテナの起動確認
docker ps --format "{{.ID}}\t{{.Image}}\t{{.Ports}}"
e4a6f960fdb3 registry 0.0.0.0:5000->5000/tcp
これでプライベートレジストリ環境が構築できました。
イメージのアップロード
構築したレジストリ環境にアップロードするためのイメージを作成します。
(※)本記事の環境はMac本記事では例として、CentOSののベースイメージにnginxをインストールします。
なお、nginxをインストールするためには、nginx用レポジトリの追加が必要になるため、公式を参考にして、レポジトリファイルの内容をコピーして作成します。
- Dockerfileの作成
vi Dockerfile
# イメージの取得 FROM centos:latest # 作成者情報 MAINTAINER 0.1 https://twitter.com/Brutus08159681 # Nginx用レポジトリファイルのコピー ADD nginx.repo /etc/yum.repos.d/ # Nginxのインストール RUN ["yum", "-y", "install", "nginx"] # Nginxの自動起動設定 RUN ["systemctl", "enable", "nginx.service"]
- nginx.repoの作成
vi nginx.repo
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key
- Dockerファイルのビルド
docker build -t webserver .
Sending build context to Docker daemon 10.75kB Step 1/5 : FROM centos:latest ---> 1e1148e4cc2c Step 2/5 : MAINTAINER 0.1 https://twitter.com/Brutus08159681 ---> Running in 4d7ff271e184 Removing intermediate container 4d7ff271e184 ---> 360f621826fd Step 3/5 : ADD nginx.repo /etc/yum.repos.d/ ---> 065d346e93ad Step 4/5 : RUN ["yum", "-y", "install", "nginx"] ---> Running in db772f205c5a Loaded plugins: fastestmirror, ovl //途中省略 Installed: nginx.x86_64 1:1.14.2-1.el7_4.ngx Dependency Installed: make.x86_64 1:3.82-23.el7 openssl.x86_64 1:1.0.2k-16.el7 Complete! Removing intermediate container db772f205c5a ---> a5dc224331c9 Step 5/5 : RUN ["systemctl", "enable", "nginx.service"] ---> Running in cb98e1b1ec8a Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service, pointing to /usr/lib/systemd/system/nginx.service. Removing intermediate container cb98e1b1ec8a ---> afd46670157f Successfully built afd46670157f Successfully tagged webserver:latestプライベートレジストリにアップロードするために、先ほど作成したイメージにタグを付けます。
- タグ付け
docker tag webserver localhost:5000/nginx
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE webserver latest bc4ced76a58a 2 minutes ago 284MB localhost:5000/nginx latest bc4ced76a58a 2 minutes ago 284MB registry latest d0eed8dad114 3 weeks ago 25.8MB centos latest 1e1148e4cc2c 2 months ago 202MB
タグ付けしたイメージをプライベートレジストリ環境にアップロードします。
- イメージのアップロード(コンテナのプライベートレジストリ)
docker push localhost:5000/nginx
The push refers to repository [localhost:5000/nginx] eecb714a1eec: Pushed f12d083c2a5d: Pushed fbf94d353010: Pushed 071d8bd76517: Layer already exists latest: digest: sha256:ec84796f9312457e9afd0a0b3fff1ee40e52512f4f3b83dbaee8a7e728971ee4 size: 1155
イメージのアップロードが完了したので、確認のため、ローカルに保存したイメージを削除します。
docker rmi webserver
Untagged: webserver:latest
docker rmi localhost:5000/nginx
Untagged: localhost:5000/nginx:latest Untagged: localhost:5000/nginx@sha256:ec84796f9312457e9afd0a0b3fff1ee40e52512f4f3b83dbaee8a7e728971ee4 Deleted: sha256:afd46670157fa5608642dae40aaad502eb69787bb0494536d9774089f7e44d8d Deleted: sha256:edfe82b3e83ea6e3fbcb29ba5d801f7a00d5cc6cd1c650fe519d00fbea6a34f7 Deleted: sha256:a5dc224331c9be59615fdf8101d188ed56dd6052176c744f07d1bbdb23109464 Deleted: sha256:313c7c3089ee43faf482383dcb1e04e35cef648c566332239a86920fb4921d1e Deleted: sha256:065d346e93ad13542b6790324f0ca7766335730334d0d39200948239737164a6 Deleted: sha256:d24e00ece851f250e549c84f3e2165f952cee2bf43c913dd1328023e8888bb81 Deleted: sha256:360f621826fd1ad8823e54e70a586a37cbdea1c9844b6b9f7b00853537931548
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE registry latest d0eed8dad114 3 weeks ago 25.8MB centos latest 1e1148e4cc2c 2 months ago 202MB
イメージのダウンロード(プライベートレジストリ環境→nginxのイメージ)
プライベートレジストリ環境にあるレジストリ用のコンテナから、先ほどアップロードしたnginxのイメージをダウンロードします。
- コンテナのプライベートレジストリ環境からダウンロード
docker pull localhost:5000/nginx
latest: Pulling from nginx a02a4930cb5d: Already exists 53cacbc24ea9: Pull complete 6743d7a92897: Pull complete 0b2d1befb17c: Pull complete Digest: sha256:ec84796f9312457e9afd0a0b3fff1ee40e52512f4f3b83dbaee8a7e728971ee4 Status: Downloaded newer image for localhost:5000/nginx:latest
- イメージの確認
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE localhost:5000/nginx latest afd46670157f 3 minutes ago 284MB registry latest d0eed8dad114 3 weeks ago 25.8MB centos latest 1e1148e4cc2c 2 months ago 202MB
- コンテナの起動
docker run --privileged --name "test1" -d -p 8080:80 localhost:5000/nginx /sbin/init
- nginxの起動確認
ブラウザからローカルホストの8080にアクセスします。「Welcome to nginx!」の画面が表示されればOKです。
他のDockerクライアントからのダウンロード
他のDockerがインストールされているクライアントから、プライベートレジストリ環境にあるイメージをダウンロードする手順について解説します。
プライベートレジストリ環境のイメージをダウンロードする場合は、docker pullコマンドの引数にプライベートレジストリ環境のIP:5000/取得イメージ名を指定するだけですが、ホスト側で証明書の設定をしていないと以下のようにエラーが出力されます。
docker pull プライベートレジストリ環境のIP:5000/nginx
Using default tag: latest Error response from daemon: Get https://プライベートレジストリ環境のIPアドレス:5000/v2/: http: server gave HTTP response to HTTPS client
ホスト側で証明書を使用しないでHTTP接続する場合は、以下の設定を行います。
(※)本記事の環境はMacクライアン側のDockerアイコンをクリックして、perferencesのDeamonタブを開きます。
insecure-registries:の「+」をクリックし、プライベートレジストリ環境のIP:5000を追加します。最後に、「Apply & Restart」をクリックします。
Docker再起動後、再度、docker pullコマンドを実行すると、イメージがダウンロードできます。
Using default tag: latest latest: Pulling from nginx a02a4930cb5d: Pull complete 53cacbc24ea9: Pull complete 6743d7a92897: Pull complete 0b2d1befb17c: Pull complete Digest: sha256:ec84796f9312457e9afd0a0b3fff1ee40e52512f4f3b83dbaee8a7e728971ee4 Status: Downloaded newer image for プライベートレジストリ環境のIPアドレス:5000/nginx:latest
おわりに
プライベートレジストリ環境を構築することで、統一したイメージを使用した開発ができるので、Dockerの持ち味をより引き出せます。
参考
- 投稿日:2019-02-26T22:12:52+09:00
Linux の Homebrew を試してみた
こんにちは
Linux でも、最新バージョン(例えば GitHub の latest バージョン)をほぼ常に使いたい場合には、Homebrew が解となりそうです。実際にインストールして試してみました1。$ brew --version Homebrew 2.0.2 Linuxbrew/homebrew-core (git revision 26046; last commit 2019-02-26) $ brew install gcc binutils $ g++ --version g++ (Homebrew gcc 5.5.0_4) 5.5.0 $ ld --version GNU ld (GNU Binutils) 2.32 $ which gcc /home/linuxbrew/.linuxbrew/bin/gcc $ which ld /home/linuxbrew/.linuxbrew/bin/ld標準的なコンパイル方法例は、
$ g++ -std=c++11 -I/usr/include -I$HOMEBREW_PREFIX/include -L$HOMEBREW_PREFIX/lib test.cppなお MacOSX (の Homebrew)では、Xcode でインストールした
clang++
を使い、/bin/ls
を使うところが、比較すると異なっている気がしました。
「brewがlinuxで使えるらしいのでやってみる」などで紹介されています。 ↩
- 投稿日:2019-02-26T22:12:52+09:00
Linux の Homebrew を試した
こんにちは
Linux でも、最新バージョン(例えば GitHub の latest バージョン)をほぼ常に使いたい場合には、Homebrew が解となりそうです。実際にインストールして試してみました1。$ brew --version Homebrew 2.0.2 Linuxbrew/homebrew-core (git revision 26046; last commit 2019-02-26) $ brew install gcc binutils $ g++ --version g++ (Homebrew gcc 5.5.0_4) 5.5.0 $ ld --version GNU ld (GNU Binutils) 2.32 $ which gcc /home/linuxbrew/.linuxbrew/bin/gcc $ which ld /home/linuxbrew/.linuxbrew/bin/ld標準的なコンパイル方法例は、
$ g++ -std=c++11 -I/usr/include -I$HOMEBREW_PREFIX/include -L$HOMEBREW_PREFIX/lib test.cppなお MacOSX (の Homebrew)の場合では、Xcode でインストールした
clang++
を使い、/bin/ls
を使うところが、比較すると異なっている気がしました。
「brewがlinuxで使えるらしいのでやってみる」などで紹介されています。 ↩
- 投稿日:2019-02-26T22:00:26+09:00
Ruby irb、テキストエディタ使用とエラー解決方法
動作環境はMacとなります。
主に自分の勉強用メモとして残しています。Rubyプログラム irb使用
文字列はシングルクオートかダブルクオートで囲む
irb(main):001:0> "Hello, World" => "Hello, World"#Rubyは最後の式を自動的に出力するので、プログラムとは言えない。putsは何かを出力する命令で、これをつけることでプログラムと言える。
irb(main):004:0> puts 'Hello World!'#これがプログラム Hello World! => nil#putsは必ずnilを返す数値の計算
irb(main):005:0> 1 + 1 => 2 irb(main):006:0> 10 - 1 => 9irbで記述したプログラムをクリアしたい時
clear か control+lキー
irbを終了したい場合
exit か contol+dキー
テキストエディタ使用
この環境ではAtom使用しています。
$はターミナルでの操作を表します。ファイル作成
$mkdir ruby_projects #mkdirはmake directoryの略でファイル作成の意味$ls #今いるディレクトリの中身を確認 $cd ruby_projects/ #今いるディレクトリから移動 $touch hello.rb #ファイル作成 $atom . #Atomを開く時のコマンドrubyプログラムを作成する場合、拡張子は.rbとする。
テキストエディタ
hello.rbputs 'Hello, World!'#行末に;をつけてもエラーにはならないが、rubyは改行で認識されるため通常書かない puts 10 + 3ターミナル
$ ruby hello.rb #ruby + ファイル名で出力 Hello, World! 13Linuxコマンド
現在のディレクトリをカレントディレクトリという。
ディレクトリとファイルはざっくり同じ。$ pwd #現在いるファイルの階層を表示 $ cd .. #現在いるフォルダの1つ上の階層に移動 $ ls #現在いるフォルダの中身を表示エラーを自力で取り除く方法
hello.rbputs 'Hello, World!' put 10 + 3 #putsをputと間違えたターミナル
$ ruby hello.rb Hello, World! #問題なく出力される。 hello.rb:2:in `<main>': undefined method `put' for main:Object (NoMethodError) #hello.rbファイルの二行目のputというメソッドがないよというエラー Did you mean? puts putc #もしかしてこういう意味?とエラーが教えてくれている。メソッドとは処理のまとまりのこと。
エラーメッセージをグーグル検索すると、解決の意図が見つかることが多い。
特にrubyは日本で広く普及されているので、情報が見つかりやすい。以上を踏まえて修正
hello.rbputs 'Hello, World!' puts 10 + 3 #putをputsへ修正ターミナル
$ ruby hello.rb Hello, World! 13正常にプログラムが実行された!
- 投稿日:2019-02-26T21:53:59+09:00
nmcliでネットワークの初期設定の実施
背景
ネットワーク関連の設定方法nmcli編
仮想マシン構築したりする際にぱっと出てこないのでチートシートman
何事もmanを読むとこから。
usageだけ参照。NAME nmcli - command-line tool for controlling NetworkManager SYNOPSIS nmcli [OPTIONS...] {help | general | networking | radio | connection | device | agent | monitor} [COMMAND] [ARGUMENTS...]NIC繋いだらやること
デバイスを確認 $ nmcli device インターフェイスを有効化 $ nmcli connection modify eth0 connection.autoconnect yesIPアドレス変更
$ nmcli connection modify ens1 ipv4.method manual ipv4.addresses 192.168.1.100/24
再起動後も含めた恒久的な変更は「connection.autoconnect yes」を付与するだけです。
nmtuiでいう「autoconnect」がこれに当たります。$ nmcli connection modify ens1 ipv4.method manual ipv4.addresses 192.168.1.100/24 connection.autoconnect yesデフォルトゲートウェイやDNSも変更できる
デフォルトゲートウェイを設定 $ nmcli connection modify eth0 ipv4.gateway 172.16.0.1 DNS設定 $ nmcli connection modify eth0 ipv4.dns 172.16.0.1ホスト名変更
hostnamectlとかでもいいですがnmcliでも変更できます。便利。
「systemd-hostnamed」$ nmcli general hostname srv01 $ systemctl restart systemd-hostnamedNIC名変更
NICの名前の変更も出来ます。
デフォルトで6系から命名規則が変わりましたが$ nmcli c m ens0 connection.interface-name enp0s8 connection.id ensBondig
bondingデバイスを追加
$ nmcli connection add type bond autoconnect no con-name bond01 ifname bond01 mode active-backupslaveを割り当てる
$ nmcli connection add type bond-slave autoconnect no ifname enp8s0f1 master bond01bondingデバイスへIPアドレスを割り当てる
$ nmcli connection modify <bond con-name> ipv4.method manual ipv4.address <ip address/suffix> ipv4.gateway <gateway address> ipv6.method ignore $ nmcli connection modify <bond con-name> ipv4.dns <dns address>自動接続設定の無効化(元のNICの設定を変更)
$ nmcli connection modify <slave con-name①> connection.autoconnect no
自動接続設定
$ nmcli connection modify bond-slave-<slave con-name①> connection.autoconnect yes $ nmcli connection modify bond-slave-<slave con-name②> connection.autoconnect yes $ nmcli connection modify <bond con-name> connection.autoconnect yes $ nmcli connection modify <bond con-name> connection.autoconnect-slaves 1Bondigモデルの説明
・balance-rr 全スレーブを順繰り(ラウンドロビン)に使ってパケットを送信。 送信のみ負荷分散。 ・active-backup 1つのスレーブのみを active interfaceとしパケットを送信。 active interfaceに障害が発生した場合、他の backup slave を active interfaceに切り替え、冗長性を確保。 ・balance-xor 送信元/先 MACアドレスを元に送信スレーブを決定しパケットを送信。 送信のみ負荷分散。 ・802.3ad IEEE 802.3ad(LACP)に準拠したリンクアグリゲーション。 ・balance-tlb スレーブの負荷に応じて送信スレーブを決定しパケットを送信。 送信のみ負荷分散 ・balance-alb balance-tlbの機能に加え、受信も負荷分散。 ・balance-alb balance-tlbの機能に加え、受信も負荷分散。まとめ
本業じゃないので雑な感じになってます。
参考リンク
https://blog.lorentzca.me/configure-network-bonding-in-centos7-dont-forget-subnetmask/
https://qiita.com/yteraoka/items/e661c2a8c6e7617e64f9
- 投稿日:2019-02-26T21:37:20+09:00
Red Hat Enterprize Linux 8.0 Betaをとりあえずインストールしてみました。
Red Hat Enterprize Linux 8.0 Betaをとりあえずインストールしてみました。
Red Hat Enterprize Linux 8.0 Betaをとりあえずインストール
2018年11月15日にRed Hat Enterprize Linux 8.0 Betaが公開されました。
なので、とりあえずVMware Workstation 15 Playerにインストールしてみました。注意点として、ゲストOSの選択でLinuxを選択し、バージョンを「その他のLinux4.x以降のカーネル」を選択すること。
※64ビットを選択するとディスクを認識しないので必ず、64ビットの記載なしのほうを選択して下さい。(私はこれが分からずハマリました...w)
後は、RHEL7となんら変わらずにインストールできました。(Beta版では言語で日本語は選択肢が存在しませんでした。
Red Hat Enterprize Linux 8.0 Betaの気になったポイント
カーネルがやっと4.18(5.0のrc版が出ているのに!?)
AnacondaのGUIや、Kickstartコマンドにおいて、Btrfsが利用できなくなります。
RedHat 7.xでは、ntpとchronyの両方が利用可能でしたが、8.xではchronyのみがサポート。
yumがDNFベースのYum 4に変更。(サブコマンドが拡張されてます)
ディスプレイサーバーがXorgからWaylandに変更されます
iptables、firewalldがnftablesに置き換えられます。(firewalldをやっと覚えたのに・・・。)
ストレージ暗号化のデフォルトフォーマットがLUKSv2に変更。
OpenSSL 1.1.1およびTLS 1.3をサポート
シンプルで一貫したユーザ管理画面「Red Hat Enterprise Linux Web Console」
API経由での洗練されたデータ管理を実現する新ストレージ管理システム「Stratis」
IPVLANを経由で仮想マシンに配置されたコンテナとホストを接続することで,スループットの負荷を低減し,レイテンシを最小限に
ネットワークのパフォーマンスを高速化する新たなTCP/IPスタックとして「Bandwith and Rpund-trip propagation time(BBR)」を採用
RHELのリポジトリがBaseOSとAppStreamsの2つになりました。
以上、個人的(ITインフラ開発者として)にきになった点をざっと羅列してみました!
なお、RHEL8の変更点が以下のスライドでまとまってました。
https://speakerdeck.com/moriwaka/red-hat-enterprise-linux-8-betafalsemidokoroRed Hat Enterprise Linux 8の一般提供は2019年中だそうです。
最後に
とあえず今日はここまでとします。
nftables、chrony、リポジトリについては、後々調査してレポートしてみたいと思います。
「Red Hat Enterprise Linux Web Console」もどんなものか興味ありますが、何せ情報が少ない。
- 投稿日:2019-02-26T20:15:09+09:00
大いなる力には大いなる責任が伴うらしい
先日の勉強会での話。
社内の勉強会でSVNを利用しているのだが、先日Apacheが落ちていてSVNが起動しなかった。サーバー管理者の人はまだ来ていないけど、きっとこのコマンドで行けるはず・・・というわけで、以下コマンドをがちゃがちゃ。
sudo service httpd restart
Enter!
あなたはシステム管理者から通常の講習を受けたはずです。 これは通常、以下の3点に要約されます: #1)他人のプライバシーを尊重すること。 #2)タイプする前に考えること。 #3)大いなる力には大いなる責任が伴うこと。・・・ほう。
結局何かあっても怖いので管理者が来るまで待った(ノД`)・゜・。
余計なことしなきゃよかったーと涙・・。あとから調べてみると、上記メッセージはsudoコマンドを初めて実行すると表示されるそうだ。
大いなる力には大いなる責任が伴う・・。確かにその通りかもしれない。
ちなみに3)の元ネタはスパイダーマンだそう。
- 投稿日:2019-02-26T13:35:06+09:00
celeron搭載の低スペックPCでは、本当にプログラミングは出来ないのか?
qiitaの投稿にハマり始めた駆け出しエンジニアです。
今日の投稿は、PCにちょっとだけ知識があった未経験新人エンジニアが実体験した記事です。
普段はPCでネットサーフィンをする位だけど、今回初めてLINUXに挑戦してみるよ!という方向けの記事になります。
プロの方から見たら恥ずかしい内容かもしれませんが、個人的にすごく達成感があったので誰かのお役に立てればと思い投稿してみました。それでは、低スペックPCでプログラミングは出来ないのか?という課題について解決してみたいと思います。
対象PCスペック
mouse computer製 LB-C240E-S-MA
CPU celeron N3160 64bit
メモリー 3.8GBプログラミングでは仮想環境を構築することが多いと思いますが、スペック不足で仮想環境が構築できないことがあると思います。
※上記スペックで仮想環境を構築したらPCがフリーズしました…汗笑ここまでくるにあたり、色々と試してみました↓↓
・fedora(初心者には難しかった)、
・CentOS(上に同じ)、
・Kari Linux(そもそも初心者が手を出してはいけなかった...笑)、
・Linux mint(エディター使用時、chmodでもファイル変更権限が解決できない問題)、
・AWS cloud9(オンライン環境でしか使用できない。でもすごく便利)結果、一番しっくりくるのものがUbuntuで最低限のパッケージをインストールする方法でした。
記事の内容では、既存のOSを削除してLINUXのみをインストールしています。windows、macOSは無くなりますのでご注意下さい。
以下方法です。
-手順①LINUXの入手-
LINUXのディストリビューション(配布という意味)入手します。
Ubuntu japanese team : https://www.ubuntulinux.jp/「Ubuntuのダウンロード」と進み、
↓
「日本語Remixイメージのダウンロード」と進み、
↓
「ubuntu-ja-18.04.1-desktop-amd64.iso(ISOイメージ)」をダウンロードさせて頂きました。-手順②USB起動ディスクの作成-
用意するもの
・Rufus を使用させて頂きました。
Rufus : https://rufus.ie/
・USBメモリー(手元にあった16GBの物を使いました)先ほどのISOファイルを使います。
使い方は製作者様のHPに記載がありますのでここでは割愛します。ここまでで、Ubuntuの起動ディスク(が入ったUSBメモリー) が完成します。
-手順③BIOSの設定-
予め、先ほど作成したUSB起動ディスクを対象のPCにセットしておきます。
次に対象のPCのBIOSを起動します。
今回インストールしたPCは電源を入れた後、F2連打でBIOS画面に移りました。どのボタンを連打するかはPCによって違うみたいです。
初めてBIOSを見ると「大丈夫かな・・」となると思いますが、慣れると面白いです。
BIOS起動後、Bootタブを選びます。
「Boot Option Priorities」という文があり、その下に4行程なにやらあると思います。
これが、起動時に選択をしているところです。
ここを、先ほど作成したUSB起動ディスクから起動できるように設定を変更します。
「enter」で選択した後、USB起動ディスク以外の項目を全て「Disabled」に変えてしまいます。
終わりましたら「Save & Exit」タブを選択し「Save Changes and Reset」を選択して「Yes」を押すと再起動します。
-手順④LINUXのインストール-
Ubuntuの説明通りにインストールすれば問題なく進めることが出来ると思います。
途中、「フルパッケージを入れるか?最低限のものにするか?」的な事を聞かれます。
今回の対象PCはスペックが低い為、最低限のインストールパッケージを選択しました。またまた途中で、「現在あるOSを削除します」的な選択が出てくると思います。
今回の記事では既存のOSを削除してLINUXのみをインストールしたいので、
少し緊張しますが、ここで既存のOSに別れを告げ、新たにUbuntuさんを迎える準備をして下さい。順調にいけばこのまま進めると思います。
インストール完了後、PCログイン画面が表示され、ログインしたら可愛いビーバーさんが表示されていると思います。
これで、USBはもう外して大丈夫です。
-手順⑤BIOSの設定変更-
最後に、BISOの設定を元に戻しておきます。
BIOSを起動した後、手順③で設定したUSB起動ディスクを「Disabled」にしておきましょう。
これで無事Ubuntuがインストール出来ると思います。自分はこの低スペックPCにUbuntuをインストールし、Java環境構築とeclipseエディター使い正常に使えています。
新しいハイスペックPCを購入して仮想環境を構築する方法も解決策としてありますが、こういった形で解決するという方法もあります。
(自分はただお金がないだけでしたが・・・笑)初めての挑戦は何でも怖いです。僕はちょっと前まで右も左も分かりませんでした。
しかし、知らないものに挑戦することに価値があると思います。
出来ないことが出来る様になる、という事はとても楽しい事だと思いますので、
興味のある方は是非挑戦してみてください。
結論「 LINUX は すごく 楽しい。」
※但し、スクール等で勉強中は、仮想環境構築出来るスペックのPCを買った方が効率が良いです。
最後に、ここまで協力してくださった方々、ソフトウェアの開発者様にこの場を借りてお礼を申し上げます。
ありがとうございます。
- 投稿日:2019-02-26T03:38:57+09:00
ハッシュ値を使ってディレクトリ内の変更を確認するshell script
1. ディレクトリ内のファイルを確認
~ $ cd /media/test/ /media/test $ ls -1 japan.wav tone.wav voice.wav2. ファイルをアルファベット順にリスト化する
/media/test $ ls -1 /media/test |sort |sed 's/^\(.*\)$/"\1"/g' > /media/file_list /media/test $ cat /media/file_list "japan.wav" "tone.wav" "voice.wav"3. ファイルごとのハッシュ値を求める
/media/test $ cat /media/file_list |xargs sha1sum > /media/cache_list /media/test $ cat /media/cache_list 2a81a44333cd78a4011131d7988682129499b5ab japan.wav f6f9e50fe7414c8618a9a4a71172072b6915b060 tone.wav 0a22fa706661d01348569199a68c37aa5373f3c3 voice.wav★ハッシュ値はデータの中身が一つでも違うと異なる値になる
4. 一つのハッシュ値を求める
/media/test $ sha1sum /media/cache_list |sed 's/\s\s*\/.*$//g' > /media/cache /media/test $ cat /media/cache 5caaff923034a87e3416542c95608b17693bde0b5. ディレクトリ内の変更を確認するスクリプト
4.で求めたハッシュ値が前回と異なっていれば変更アリ。同じであれば変更ナシとなる。
#!/bin/sh # $1 - 前回のハッシュ値 TEST_DIRECTORY="/media/test" FILE_LIST="/media/file_list" CACHE_LIST="/media/cache_list" CACHE="/media/cache" cd $TEST_DIRECTORY ls -1 $TEST_DIRECTORY |sort |sed 's/^\(.*\)$/"\1"/g' > $FILE_LIST cat $FILE_LIST |xargs sha1sum > $CACHE_LIST sha1sum $CACHE_LIST |sed 's/\s\s*\/.*$//g' > $CACHE cd EXPECTED_CACHE=$1 CURRENT_CACHE=`cat $CACHE` if [ "x${EXPECTED_CACHE}x" = "x${CURRENT_CACHE}x" ] then echo "Up-to-date" else echo "Need to update" fi実行結果
~ $ /media/./test.sh 5caaff923034a87e3416542c95608b17693bde0b Up-to-date ~ $ /media/./test.sh aaa Need to update参考
ls -1: https://kazmax.zpp.jp/cmd/l/ls.1.html
xargs: https://www.atmarkit.co.jp/ait/articles/1801/19/news014.html
sortコマンド: https://eng-entrance.com/linux-command-sort
sedコマンド: https://hydrocul.github.io/wiki/commands/sed.html
ハッシュ値: https://eng-entrance.com/linux-command-sha1sum