Dockerコマンド一覧


Mac内の作業環境をコンテナ化しました。
さようなら、Homebrew。
さようなら、Pyenv。

Dockerのインストール

DockerとVirtualBoxをインストールします。

Docker Community Edition
https://www.docker.com/community-edition

VirtualBox
https://www.virtualbox.org/wiki/Downloads

イメージの操作

イメージの検索

docker search [NAME]

公開されているDockerイメージの中から「amazon」を検索します。
OFFICIALに[OK]がついれば公式のイメージです。

$ docker search amazon
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
amazonlinux Amazon Linux provides a stable, secure, an... 251 [OK]
amazon/amazon-ecs-agent Amazon EC2 Container Service Agent 56
vettl/amazon-linux Amazon Linux Images. Available versions: ... 18
...

イメージのダウンロード

docker pull [NAME]

$ docker pull amazonlinux
Using default tag: latest
latest: Pulling from library/amazonlinux
40280b975f14: Pull complete
Digest: sha256:b852ce504670f604074bb0a0285849c95541453c39da4a6abe19c096695ccfca
Status: Downloaded newer image for amazonlinux:latest

イメージの一覧

docker images

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
amazonlinux latest 6133b2c7d7c2 7 weeks ago 165MB

イメージの削除

docker rmi [IMAGE ID]

コンテナの操作

コンテナの作成

docker run -it [REPOSITORY] /bin/bash

$ docker run -it amazonlinux /bin/bash
bash-4.2#

コンテナから一時切断

Ctrl-p Ctrl-q

コンテナの一覧

docker ps

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e178aba66d58 amazonlinux "/bin/bash" 5 seconds ago Up 4 seconds kind_pike

コンテナの一覧(全て)

docker ps -a

コンテナへの接続

docker attach [CONTAINER ID]

$ docker attach e178aba66d58
bash-4.2#

コンテナから切断&停止

exit

コンテナの起動

docker start [CONTAINER ID]

コンテナの停止

docker stop [CONTAINER ID]

コンテナの削除

docker rm -f [CONTAINER ID]

コンテナの一括削除

docker rm -f `docker ps -a -q`

運用方法

イメージからコンテナを作成し、作業環境に変更があった場合はイメージとして保存します。
Docker Hubにイメージを保存しておくことで作業環境のバックアップを行うことができます。便利。

Docker Hubのアカウント作成

https://hub.docker.com/

Docker Hubのリポジトリ作成

自分の作業環境なのでprivateリポジトリを作成します。

Docker Hubへのログイン

docker login

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: kensuketamura
Password:
Login Succeeded

イメージの作成

docker commit -m “(commit message)” [CONTAINER ID] [USER]/[REPOSITORY]

$ docker commit -m "first commit" e178aba66d58 kensuketamura/myworkspace
sha256:660d3e0e0eae484d8c189ba19d005d0aa2ed698308a56193fd547e73960f5b03

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kensuketamura/myworkspace latest 6b51ee3ea95b 6 minutes ago 165MB
amazonlinux latest 6133b2c7d7c2 7 weeks ago 165MB

イメージのプッシュ

docker push [USER]/[REPOSITORY]

$ docker push kensuketamura/myworkspace
The push refers to a repository [docker.io/kensuketamura/myworkspace]
5000e80cdc64: Mounted from library/amazonlinux
latest: digest: sha256:ff157643b586422303f0f77f21a1ef57d637cbccce86550047712931a429e84d size: 529

コンテナの復元

$ docker pull kensuketamura/myworkspace
Using default tag: latest
latest: Pulling from kensuketamura/myworkspace
Digest: sha256:ff157643b586422303f0f77f21a1ef57d637cbccce86550047712931a429e84d
Status: Image is up to date for kensuketamura/myworkspace:latest

$ docker run -it kensuketamura/myworkspace /bin/bash
bash-4.2#

役割を決めれば「偉い」人はいらない論

私は「社長」と呼ばれることがあまり好きではない。
嫌悪感を抱くほどのことでもないが、思想と合わないのである。
名刺も「社長」ではなく「CEO」を名乗っている。

私のイメージだが「社長」は指揮系統ピラミッドの頂点に君臨し、最上級の権力を保持している存在である。
そのイメージが故に「社長 = 偉い」の図式が成り立つ。
「偉い」とはとても曖昧な尺度であり、具体的な範囲や責務が明確でない。

会社運営においてこの曖昧な尺度はしばしば混乱を招く。
その最たる現象が「丸投げ」と「鶴の一声」である。

例えば、Webサービスの開発に関する検討を行っており、2つの案のどちらかを選びたい場合は
企業のイメージに関わることであればブランディング担当
ユーザーの使い勝手に関わることであればUI/UX担当
開発の実装方法に関わることであればプログラム担当
そして、その担当がそれぞれの専門性に基づいた根拠やABテストなどの定量的なデータを用いて判断するべきである。

「偉い」人は上記の考え方により現場に判断を一任する。
しかし、現場は求められている役割がわからず、抽象度の低い業務に留まり、業務の進行が頓挫する。
上は何も決めてくれない、丸投げされた、と感じるのである。

かと思えば、突如「偉い」人が現れては鶴の一声によって決定事項は覆され、現場は混乱の渦に巻き込まれ、最終的に時代遅れな産物ができたりする。
現場も「偉い」人が決めたことだから、と思考停止し、「偉い」人に聞いてみないとわからない、と意思決定スピードの低下につながる。
プロダクト作りにおいては鶴の一声が良い方向に倒れたりすることもあるため一概に悪いとは言えないが、組織作りの視点で考えた場合は悪影響の方が大きい。

アンドゲートでは「CEO(最高経営責任者)」「COO(最高執行責任者)」「CTO(最高技術責任者)」の3つをそれぞれの役員に割り当てている。
「経営」「執行」「技術」に対しての「責任者」と、範囲と責務を明確にすることでシンプルに役割分担を行っている。

企業活動において「経営」に結びつかない活動は存在しない。
そういった意味だと「経営」の「責任者」である私が最終的には全ての責任を負う。

概念の抽象度は「経営」が最上位にあり、その下に「執行」や「技術」がある。
組織の拡大と共に役割を細分化し割り当てることで、より意思決定のスピードを上げることができる。
今後必要に応じてCxOのポジションは社員(執行役員)に割り当てる予定である。

また「責任を負うこと」と「物事を決めること」は別として考えている。

「自分で決めたことは自分で責任を負う」
そういう人でありたいし、そういう仲間と一緒に仕事をしたい。
だが、あくまでも責任を負うのは責任者である。
責任を負えない・負いたくないが為に物事を決められないのであれば、責任は責任者が負うから自ら物事を決めて欲しい。
決めないこと・決められないことが一番の脅威なのだ。

その思想からしても「責任者」という言葉はピッタリ当てはまる。

役割の話しは何もCxOだけが対象ではない。
社員全員に対して役割を用意し範囲と責務を明確にしている。

アンドゲートでは「カタリスト」と「ディレクター」の大きく分けて2つの職務を用意している。
外資系企業のJob Description(職務記述書)にあたる。

詳細は割愛するが範囲と責務は下記の通りである。
カタリストの範囲は「考えて示す」、責務は「正し”い”物事を作る」
ディレクターの範囲は「実現する」、責務は「正し”く”物事を作る」

そして、この役割は相互に補完し合うよう設計している。
カタリストがいくら素晴らしいロードマップを描いても、実現できなければ絵に描いた餅だし
ディレクターがいくら素晴らしい資料を作成しても、妥当性のない内容であればただの紙クズである。

生物にもオスとメスがあるように、単体の役割だけでは不完全な方がシステム全体として見た場合は健全な場合がある。
専門性を細分化することでより深い専門性を追求することができ、お互いが範囲と責務を全うし協力し合うことで、全体としてより良い価値を創造できる。

「社長」という言葉に対する違和感は役割の曖昧さの他、不完全さのない独立した役割だからかも知れない。

ダイバーシティは自己中からはじまる論

会社を設立して4ヶ月が経った。
スタートアップのためメンバー全員が昼夜問わずアグレッシブに働いている…かと思いきや
社員第1号は介護、第2号は育児と、既にダイバーシティが溢れる会社となっている。

もうこの際、最初からダイバーシティに対応したダイバーシティ・ネイティブな会社にしてしまおうという魂胆でさえいる。

さて、ダイバーシティに対応するためにはどうすれば良いのだろうか。

少し昔のダイバーシティはグローバル社会のコミュニケーション方法の言葉だったように思う。
日本人同士のコミュニケーションはハイコンテクストで1言えば10伝わる「阿吽の呼吸」が美しいとされるが、グローバル社会では多種多様な人種や文化圏の人がいるため、会話では背景や前提から事細かに説明するローコンテクストにする必要がある。
日本人は曖昧な言い回しをするが議論のときは意見を直接的に伝える必要がある。
といった具合だ。

ビジネス面ではダイバーシティは多種多様な視点で物事を見ることができるためイノベーションを生みやすいとされている。
私はダイバーシティとイノベーションの関係については懐疑的だが、今回はビジネスにつなげるダイバーシティではなく、働き方、特に働きやすさ・働きがいに注目する。

最近のダイバーシティと言えばもっぱら「働き方改革」である。

勤務時間の長さや始業終業時刻など時間に関することや
リモートワークや在宅勤務など場所に関すること
その時間と場所の自由がもたらす、一人ひとりのライフスタイルに合わせた働き方の実現と言ったところだろうか。

ダイバーシティに関するガイドラインや具体的な事例を読み込んでみたがイマイチ釈然としない。
定量的な目標を掲げてルールを策定している企業が多いが、残念ながら抜けのない完璧なルールを作ることはできないし目標も妥当性があるとは思えない。
また、そのルールが運用に乗ることを考えると非現実的としか思えなかった。

分厚いガイドラインを読み、ルールをたくさん作り、ちゃんと運用ができているかのチェックを行う。
本来の目的が達成できれば良いが、とてもではないがスタートアップの規模では手が回らないし、大企業は大企業で相当な労力が必要だろう。

物事をパターン分けし、全てのパターンに対して対策を行うのは一見順当なアプローチである。
しかし、このアプローチはアンドゲートらしくない。
もっとシンプルで全てのパターンに対応できる普遍的な解があるはずだ。

窪塚洋介主演の映画「GO」で下記セリフがある。

左腕まっすぐ伸ばしてみな、坊や。
そのままぐるっと一回転しろ。

よし。

今、お前の拳がひいた円の大きさが、大体お前っていう人間の大きさだ。

言ってることが分かるか?坊や。

その円の真ん中に居座って、手の届く範囲のものにだけ手を伸ばしてりゃ、
お前は傷つかずに生きていける。そういう生き方、どう思う?

このセリフは自分の殻に閉じこもっていないで外の世界に踏み出せ、という意味だが
少し解釈を変えて「左腕の長さ」が「その人が持っている力」とし
「その人が持っている力」とは「その人が幸せにできる人間関係の距離」と仮定しよう。

幸せを提供する対象はまず左腕を差し出す自分の体、即ち自分の事を自分自身で幸せにすることから始まる。
誰かに支援してもらっても、依存しても良い、とにかく自分自身を幸せにすることが先決である。

次に左腕を伸ばしてぐるっと一回転してみよう。

誰が真っ先に当たるだろうか。
それは家族かも知れないし友人かも知れない。
人それぞれ優先順位があるだろう。

自分自身が幸せな状態になっているのであれば、余った力をその人に貸してあげよう。
その人が幸せになれば、小さな世界に平和が訪れたことになる。

自分自身と一番近くの人を幸せにできたのであれば、あとはその腕をぐぐぐっと伸ばして繰り返すだけである。
会社の同僚かも知れないし、地域の知り合いかも知れない。
どんどん腕を伸ばして平和な世界を広げていくのだ。

気をつけなければならないのは、自分自身や自分に近い人の幸せが削られてしまった場合だ。
その場合は左腕を引っ込めて、すぐさま自分の近い順に幸せの復旧に努めるべきである。

引っ込められてしまった人はどのようにすれば良いか。
それは「再度自分に手が届くまで待つ」若しくは「その人に力を貸す」である。

例えば、飲み友達と疎遠になり
「あいつ最近飲み会に来なくなったよな。」
という場合はその人自身若しくはその人に近い人に変化があり、左腕を縮めざるを得ない状況である。

そこで
「余裕できたらまた飲みに行こうな、待ってるから。」と声をかけておけばその余裕を目指す元気になるし
「手伝えることがあれば何でも言って。」と言えば、今まで左腕を伸ばしてくれていた分の恩返しができる。

生物である以上バイオリズムが存在し、元気なときは元気だし、落ち込むときは落ち込む。
元気な時は周りを助け、落ち込んでいるときは助けてもらう。

人間関係の根本は全て自分から始まり、周りの人を助け、周りの人から助けられることにあると考えている。

ダイバーシティの話しに戻そう。
会社組織の中でも基本的には上記の考え方を適用する。

介護で手がかかる、子どもが熱を出したなどの理由により出社できないことは必ずある。
その時は周りに堂々と助けを求めて力を借りる、借りた分はいつか返す。

もっと身近な例では、下記のようになるだろう。

「朝の通勤ラッシュ時に電車に乗るのは嫌です。」
自分自身に降りかかる不幸を予め回避できるのであれば、それに越したことはない。
「朝疲れない分パフォーマンスが上がるので、自分の仕事をさっさと終わらせて手伝います。」

「俺は滅多に風邪をひかないから、バリバリ働いてみんなを助けるよ。」
「だから、飲みすぎちゃった次の日は遅刻させて…。」

自分の幸せを真っ先に考えつつも周りと共存できる世界が見えないだろうか。

この世で一番大切なのは自分であり、自分が幸せでなければ周りの人も幸せにできない。
自己中心的な要求をしても、その要求を受け入れてくれる人間関係を構築しておくこと
会社としてはビジネス的なインパクトがない限りは権限を移譲することが重要なのではないかと考えている。

一番やってはいけないことは、自分を犠牲にして周りの人に尽くすことである。
迷惑をかけないようにするのではなく、迷惑をかけても許してもらえる、迷惑かけられても許す環境や関係性を作ること。
ダイバーシティは複雑に考えずに、もっとシンプルな幸せの優先順位と人間関係の在り方をマインドとして共有し、自由にやっていこうではないか。

悪い人が現れるその日までは。