ゼロからDockerを学んでみて

はじめに

Dockerとは、コンテナという技術を使って、同じ開発環境を他人と確実に共有できる便利な技術。

基本の3要素

Docker

超ざっくりした流れ

  1. Docker fileにOSとかinstallしたいものを書く

  2. Docker fileからdocker buildして、Docker imageを作る

  3. Docker imageからdocker runしてコンテナを作る

Dockerfileの書き方の基本

FROM

ベースとなるイメージを決定:基本はOSを指定する(ubuntu, alpineなど)

RUN (Layerを作る)

イメージを構成するLinuxコマンドを実行する

RUN (Layer) 数は&&を使う、バックスラッシュを使って改行などをして最小限にする

CMD (Layerを作らない)

デフォルトのLinuxコマンドを実行する、CMDは一つだけ

COPYとADD

ホストからコンテナにファイルやフォルダを移動することができる

COPY

基本使うのはほぼこっち

ADD

tarの圧縮ファイルをコピーして解凍したい時

CMDとENTRYPOINT

ホストからコンテナにファイルやフォルダを移動することができる

CMD

docker runの時に上書きできる。ENTRYPOINTがあった場合はENTRYPOINTの引数を持ってくる

ENTRYPOINT

docker runの時に上書きして欲しくない時はこっちを使う、run時に上書きできない

Docker daemonとは

結構よく出てくる用語。dockerはCLI(Command Line Interface)を使ってdocker daemonに命令を送って実行してもらう。

学習中よく使ったコマンド

docker ps -a

docker ps (process status) -a (all) はContainerを表示するよく使うコマンド

docker run -it

コマンドオプションの-itを使うとインプットが可能になってprettyになる

-i: インプットが可能になる。

-t: コマンド表示がprettyになる。

バックグラウンドとフォアグラウンド

バックグラウンド (-d = detached:切り離された) モードとフォアグラウンド (--rm) モード (使い終わったら消える)

docker run -v (volume)

Containerからホストのファイルシステムにアクセス (マウント) できるようにするオプション

高度なスクリプト、データなどはContainerには置かずに、実行する時、ContainerからHost環境にアクセスする。

docker run -p

PublishのPだけど、PortのPって覚えてもOK

複数のWebサービスを立ち上げた場合、それぞれのWebサービスにポートを割り当てる必要がある。

-pコマンドを使って、ホストのポートからContainerのポートにパブリッシュ(ポートを指定、アクセス)する。

番外編 Juyter Lab

ブラウザ上で動くPythonの総合開発環境:IDE(Integrated Development Environment)

データサイエンスで使う。

おわりに

最初は、dockerという概念を理解するのが大変でした。ただ構築環境を作り上げるのは楽しかったです。プログラミング言語もそうだと思いますが、先は果てしなく長いと思うので、着実に学んでいきたいと思います。

HTML CSS メモ その1

はじめに

HTML CSSを学んだ時のメモです。

レスポンシブWEBデザイン

バイスの表示領域によって、Webページの表示を切り替える。

グリッドレイアウト (Grid)

グリッドを可変にするレイアウト。

そもそもグリッド(grid)とは?

gridとはもともと、肉をgrillするための「(鉄製の)焼き網」のことです。 線が縦横にあっても、縦線のみでも、横線のみでもgridです。 gridは「(鉄)格子」「(窓の)鉄柵」「(地図の)碁盤目」「(高圧線の)送電網」などと訳されます。

フルードグリッドは、ピクセル数を固定した指定ではなく比率で指定することにより、デバイスの幅に対して柔軟にレイアウトする手法です。

FLEXBOX

文字通り、柔軟な箱としてレイアウトする。

flexboxは、とりあえずこの2つは覚えておく。

  1. シンプルな画像の横並び

  2. 両端揃え(justify-content: space-between)

タグについて

sectionタグ(文章)

目的は文書の意味を明確にすること。

デザインやレイアウトの目的で使用すべきではなく、そのような目的では

タグを使用。

figureタグ(画像)

主に画像に使用します。

最後に

とにかく書いてみる。手を動かすのが一番。近道はない。

CSSはなるべくシンプルに。ごちゃごちゃすると後で修正が大変になる。

コード作成から、GitHub Pagesで公開するまでの流れ

はじめに

ローカルでのコード作成から、GitHub Pagesで公開するまでの流れをまとめました。

ローカルで作成したコードをリモートリポジトリに上げる

  1. ディレクトリ作成、git initする

  2. リモートリポジトリを指定する
    (git remote add origin リモートリポジトリアドレス)

  3. mainブランチから作業ブランチを切る
    (git checkout -b branch_name)

  4. 作業する

  5. ファイルをaddする
    (git add)

  6. ファイルをcommitする
    (git commit)

  7. リモートにファイルをpushする
    (git push origin )

  8. pull request を作成

  9. reviewを依頼する

  10. 修正がある場合は修正する

  11. approveをもらったらリモートのmainにマージする

  12. ローカルのmainブランチをリモートの最新と一致させる
    (git pull origin main --rebase)

GitHub Pagesを使ってサイトの公開

  1. 画面上部の横列の一番右の「Settings」というリンクをクリック

  2. Settingページの左側にあるメニューの中から「Pages」をクリック

  3. GitHub Pagesの項目の下に「Your site is live at ...」と表示されている場合には、そのURLですでにWebページが公開済

  4. もし表示されていない場合には、「Branch」の項目が「None」なので、デフォルトブランチに変更して「Save」ボタンを押す

  5. これで自分のWebページをインターネット上に公開するための作業は終了

git push エラーが出た場合

[rejected] main -> main (fetch first)というエラーが出ました。

言われた通り、fetchして
(git fetch origin main)

git pull origin main --rebase

をしてからpushしたら無事にpushできました。

おわりに

GItHubはプログラミングを使う上での必須スキルだと思います。

自分がわからなくて詰まった箇所など、こういったメモを残して、

再確認できるよう繰り返し学習を進めていきたいと思います。

Github で Fork して PullRequest を送る

はじめに

Github で Fork して PullRequest を送るということに対して、

日本語があまりに意味不明だったので、まとめてみました。

Forkとは

現存してるオリジナルのリポジトリに影響与えることなく、自分のリポジトリを作れる。

pull request を使ってフォークから上流の(オリジナル)リポジトリに変更を提案できる。

Forkのいいところ

何をしてもオリジナルのレポジトリは汚さないし、壊さない。

おわりに

よくわからないけど、いつか使う時のためのメモでした。

GItHubのQuick Setupをすっ飛ばしてしまってmainブランチが消えた時のメモ

GItHubリポジトリ作成後、

Quick Setupをすっ飛ばしてしまってよくわからなくなり、

git branchをしてもmainブランチが全然出てこなくなりました。

最終的にはリモートからfetchしてorigin/mainとmergeしたら出てきてくれました。

git init

まずはリセットする。


git remote add origin https://github.com/リポジトリ名

リモートリポジトリと繋ぐ。


git branch -M main

masterからmainに名前変更する。


git fetch origin main

ここでリモートリポジトリ(origin)をローカル(main)に持ってくる。


git merge origin/main

これでローカルmainにmergeする。

git branchをすると無事mainブランチが出てきてくれました。

Learn Git BranchingでGitコマンドの練習

はじめに

learngitbranching.js.org

Learn Git Branchingという無料でGitコマンドを練習できる素晴らしいサイトがあります。

こちらで学習してみて、印象に残っているGitコマンドをメモがわりにまとめました。

よく使ったコマンド (Main編)

git checkout -b bugFix

bugFixブランチを作って、bugFixブランチにcheckoutする。


git branch -f bugFix c2

bugFixブランチをc2に強制移動させる。


git cherry-pick

現在の位置(HEAD)の下に一連のコミットをコピーしたいという意を単純に表す方法。


git commit --amend

直前のコミットを修正する。


git rebase -i 

コミットの順番を変更する


git tag v1 c1

v1というtagをつける。

相対リファレンス

ハッシュでコミットを指定できるが、相対リファレンスという便利な機能もある。

・一つずつ上へ移動させる^(カレット)

・複数回上へ移動させる ~

よく使ったコマンド (Remote編)

git clone

既存のリポジトリをローカル環境に複製する。


git fetch

リモートにあってローカルリポジトリにないコミットをダウンロードする。


git pull
git pull --rebase

リモートの変更を取って(fetch)してマージする。 リモートの変更を取って(fetch)してリベースする。


git rebase side1 side2

side1(親)side2(子)でrebaseする。


git checkout -b side o/main

sideという名前で、o/mainを追跡するブランチを作成して、checkoutする。(激ムズ)


おわりに

最後まで解けなくて答えを見てしまった問題もありましたが、良い勉強になりました。

Gitというものに対して、

「よくわからない」

から

「なんとなくわかった」

に変えてくれた、とてもいいエクササイズでした。

Git初学者の初めてのGit その2

Gitのデータをどうやって管理しているか

Gitは圧縮ファイルをスナップショットで記憶していく。(変更したファイルの差分を記憶する形ではない。)

スナップショットとして記憶することで、バグが起きた時など以前の状態に戻すことが容易である。

ローカルリポジトリは3つのエリアに分かれてる

①ワークツリー(手元の作業場) ここでファイルを変更する。 変更したいファイルだけステージに上げる。(git addコマンド)

②ステージ コミット(スナップショットを記録する)の準備の場所

③ローカルリポジトリ スナップショットとして「圧縮データ」「ツリー」「コミット」ファイルを記録する。(git addコマンド)

ブランチについて

複数人が並行して機能開発するためにあるのがブランチ。

他の人の開発の影響を受けないのがブランチの利点である。

開発、コードを変更(どんどんコミットを重ねる)中で、コミットが枝分かれしていく。

ブランチは枝そのものではなくて、コミットについたタグ(ラベル)であり、コミットIDを指し示すポインタ。

HEADとは今自分が作業中のブランチへのポインタ。

ブランチを利用していく上で、基本的な考え方


mainブランチはリリース用ブランチ

トピック毎ブランチは開発用ブランチ


として進めるのが基本、masterブランチは常にリリースしているものと同じにする。

プルリクエストについて

自分の変更した内容を相手のリポジトリに取り込んでもらえるように依頼する機能

リベースについて

変更を統合する際に、履歴をきれいに整える。

他のブランチでの変更分を自分のブランチに取り込みながら履歴を整えることができる。(fast forward)

git rebase <ブランチ名>

リベースとマージの違い

どちらも枝分かれしたコミットを取り込む動作。

違いは取り込んだ履歴が枝分かれするのか?一直線なのか?の違い。

リベース(作業の履歴を残しときはこっち)

・コンフリクトの解決が比較的複雑になる

・履歴が理解しやすい

マージ(履歴を残さなくてもいい、履歴をきれいにしたのはこっち)

・コンフリクトの解決が比較的簡単

・履歴が複雑化しやすい

注意:GitHubにプッシュしたコミットをリベースしてはいけない。

一つの考え方として、

プッシュしていないローカルの変更には、リベースをする。

プッシュした後は、マージをする。

(コンフリクトしそうならマージ )

スタッシュコマンド(stash:へそくり)とは

今している作業を辞めて、違う作業をしなくてはならなくなった時、

今している作業の変更分を一時避難させることができる。

後で呼び戻すことができる。

Git Hubを使ったリモートリポジトリとのやりとり

git remote add origin <URL>
originというショートカット名で、<URL>のリモートリポジトリを登録する
リモートの情報を詳しく知りたい時
git remote show <リモート名>
git remote show origin
リモートを名を変更
git remote rename <旧リモート名> <新リモート名>
git remote rename old_name new_name
リモートリポジトリとの接続を削除(解除)
git remote rm <リモート名>
git remote rm origin