tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【make】Errorが出ても無視する`-@`のメモ

はじめに

久しぶりにmakefileを書いていて
失敗したときに無視するのどうやるんだっけなーとなったのでメモ

エラー

makefile

hoge.shというのがあり、中身がエラーだとする

hoge:
   @./hoge.sh
実行
# errorが出る
$ make hoge
make: *** [hoge] Error 255

どうするか

実行を表す@-をつけることで無視できるようです!

makefile

@->-@とする

hoge:
   -@./hoge.sh
実行
# errorだがignoredされる
$ make hoge
make: [hoge] Error 255 (ignored)

参考

おわり

参考サイトさんthxです\(^o^)/

【perl】plenvで"Segmentation fault: 11"とエラーが出る対処メモ

はじめに

久しぶりにperlを触りたい機会があったので、
以下を元にplenvをinstallしていました。

途中でSegmentation fault: 11というエラーが出たのでメモ

エラー

# versionは出る
$ plenv --version
plenv 2.2.0

# install -lはエラー
$ plenv install -l
Segmentation fault: 11

どうするか

perl buildbrew install perl-buildでinstallしていましたが、
tokuhiromさんところから持ってきて入れると良さそうです。

# install -lがエラー
$ plenv install -l
Segmentation fault: 11

# pluginsディレクトリがないことを確認
$ ls -al ~/.plenv/
total 0
drwxr-xr-x   4 tweeeety  tweeeety   128  5  5 00:10 .
drwxr-xr-x+ 52 tweeeety  tweeeety  1664  5  5 00:04 ..
drwxr-xr-x   2 tweeeety  tweeeety    64  5  4 22:28 shims
drwxr-xr-x   2 tweeeety  tweeeety    64  5  4 22:28 versions

# download
$ git clone git://github.com/tokuhirom/Perl-Build.git $(plenv root)/plugins/perl-build/

# pluginsにはいる
$ ls -al ~/.plenv/
total 0
drwxr-xr-x   4 tweeeety  tweeeety   128  5  5 00:10 .
drwxr-xr-x+ 52 tweeeety  tweeeety  1664  5  5 00:04 ..
drwxr-xr-x   3 tweeeety  tweeeety    96  5  5 00:12 plugins
drwxr-xr-x   2 tweeeety  tweeeety    64  5  4 22:28 shims
drwxr-xr-x   2 tweeeety  tweeeety    64  5  4 22:28 versions

# install -lが正常にうごく
$ plenv install -l
Available versions:
 5.29.10
 5.29.9
 ~ 省略 ~
 5.6.0
 5.5.670
 5.003_13

おわり

ひさしぶりのperl\(^o^)/

【シェルスクリプト】複数行のコメントアウト

はじめに

単一行のコメントは#ですが、
複数行のはよく忘れるのでメモ

どうやるか

  • << [任意の文字]でコメントアウト開始
  • [任意の文字]でコメントアウト終了

どんな感じか

#!/bin/bash

echo "hoge"

# がコメントされる
<< COMMENTOUT
echo "fuga"
echo "piyo"
COMMENTOUT

おわり

ちゃちゃっとやるばあいは
vimのコマンドで複数行の冒頭に#とやっていた\(^o^)/

【python】macにpyenvを入れて2.7を3.xに切り替えて使うメモ

はじめに

最近はManager業に専念しているため
だいぶ技術ブログの更新を怠っていました ><

と、いいながら
ふとしたことからpythonを使いたく
macにデフォルトで入っているのはPython 2.7.10

使いたかったのが3.x系だったので切り替えて使えるようにpyenvをいれたメモです。

アジェンダ

  1. XcodeやHomebrewをインストール
  2. pyenvとは?
  3. pyenvをインストール
  4. pyenvでpython3.xをインストール

1. XcodeやHomebrewをインストール

念の為に書きましたが、ここは割愛します!!
macで開発するには何にしても必要ですしね。

Homebrewとは?的な記事は置いておきます。

2. pyenvとは?

pyenvとは?ですが、参考サイトから引用させて頂きます。
rbenvやplenvもあるのでそのあたりを使ったことがあるなら名前からはわかりそうですが..

pythonのバージョンを簡単に切り替えることができるようにしてくれるツールです。2系列と3系列との切り替えに便利です。また、ディレクトリごとにpythonのバージョンを切り替えることができます。

3. pyenvをインストール

ここからが本題ですね。
まずはデフォルトのversionを確認します。

$  python --version
Python 2.7.10

おもむろにpyenvをいれます。
versionが確認できればokです。

$ brew install pyenv

$ pyenv -v
pyenv 1.2.11

次にパスを通しておきます。

# ~/.bash_profileに追記
$ vim ~/.bash_profile
-- vi追記 --
export PATH="$HOME/.pyenv/shims:$PATH"
------------

# 反映
$ source ~/.bash_profile

4. pyenvでpython3.xをインストール

インストール可能のvesionを確認してみます。
めっちゃある...

$ pyenv install -l
Available versions:
  2.1.3
  2.2.3

  ~ 省略 ~

  stackless-3.4.7
  stackless-3.5.4

pyenvを使ってpython3.7.2をインストールします

# 現在installされたversionを確認
# まだsystem pythonしかはいってない
$ pyenv versions
* system (set by /Users/tweeeety/.pyenv/version)

# 3.7.2をインストールj
$ pyenv install 3.7.2

# インストールされたことを確認
# *がついてるものが今利用しているversion
$ pyenv versions
* system (set by /Users/tweeeety/.pyenv/version)
  3.7.2

# version確認
$ python --version
Python 2.7.10

# 切り替え
$ python global 3.7.2

# 確認
$ pyenv versions
  system
* 3.7.2 (set by /Users/tweeeety/.pyenv/version)

$ python --version
Python 3.7.2

なんとなくpyenvのhelpをみてみる

$  pyenv --help
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable

See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme

おわり

簡単に切り替え完了ーーー\(^o^)/

【vim】markdownを書く環境を整えてpreviewするまで

はじめに

新しいmacになったのでvimの設定なんかをやり直してます。

markdownはatomで書いていたのですが、
これを期にmarkdownもvimに移行しようと思ったのでその際の自分用メモ

アジェンダ

  1. pluginを入れる
  2. plasticboy/vim-markdownの設定する
  3. kannokanno/previmの設定する
  4. tyru/open-browser.vimの設定する
  5. .vimrcの記述

1. pluginを入れる

3つのpluginを入れます

Plugin 'plasticboy/vim-markdown'
Plugin 'kannokanno/previm'
Plugin 'tyru/open-browser.vim'

以下、簡単な説明です

  • plasticboy/vim-markdown
    • シンタックスハイライトします
    • headに応じて折りたたみもできます
  • kannokanno/previm
    • 保存したMarkdownをブラウザでプレビュー可能にします
  • tyru/open-browser.vim
    • カーソル下のurlや文字列を開いたり検索したりします

2. plasticboy/vim-markdownの設定する

let g:vim_markdown_folding_disabled = 1
let g:vim_markdown_auto_insert_bullets = 0
let g:vim_markdown_new_list_item_indent = 0

let g:vim_markdown_folding_disabled = 1

markdownなファイルを開いたときに
デフォルトで折りたたみになってしまうのでoffにします。

vim_markdown_auto_insert_bulletsは以下を参照ください。

3. kannokanno/previmの設定する

autocmd BufRead,BufNewFile *.md set filetype=markdown
let g:previm_open_cmd = 'open -a Google\ Chrome'
" ctrl pでプレビュー
nnoremap <silent> <C-p> :PrevimOpen<CR>

autocmd BufRead,BufNewFile *.md set filetype=markdown

ちゃんと調べてませんが、
このままだと.mkdのファイルに対してのハイライトらしいので
.mdもfiletype=markdownとなるようにします。

nnoremap <silent> <C-p> :PrevimOpen<CR>

基本は:PrevimOpenでプレビューが開きます。
ctrl + pというショートカットで開くようにします。

4. tyru/open-browser.vimの設定する

let g:netrw_nogx = 1 " disable netrw's gx mapping.
nmap gx <Plug>(openbrowser-smart-search)
vmap gx <Plug>(openbrowser-smart-search)

nmap gx <Plug>(openbrowser-smart-search)
vmap gx <Plug>(openbrowser-smart-search)

URLや文字列の上でgxと打つことで、
URLならブラウザでURLが展開され、
文字列なら検索結果が表示されます。

以下、参考サイトです。

5. .vimrcの記述

以下、.vimrcの記述です。

"
" about markdown
"
Plugin 'plasticboy/vim-markdown'
Plugin 'kannokanno/previm'
Plugin 'tyru/open-browser.vim'

" plasticboy/vim-markdown
" 折りたたみの禁止
let g:vim_markdown_folding_disabled = 1
let g:vim_markdown_auto_insert_bullets = 0
let g:vim_markdown_new_list_item_indent = 0

" kannokanno/previm
autocmd BufRead,BufNewFile *.md set filetype=markdown
let g:previm_open_cmd = 'open -a Google\ Chrome'
" ctrl pでプレビュー
nnoremap <silent> <C-p> :PrevimOpen<CR>

" tyru/open-browser.vim
let g:netrw_nogx = 1 " disable netrw's gx mapping.
nmap gx <Plug>(openbrowser-smart-search)
vmap gx <Plug>(openbrowser-smart-search)

おわり

昔に設定したものも、再度vimの設定しなおすとほとんど覚えてないという\(^o^)/

Bashで大文字/小文字を無視して補完 - .inputrcとreadline

はじめに

macを新しくしたので.bashrcやら.vimrcも断舎離しつつ新しくしています。

terminalを開いてコマンドラインで入力する時、
tabで補完してくれるわけですが
デフォルトでは大文字小文字を正確に打たないと補完してくれません。

$ ls -1

Fuga.txt
Hoge.txt
piyo.txt

# この状態でtabを打っても補完されない
$ cat ho

この補完に大文字/小文字を無視して補完してくれる設定です

アジェンダ

  1. 設定
  2. .inputrcって?
  3. readlineって?

1. 設定

設定は簡単で、${HOME}/.inputrcというファイルに以下の設定を書いて読み込むだけです。
ちなみになければ作成してください

# 設定
$ vim ~/.inputrc
-- vim追記 --
$if Bash
set completion-ignore-case on
$endif
------------

# 読み込み
$ source ~/.inputrc

2. .inputrcって?

ところで.bashrcはよく見かけますが.inputrcはなんでしょうか?

これはreadlineが読み込む設定ファイルです。

3. readlineって?

では、readlineってなんでしょうか?

参考サイトからの引用になりますがライブラリです。

readlineは、CUI アプリケーションにおいてユーザが行を入力する際に便利な
「行頭・行末移動」「ヒストリ機能」などを提供するライブラリである。
readline というコマンドがあるわけではない。
 
参考: コマンド readline 行入力支援ライブラリ

こちらも参考サイトからの引用ですが、
readlineが提供する機能は以下でして補完・または候補一覧を表示 (TAB)もこれに含まれます。

  • 1文字戻る (Ctrl-b)
  • 1文字進む (Ctrl-f)
  • 行頭に移動 (Ctrl-a)
  • 行末に移動 (Ctrl-e)
  • カーソル位置から行末までを削除 (Ctrl-k)
  • 1行上 (直前に入力した内容) に移動 (Ctrl-p)
  • 1行下に移動 (Ctrl-n)
  • 逆方向インクリメンタルサーチ (Ctrl-r)
  • 補完・または候補一覧を表示 (TAB)
  • エスケープシーケンスを入力 (Ctrl-q・Ctrl-v)  
    参考: コマンド readline 行入力支援ライブラリ

参考

おわり

vimの設定からでも調べると知らない事が増えるのは良いですよね\(^o^)/

【Docker】任意で作成したdriver=bridgeネットワークを設定してdocker runしてみるメモ

はじめに

ちょこちょこDockerを触っているのですがネットワーク設定まわりについての自分用メモ
以下の書籍を参考にしています。

アジェンダ

  1. やりたいこと
  2. Dockerコンテナのネットワークのプチ基礎
  3. ネットワークを作成する
  4. 複数のContainer同士で繋いでみる
  5. ネットワークを削除する

1. やりたいこと

やりたい事は以下です

  • dockerのネットワークを作成する
  • 複数のcontainerを作成した同一ネットワークに接続
  • container同士でアクセスする

2. Dockerコンテナのネットワークのプチ基礎

Dockerはデフォルトでbridge/host/noneの3つのネットワークを作成します

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
b917ccb08e42        bridge              bridge              local
45c4f50ef8dd        host                host                local
e1785a610499        none                null                local

明示的にネットワークを指定せずにDockerコンテナを起動すると、
デフォルトのbridgeネットワークにDockerコンテナを起動します。

# 適当に立ち上げてみる
$ docker container run -itd --name=sample ubuntu:latest

# .NetworkSettings.Networks}}を確認するとbridgeになっている
$ docker container inspect sample --format="{{json .NetworkSettings.Networks}}"
{"bridge":{"IPAMConfig":null,"Links":null,"Aliases":null,"NetworkID":"b917ccb08e42a549dd85213c3e705a3ab03295656d760340ab04781ffe8f98da","EndpointID":"9fd096a5ff16be1542c1154baeebce92bc3b5abf6723f9d05ecbc5c36a6ff7c9","Gateway":"172.17.0.1","IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:02","DriverOpts":null}}
プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化
WINGSプロジェクト 阿佐 志保
翔泳社
売り上げランキング: 4,789

3. ネットワークを作成する

ネットワークの作成は以下のコマンドで行います

docker network create [オプション] ネットワーク

オプションは以下が指定可能です。

オプション 説明
--driver, d ネットワークブリッジまたはオーバーレイ(デフォルトはbridge)
--ip-range コンテナに割り当てるIPアドレスのレンジを指定
--subnet サブネットをCIDR形式で指定
--ipv6 IPv6ネットワークを有効にするかどうか(true/false)
-label ネットワークに設定するラベル

今回は--driver=bridgeweb-networkというネットワークを作成してみます。

$ docker network create --driver=bridge web-network
fe7f79487aa87cf03e03c857fc0013d3b85656fad9fb4417f9abfb2402f17c60

# 作成したネットワークを確認
$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
b917ccb08e42        bridge              bridge              local
45c4f50ef8dd        host                host                local
e1785a610499        none                null                local
fe7f79487aa8        web-network         bridge              local

$ docker network ls --filter driver=bridge
NETWORK ID          NAME                DRIVER              SCOPE
b917ccb08e42        bridge              bridge              local
fe7f79487aa8        web-network         bridge              local

4. 複数のContainer同士で繋いでみる

ネットワークへの接続

ネットワークへの接続は
docker networkで接続する方法と、
docker run時に接続する方法があります。

docker networkでcontainerをネットワークに接続するには以下のコマンドを使います

docker network connect [オプション] ネットワーク名 コンテナ名

docker runで接続するには以下のコマンドを使います

docker container run オプション --name=コンテナ名 --net=ネットワーク名 コンテナイメージ

今回はdocker runのほうで試します。

1つめのcontainer

バックグラウンドでwebappという名前のcontainerを
ネットワークweb-networkにつないで立ち上げます。

また、ポートはホストOS:8001からcontainerの80につなげます。

$ docker container run -itd -p 8001:80 --name=webapp --net=web-network nginx
8296c047ebf6e8f7d3755dec287903e5d7afee93cf96a47c7ef4b1c3ef04ded7
ブラウザでアクセスしてみる

ブラウザで確認すると当然こんな感じ

f:id:tweeeety:20180625215059p:plain

2つめのcontainer

webfrontという名前のcontainerを
ネットワークweb-networkにつないで立ち上げてbashで起動。

また、container1 -> container2から繋いでみる際は、curlでポート80で繋ぎます。

$ docker container run -it --name=webfront --net=web-network centos /bin/bash

# 1つめのcontainerにcurlしてみる
# nginxの結果が帰ってくる
[root@c1170773ec3c /]# curl webapp:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

うまくいきました!

inspectで確認

containerをinspectで確認してみると、
.NetworkSettings.Networksにてweb-networkに繋がっている事が確認できます。

$ docker container inspect webfront webapp
[
    {
        "Id": "e312f6dfd7659b82474dca68f5f991ce3135cd5ab840bb53d998149e79b0dcb2",
        "Created": "2018-06-23T22:36:49.8513111Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 8326,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-06-23T22:41:17.7127242Z",
            "FinishedAt": "2018-06-23T22:38:05.4488807Z"
        },
        "Image": "sha256:49f7960eb7e4cb46f1a02c1f8174c6fac07ebf1eb6d8deffbcb5c695f1c9edd5",
        "ResolvConfPath": "/var/lib/docker/containers/e312f6dfd7659b82474dca68f5f991ce3135cd5ab840bb53d998149e79b0dcb2/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/e312f6dfd7659b82474dca68f5f991ce3135cd5ab840bb53d998149e79b0dcb2/hostname",
        "HostsPath": "/var/lib/docker/containers/e312f6dfd7659b82474dca68f5f991ce3135cd5ab840bb53d998149e79b0dcb2/hosts",
        "LogPath": "/var/lib/docker/containers/e312f6dfd7659b82474dca68f5f991ce3135cd5ab840bb53d998149e79b0dcb2/e312f6dfd7659b82474dca68f5f991ce3135cd5ab840bb53d998149e79b0dcb2-json.log",
        "Name": "/webfront",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "web-network",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "shareable",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/df845a28b18ea7627b098493ad76fadf0be29ba2c0ddd6788cf513f878fc0116-init/diff:/var/lib/docker/overlay2/1809e038beecc1e66692da14e5b8028149a73b1566a6f04597889ae8c6d916f4/diff",
                "MergedDir": "/var/lib/docker/overlay2/df845a28b18ea7627b098493ad76fadf0be29ba2c0ddd6788cf513f878fc0116/merged",
                "UpperDir": "/var/lib/docker/overlay2/df845a28b18ea7627b098493ad76fadf0be29ba2c0ddd6788cf513f878fc0116/diff",
                "WorkDir": "/var/lib/docker/overlay2/df845a28b18ea7627b098493ad76fadf0be29ba2c0ddd6788cf513f878fc0116/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "e312f6dfd765",
            "Domainname": "",
            "User": "",
            "AttachStdin": true,
            "AttachStdout": true,
            "AttachStderr": true,
            "Tty": true,
            "OpenStdin": true,
            "StdinOnce": true,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "centos@sha256:b67d21dfe609ddacf404589e04631d90a342921e81c40aeaf3391f6717fa5322",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.schema-version": "= 1.0     org.label-schema.name=CentOS Base Image     org.label-schema.vendor=CentOS     org.label-schema.license=GPLv2     org.label-schema.build-date=20180531"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "372311e1ac5caebcc8f4a45c12a2f19437093f6421254c82bcae38ca1bff94dd",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/372311e1ac5c",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "web-network": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "e312f6dfd765"
                    ],
                    "NetworkID": "fe7f79487aa87cf03e03c857fc0013d3b85656fad9fb4417f9abfb2402f17c60",
                    "EndpointID": "45f3d2f47b8f4aec8dce2cc70f1d0ca003714ff76a9a28dfac5a332c14b65ad0",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:03",
                    "DriverOpts": null
                }
            }
        }
    },
    {
        "Id": "8296c047ebf6e8f7d3755dec287903e5d7afee93cf96a47c7ef4b1c3ef04ded7",
        "Created": "2018-06-23T22:33:09.6325018Z",
        "Path": "nginx",
        "Args": [
            "-g",
            "daemon off;"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 8012,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-06-23T22:33:10.1810925Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:cd5239a0906a6ccf0562354852fae04bc5b52d72a2aff9a871ddb6bd57553569",
        "ResolvConfPath": "/var/lib/docker/containers/8296c047ebf6e8f7d3755dec287903e5d7afee93cf96a47c7ef4b1c3ef04ded7/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/8296c047ebf6e8f7d3755dec287903e5d7afee93cf96a47c7ef4b1c3ef04ded7/hostname",
        "HostsPath": "/var/lib/docker/containers/8296c047ebf6e8f7d3755dec287903e5d7afee93cf96a47c7ef4b1c3ef04ded7/hosts",
        "LogPath": "/var/lib/docker/containers/8296c047ebf6e8f7d3755dec287903e5d7afee93cf96a47c7ef4b1c3ef04ded7/8296c047ebf6e8f7d3755dec287903e5d7afee93cf96a47c7ef4b1c3ef04ded7-json.log",
        "Name": "/webapp",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "web-network",
            "PortBindings": {
                "80/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8001"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "shareable",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/feb0bfb05649a7787b78ce5e6134d30a2a7e7555964026c50bfd3a4af1e2a03e-init/diff:/var/lib/docker/overlay2/2ed039f41684788abb90840539ada301341751824b0112729e02b67b196226d7/diff:/var/lib/docker/overlay2/617a2b41e640cd527fdb39453e022b25eb04b5967ec1f4ed74e4b952fffb4005/diff:/var/lib/docker/overlay2/6bd654f2fa5d21d58a7ffcb989da07153dcaf6755e44952114e067baf7ccdba6/diff",
                "MergedDir": "/var/lib/docker/overlay2/feb0bfb05649a7787b78ce5e6134d30a2a7e7555964026c50bfd3a4af1e2a03e/merged",
                "UpperDir": "/var/lib/docker/overlay2/feb0bfb05649a7787b78ce5e6134d30a2a7e7555964026c50bfd3a4af1e2a03e/diff",
                "WorkDir": "/var/lib/docker/overlay2/feb0bfb05649a7787b78ce5e6134d30a2a7e7555964026c50bfd3a4af1e2a03e/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "8296c047ebf6",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": true,
            "OpenStdin": true,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.15.0-1~stretch",
                "NJS_VERSION=1.15.0.0.2.1-1~stretch"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "ArgsEscaped": true,
            "Image": "nginx@sha256:3e2ffcf0edca2a4e9b24ca442d227baea7b7f0e33ad654ef1eb806fbd9bedcf0",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGTERM"
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "aed26e0cedb3000e6bcdf02f2a45446ae2c81eddbd6f53a30d34992e17f01611",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "80/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8001"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/aed26e0cedb3",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "web-network": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "8296c047ebf6"
                    ],
                    "NetworkID": "fe7f79487aa87cf03e03c857fc0013d3b85656fad9fb4417f9abfb2402f17c60",
                    "EndpointID": "cfe083931723d5689088deb5869d3caabe9360b22bbef908fb538041e0c58c7c",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]

見にくい場合はformatやjqを使ってみると見やすいです

$ docker container inspect webfront webapp --format "{{json .HostConfig}}" | jq .
{
  "Binds": null,
  "ContainerIDFile": "",
  "LogConfig": {
    "Type": "json-file",
    "Config": {}
  },
  "NetworkMode": "web-network",
  "PortBindings": {},
  "RestartPolicy": {
    "Name": "no",
    "MaximumRetryCount": 0
  },
  "AutoRemove": false,
  "VolumeDriver": "",
  "VolumesFrom": null,
  "CapAdd": null,
  "CapDrop": null,
  "Dns": [],
  "DnsOptions": [],
  "DnsSearch": [],
  "ExtraHosts": null,
  "GroupAdd": null,
  "IpcMode": "shareable",
  "Cgroup": "",
  "Links": null,
  "OomScoreAdj": 0,
  "PidMode": "",
  "Privileged": false,
  "PublishAllPorts": false,
  "ReadonlyRootfs": false,
  "SecurityOpt": null,
  "UTSMode": "",
  "UsernsMode": "",
  "ShmSize": 67108864,
  "Runtime": "runc",
  "ConsoleSize": [
    0,
    0
  ],
  "Isolation": "",
  "CpuShares": 0,
  "Memory": 0,
  "NanoCpus": 0,
  "CgroupParent": "",
  "BlkioWeight": 0,
  "BlkioWeightDevice": [],
  "BlkioDeviceReadBps": null,
  "BlkioDeviceWriteBps": null,
  "BlkioDeviceReadIOps": null,
  "BlkioDeviceWriteIOps": null,
  "CpuPeriod": 0,
  "CpuQuota": 0,
  "CpuRealtimePeriod": 0,
  "CpuRealtimeRuntime": 0,
  "CpusetCpus": "",
  "CpusetMems": "",
  "Devices": [],
  "DeviceCgroupRules": null,
  "DiskQuota": 0,
  "KernelMemory": 0,
  "MemoryReservation": 0,
  "MemorySwap": 0,
  "MemorySwappiness": null,
  "OomKillDisable": false,
  "PidsLimit": 0,
  "Ulimits": null,
  "CpuCount": 0,
  "CpuPercent": 0,
  "IOMaximumIOps": 0,
  "IOMaximumBandwidth": 0
}
{
  "Binds": null,
  "ContainerIDFile": "",
  "LogConfig": {
    "Type": "json-file",
    "Config": {}
  },
  "NetworkMode": "web-network",
  "PortBindings": {
    "80/tcp": [
      {
        "HostIp": "",
        "HostPort": "8001"
      }
    ]
  },
  "RestartPolicy": {
    "Name": "no",
    "MaximumRetryCount": 0
  },
  "AutoRemove": false,
  "VolumeDriver": "",
  "VolumesFrom": null,
  "CapAdd": null,
  "CapDrop": null,
  "Dns": [],
  "DnsOptions": [],
  "DnsSearch": [],
  "ExtraHosts": null,
  "GroupAdd": null,
  "IpcMode": "shareable",
  "Cgroup": "",
  "Links": null,
  "OomScoreAdj": 0,
  "PidMode": "",
  "Privileged": false,
  "PublishAllPorts": false,
  "ReadonlyRootfs": false,
  "SecurityOpt": null,
  "UTSMode": "",
  "UsernsMode": "",
  "ShmSize": 67108864,
  "Runtime": "runc",
  "ConsoleSize": [
    0,
    0
  ],
  "Isolation": "",
  "CpuShares": 0,
  "Memory": 0,
  "NanoCpus": 0,
  "CgroupParent": "",
  "BlkioWeight": 0,
  "BlkioWeightDevice": [],
  "BlkioDeviceReadBps": null,
  "BlkioDeviceWriteBps": null,
  "BlkioDeviceReadIOps": null,
  "BlkioDeviceWriteIOps": null,
  "CpuPeriod": 0,
  "CpuQuota": 0,
  "CpuRealtimePeriod": 0,
  "CpuRealtimeRuntime": 0,
  "CpusetCpus": "",
  "CpusetMems": "",
  "Devices": [],
  "DeviceCgroupRules": null,
  "DiskQuota": 0,
  "KernelMemory": 0,
  "MemoryReservation": 0,
  "MemorySwap": 0,
  "MemorySwappiness": null,
  "OomKillDisable": false,
  "PidsLimit": 0,
  "Ulimits": null,
  "CpuCount": 0,
  "CpuPercent": 0,
  "IOMaximumIOps": 0,
  "IOMaximumBandwidth": 0
}

5. ネットワークを削除する

ネットワークを削除するには以下のコマンドです

docker network rm [オプション] ネットワーク名

containerが起動している状態だとエラーが出るのでstopしてから行います

# ネットワークに接続しているcontainerが起動しいるとエラー
$ docker network rm web-network
Error response from daemon: network web-network id fe7f79487aa87cf03e03c857fc0013d3b85656fad9fb4417f9abfb2402f17c60 has active endpoints

# stopする
$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
e312f6dfd765        centos              "/bin/bash"              34 minutes ago      Up 30 minutes                              webfront
8296c047ebf6        nginx               "nginx -g 'daemon of…"   38 minutes ago      Up 38 minutes       0.0.0.0:8001->80/tcp   webapp

$ docker container stop e312f6dfd765 8296c047ebf6
e312f6dfd765
8296c047ebf6

# stop後だと消せる
$ docker network rm web-network
web-network

おわり

docker便利だけどまだ使いこなせてない\(^o^)/

プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化
WINGSプロジェクト 阿佐 志保
翔泳社
売り上げランキング: 4,789