- 投稿日:2020-10-18T21:57:16+09:00
[Linux]基本コマンドまとめ
カーソルの移動など
Ctrl + f // 一文字forward Ctrl + b // 一文字back Ctrl + a // 行の先頭へ移動 Ctrl + e // 行の最後へ移動 esc + f // 一単語forward ※ escを押した後 esc + b // 一単語back ※ escを押した後 Ctrl + h // 左の文字削除 Ctrl + d // 右の文字削除 Ctrl + u // カーソル位置から先頭行まで削除 Ctrl + k // カーソル位置から行末まで削除 Ctrl + y // 最後に削除した内容を挿入 Ctrl + c // 強制終了 Ctrl + s // 画面表示のロック(キーボードから文字の入力を受付ない) Ctrl + q // 画面表示のロック解除 Tab // コマンドやパスを補完してくれる基本コマンド
ls [option][ディレクトリ・ファイル名] // 一覧表示 $ ls *.php // 拡張子が phpの一覧を表示 $ ls /z??? // zから始まり $ ls -l // 詳細を表示する $ ls -F // ファイル種別を表示する @:シンボリックリンク, *:実行可能ファイル, 記号なし:通常ファイル mkdir [option] <作成するディレクトリ名> // ディレクトリ作成 $ mkdir -p test/2020/10/10 // -pをつけると同時にディレクトリ作成してくれる $ rmdir <ディレクトリ名> // 空のディレクトリ cat [fileのパス] // ファイルの中身を表示 less [fileのパス] // ファイルの中身をスクロール表示 スペースキー, f // 1画面下へスクロール b // 1画面上へスクロール j // 1行下へスクロール k // 1行上へスクロール q // qコマンドを終了 /<文字列> // 下に向かって検索 ?<文字列> // 上に向かって検索 touch [file名] //空のファイルを作成 rm [option] [file名] //ファイルやディレクトリを削除する $ rm -r dirr //ディレクトリの中身もまとめて削除 mv [file名1][file名2] //ファイル名を変更 mv [file名][移動先のディレクトリ名] //ファイルを移動 ※ 移動先がディレクトリかファイルで挙動が変わる cp [コピー元][コピー先] * 上書きしてしまう。安全にやるなら -i オプションをつける。 find <検索開始ディレクトリ><検索条件><アクション> $ find . -name README.md -printハードリンクとシンボリックリンク
ハードリンク
・一つのファイルに複数の名前をつける
・元のファイルを削除しても消えない
・全てのハードリンクがなくなったときに消えるシンボリックリンク
・リンク先のパスが書かれた特殊なファイル // ショートカットなど
・シンボリックリンクを残したまま、ファイルの実態を消したり移動したりすると参照できなくなるln [option][リンク元ファイル][ファイル名] $ ln file1 file2 // オプションなしだとハードリンクをはる $ ln -s file1 file2
- 投稿日:2020-10-18T19:36:05+09:00
Dockerfileの作り方(基礎)
はじめに
Dockerは多くのIT開発企業で導入されている環境構築を楽にする技術です。
DockerfileはDockerImageの設計図のようなものです。
Dockerfileを自身で作成することで構築したい環境のDocker imageを作成できます。Dockerfile、DockerImage、コンテナの関係
Dockerfile => DockerImage => コンテナ の順に作成します。
DockerImageの作成方法
Dockerfileが存在するディレクトリで docker build .コンテナの作成方法
docker run (DockerImage名 or ID)Dockerfileのインストラクション
- FROM
- RUN
- CMD
- ENTRYPOINT
- COPY
- ADD
- ENV
- WORKDIR
Dockerfile作成手順
FROM
ベースとなるイメージを決定するインストラクションです。
Dockerfileの最初に記述します。
FROMの後には基本的にOSを記述します。FROM OS(Docker imageから選ぶ) 例)FROM ubuntu:latest 例)FROM ruby:2.5RUN
FROMで記述したOSに対応するコマンドを実行するインストラクションです。
RUN毎にLayerが作成されます。(DockerImageは層を積み重ねていくように作成されます。)RUN OSに対応するコマンド 例)FROM ubuntu:latest RUN touch test => DockerImageにはubuntuのLayerにtouch testのLayerが追加で作成されます。 (testというファイルを作成するDockerImageを作成しています。) 例)FROM ubuntu:latest RUN apt-get update && apt-get install -y \ curl\ nginx => DockerImageにはubuntuのLayerにcurlとnginxという2つのパッケージをインストールするLayerが追加作成されます。 (apt-get updateはインストールするパッケージを新しいものにするために記述し、apt-get installはパッケージをインストールするために記述します。) (-yはインストール中にyesかnoかの質問をされても、全てyesとして進むために使用し、バックスラッシュはパッケージを見やすくするための改行のために使用しています。)
DockerfileをbuildしてDockerImageを一度作成したものはキャッシュされるため、追加で下に下にとRUNを記述していくことでbuildの時間を少なくすることができます。
※ただし、Layerは少ない方が望ましいため、最終的には、例のように&&や、\を用いた記述のように、RUNの記述をまとめて、RUNを少なくするようにします。CMD
コンテナの実行コマンドを指定するインストラクション。
Dockerfileの最後に記述します。CMD OSに対応するコマンド 例)FROM ubuntu:latest RUN apt-get update && apt-get install -y \ curl\ nginx CMD ["/bin/bash"] => Dockerfileをbuildし、DockerImageを作成した後、docker runによりコンテナ作成・実行した際に、/bin/bashが実行されるようになります。ENTRYPOINT
CMDに近い役割を持つインストラクションです。
CMDはDockerImageを実行(docker run)する際に、コマンドを上書きできるものです。(例:docker run lsとすると上記CMD説明時の例ではbashではなく、lsが実行される。)
ENTRYPOINTを使うと、コマンドの上書きできなくなり、CMDはENTRYPOINTのオプションを記述する形となります。
ENTRYPOINT OSに対応するコマンド 例)FROM ubuntu:latest RUN apt-get update && apt-get install -y \ curl\ nginx ENTRYPOINT ["ls"] CMD ["--help"] => ENTRYPOINTにlsコマンドを記述することでdocker runの際にlsコマンド以外のコマンドが実行できなくなり、CMDはオプションの--helpが指定されています。COPY
Dockerfileの入っているディレクトリ(BuildContextと言います)の中にあるファイルをDockerImageにコピーするインストラクションです。
Copy BuildContext内のファイル名 例)FROM ubuntu:latest RUN mkdir /new_dir COPY test /new_dir CMD ["/bin/bash"] => Dockerfileをbuildした際、DockerImageに/new_dirというディレクトリを作成し、/new_dirにtestというファイルがコピーさせるLayerがutubtuのLayerに追加作成されます。 このDockerImageからコンテナを作成した際には、コンテナ内に/new_dirというディレクトリとtestというファイルが作成されています。ADD
COPYのコマンドと似ていて、同じくコピーができるインストラクションです。
ADDとCOPYとの違い
ADDは圧縮ファイルをコピーした際、コピーと解凍の両方を行います。
COPYは単純なコピーのみです。
圧縮ファイルをコピー・解凍する時にはADD、圧縮ファイルが関係ない単純なコピーにはCOPYを使います。Copy BuildContext内のファイル名 例)FROM ubuntu:latest ADD sample.tar / CMD ["/bin/bash"] => Dockerfileをbuildした際、DockerImageにsample.tarを/(ルート直下)にコピー・解凍するLayerを作成されます。 コンテナを作成した際に、コンテナのルート直下にsample.tarが解凍されたものが作成されています。ENV
環境変数を設定するインストラクションです。
ENV 環境変数 例)FROM ubuntu:latest ENV key1 value CMD ["/bin/bash"] => コンテナ作成時にkey1=valueという環境変数が設定されるDockerImageが作成されます。WORKDIR
インストラクションの実行ディレクトリを変更するインストラクションです。
WORKIDIR ディレクトリ 例)FROM ubuntu:latest RUN mkdir sample_folder WORKDIR /sample_folder RUN touch sample_file => sample_folderというディレクトリを作り、sample_folder内でsample_fileを作成するLayerとなります。 (WORKDIRを使ったことで、コンテナ内に作成した/sample_folderの中でRUNの実行ができます。)参考
Udemy
かめれおん講師 「米国AI開発者がゼロから教えるDocker講座」
有料ですが、初学者の私にも非常に理解しやすかったです。
最後に
本投稿が初学者の復習の一助となればと幸いです。
- 投稿日:2020-10-18T17:34:33+09:00
LPIC Level1のためにVagrant+VirtualboxでUbuntuを仮想環境として構築した時の手順。
今更ながら
LPIC面白そうだし受けてみるか!ということでひとまず、
を読んで、
Linux教科書 LPICレベル1 Version5.0対応
で出題範囲のインプットをしながらping-tの問題を解いている最中です。
まぁ問題を暗記して解けるようにはなりそうだけど、少し問題の構造を変えられたら解けなくなりそうだし、動かさずに覚えるのは難しそうだと感じたので動かそう!という目的で構築しました。
何かしら前例があるだろうと思って検索してみると、以下のような動画で実際に同じような環境でCentOSを動かしていたので、Ubuntuを動かす場合の環境構築をしてみました。
そもそもこれらは何?
Virtualbox
Virtualboxって何?
Oracleが管理しているOSSの仮想環境を構築するためのソフトです。
使うメリットはあるの?
じゃあ仮想環境を作ると何が嬉しいの?という疑問が生まれると思いますが、一つのOSの上で複数のOSを取り扱うことができるようになる、というものが一般的でしょう。
例えば、多くの場合、本番環境と開発環境は異なります。
必要なパッケージやOSによる差異など異なる要素は様々ですが、これらを実際にローカルの開発環境で動かしたい、となった時に使うものです。また、仮想環境で何か致命的なミスを起こしたとしても、その環境が元のOSに影響を及ぼしたりすることはありません。
これらのメリットを享受するために仮想化が使われています。Vagrant
Vagrantって何?
VMWareやVirtualboxとかの仮想化ソフトの操作を、代行してくれるソフトです。
今回はこれを使って構築することで本来必要なOS(Ubuntuのイメージのダウンロードなど)の操作をVagrantを通して管理ができるようになります。それは分かった。何のメリットがあるの?Virtualboxだけで良くない?
vagrantfileに基づいた仮想環境の管理がコマンドでできるようになります。
ありとあらゆる所でここのメリットは語られているのであまり深くは触れませんが、これこそがVagrantを使う大きなメリットの一つです。
チームメンバーなどと共有する時や、こういった記事形式で何か仮想環境を立てたい時に1からVMの構成を手順書などに書くのは面倒です。
それなら特定の構成を書いたファイルを取ってきて、コマンド叩いたら完成!の方が他のスピードも上がります。
あと個人的に勉強したかった環境構築
環境
- OSX Catalina 10.15.7
- VBoxManage 6.0.14r133895
- Vagrant 2.2.10
- VirtualBox 6.1.14
VirtualBox
公式ページからパッケージをダウンロードします。
インストールします。
VirtualBoxの設定はこれで終わりです。Vagrant
公式ページにアクセスし、Downloadをクリック。
それぞれのプラットフォームごとのバージョンがダウンロード可能になっているのでダウンロード。
ダウンロードしたパッケージをインストール。
すると無事にインストールができているはずなのでターミナルで以下のように進める。
# ディレクトリ作成と移動 $ mkdir Ubuntu && cd Ubuntu # Vagrantにインストールされているリストの確認 # 恐らく何もないよ!とでます $ vagrant box list # フォルダ内にUbuntuのvagrantfileのダウンロード、及びプロビジョニング開始 $ vagrant init ubuntu/trusty64 $ vagrant up # ubuntu/trusty64 (virtualbox, 20190514.0.0) $ vagrant box list # 以下のコマンドでポート情報などが出るのでここでの情報を元にログインする $ vagrant ssh-config # sshログインする # user,passwordは共にvagrant $ ssh -p 2222 vagrant@localhostこれで実はUbuntuをターミナル上で動かせます。
事実Virtualboxを見てみると以下のように仮想環境が動いています。これで実際にコマンドを入力して楽しめます。
やったね!では、お疲れ様でした。
- 投稿日:2020-10-18T00:00:01+09:00
Linux備忘録[自分用]
- 【rm, rmdir】Linuxでディレクトリを削除するコマンド https://uxmilk.jp/8318
- 投稿日:2020-10-18T00:00:01+09:00
Linux備忘録[リンク集]
- 【rm, rmdir】Linuxでディレクトリを削除するコマンド https://uxmilk.jp/8318