2020年3月27日金曜日

Vue.js記法(三)component機能拡張

テンプレート書出す:Vue.component()、Global登録

<div id="app">
  <my-element></my-element>      <!--表現テンプレートを独立に書き出す-->
  <component-a></component-a>
  <component-b></component-b>
  <component-c></component-c>  
</div>
<script>
Vue.component('my-element', {
  template: '<strong>Hello</strong>' /* コンポーネントのグローバル登録 */
})
Vue.component('component-a', { /* ... */ })
Vue.component('component-b', { /* ... */ })
Vue.component('component-c', { /* ... */ })

var app= new Vue({
  el: '#app',
})
</script>
<!--グローバル登録後、app範囲に自由に利用可能。--->

Vue拡張Addon:Vue.extend()。local登録、利用範囲明確、サイズ軽減

<div id="app01">
  <component1></component1>
  <component-a></component-a>
  <component-b></component-b>
  <component-c></component-c>  
</div>
<script>
var component1 = Vue.extend({             /*コンポーネントの定義*/      
  template: '<strong>Hello!</strong>'
})
var ComponentA = { /* ... */ }
var ComponentB = { /* ... */ }
var ComponentC = { /* ... */ }

var app= new Vue({
  el: '#app01',
  components:{
   'component1':componet1,
   'component-a':ComponentA,
   'component-b':ComponentB,
   'component-c':ComponentC,
  }
})
</script>

ローカル登録されたコンポーネントは、他のサブコンポーネント内では使用できない

Module化、システム内のローカル登録:import from/export default

// ローカル登録をする前に、使いたいコンポーネントごとにインポートする必要があります。
//ComponentB.vueよりComponentA.vueとComponentC.vueを利用したい場合、
// 以下の様に拡張子不要のimport comInstance from './file.vue' 
// export to default(自component)のcomponents属性に
import ComponentA from './ComponentA'
import ComponentC from './ComponentC'

export default {
  components: {
    ComponentA,
    ComponentC
  },
  // ...
}

DOM更新beforeFinish処理:Vue.nextTick(function(){...})

<div id="app01">
  <div>{{ message }}</div>
</div>
<script>
var app01= new Vue({
  el: '#app01',
  data: {
    message: 'Hello!',
    msg1: '',
    msg2: ''
  }
})
app01.message = 'Bye!'                /*textContentはv-text要素の内容*/  
console.log(app01.$el.textContent);   /* 出力値:hello */

Vue.nextTick(function() {
  console.log(app01.$el.textContent); /* 出力値:bye!*/
})
</script>

Vue.js記法(二)画面の表現


文字列の画面表示:v-text =”msg” 又は {{msg}}、効果は同じ

<div id="app01">
  <div v-text="msg"></div>   
  <div>{{ msg}}></div>      
</div>
<script>
var app = new Vue({
  el: '#app01',
  data: { msg: 'Hello!' }
})
</script>
表示

Hello!
Hello!

HTMLをそのまま表示:v-html=""

<div id="app02">
  <div v-text="message"></div> 
  <div v-html="message"></div>
</div>
<script>
var app = new Vue({
  el: '#app-102',
  data: { message: '<b>Hello!</b>' }
})
</script>
表示

Hello!<b>Hello!</b>

display属性の条件表示制御: v-show="true": display 

<div id="app03">
  <input type="checkbox" @click="change" checked>
  <span v-show="seen">Hello!</span>
</div>
<script>
var app = new Vue({
  el: '#app03',
  data: { seen: true },
  methods: {
    change: function(e) {
      this.seen = e.target.checked
    }
  }
})
</script>

要素有無の条件制御する:v-if="true": <div>hello</div>出力

<div id="app03">
  <input type="checkbox" @click="change" checked>
  <span v-if="seen">Hello!</span>
</div>
<script>
var app = new Vue({
  el: '#app03',
  data: { seen: true },
  methods: {
    change: function(e) {
      this.seen = e.target.checked
    }
  }
})
</script>

条件表示制御: v-else-if, v-else前にv-ifが必須

<div id="app01">
  <input type="radio" name="app106-type" onclick="app106.type='A'" checked>
  <input type="radio" name="app106-type" onclick="app106.type='B'">
  <input type="radio" name="app106-type" onclick="app106.type='C'">
  <span v-if="type=='A'">Good morning.</span>
  <span v-else-if="type=='B'">Hello!</span>
  <span v-else>Bye!</span>
</div>
<script>
var app01 = new Vue({
  el: '#app01',
  data: { type: 'A' }
})
</script>

for loop : v-for="item in items", v-for="(item, i) in items" 

<div id="app01">
  <ul>
     <li v-for="color in colorList"> {{ color }} </li>
  </ul>
  <ul>
     <li v-for="(color,i) in colorList"> {{i}}.{{ color }} </li>
  </ul>
</div>
<script>
var app = new Vue({
  el: '#app01',
  data: { colorList: [ 'Red', 'Green', 'Blue' ] }
})
</script>

event binding: v-on 又は @

<div id="app01">
  <button v-on:click="hello">Hello</button>
  <button @click="hello">Hello</button>
</div>
<script>
var app = new Vue({
  el: '#app01',
  methods: {
    hello: function() {
      alert("Hello!");
    }
  }
})
</script>
v-on:click.once / @click.once の様に、修飾可
修飾子説明
.stopcall event.stopPropagation()、イベントが親要素に伝播抑止
.preventcall event.preventDefault() 、デフォルト動作抑止
.captureイベントリスナをキャプチャモードで追加します。
.selfイベントがディスパッチ場合のみハンドラを呼びます。
.{keyCode | keyAlias}指定キーが押下時、ハンドラを呼びます。
.nativeコンポーネントのルート要素にネイティブイベントを監視。
.once一度だけ呼びます。
.left(2.2.0+) マウスの左ボタン押下処理
.right(2.2.0+) マウスの右ボタン押下処理
.middle(2.2.0+) マウスの中ボタン押下処理
.passive(2.3.0+) { passive: true ] で DOM イベントをアタッチ

属性bind: v-bind 又は :

<div id="app01">
  <input type="button" v-bind:value="message">
  <input type="button" :value="message">
</div>
<script>
var app = new Vue({
  el: '#app01',
  data: { message: 'Hello!' }
})
</script>
v-bind:value.camel や :value.camel の様に、修飾可能
修飾子説明
.prop属性の代わりに DOM プロパティをバインドします。
.camel(2.1.0+) ケバブケース(例:color-name)の属性名を、
キャメルケース(例:ColorName)の属性名に変換します。
.syncバインドされた値を更新する v-on ハンドラに展開されるのと同じ構文となります。


値変更可能要素にI・Oバインド:v-model="message" 

<div id="app01">
  <input v-model="message">         <!--inputの値が変わったら--------->
  <div>Message: {{ message }}</div> <!--このDIVの表現内容が変わる------>
</div>
<script>
var app = new Vue({
  el: '#app01',
  data: { message: 'Hello!' }
})
</script>
修飾子説明
.lazyinput の代わりに change イベントを監視します。
.numberデータを数値に変換します
.trimデータ前後の空白を取り去る

data変数をそのまま出力: v-pre  

<div id="app01">
  <div v-pre>Message: {{ message }}</div>
  <div>Message: {{ message }}</div>
</div>
<script>
var app01= new Vue({
  el: '#app01',
  data: { message: 'Hello' }
})
</script>
表示

Message: {{ message }}
Message: Hello

一回だけ動作:v-once

<div id="app">
  <input type="text" name="text1" v-model:value="message">
  <div>Message: <span v-once>{{ message }}</span></div>
  <div>Message: <span>{{ message }}</span></div>
</div>
<script>
var app= new Vue({
  el: '#app',
  data: { message: 'Hello' }
})
</script>

Vue.js記法(一)Hello World

Hello world!

<!--vue.jsの参照が必須----->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<!--このdivは画面表現の舞台、全てはこの中に表現する-->
<div id="app01">{{ message }}</div> 
<script>
var app1 = new Vue({
  el: '#app01',            /* el: 舞台を定める. 1つappに唯一無二のnew Vue*/
  data: { message: 'Hello world!' } /* このappの表現に必要なデータ */
})
</script>

readme.md作成のMark Down記法はこれ

一定の簡潔な法則に従って、txt⇨HTML変換して出力してくれるものである。

MarkDown記法

段落

空行をあける
1段落目
(空行をはさむ)
2段落目

改行

行末に2つのスペースを入れる。
1行目 ←行末に半角スペース2つ
2行目

強調

・強調。アスタリスク(*)またはアンダーバー(_)で囲う
*強調* または _強調_
・強い強調。アスタリスク2つ(**)またはアンダーバー2つ(__)で囲う
**強い強調** または __強い強調__

コード表示(等幅フォントで表示)

・インラインのコード。バッククォーテーションで囲う
`$hoge = 1`
・複数行のコード。半角スペースを4つ行頭に
    ←半角スペース4つ $hoge1 = 1 //1行目
    ←半角スペース4つ $hoge2 = 2 //2行目
    ←半角スペース4つ $hoge3 = 3 //3行目

リスト

行頭にアスタリスク(*)か、番号ピリオド(1. )
* リスト1
* リストリスト1-2
* リスト2

1. 順番つきリスト
2. 順番つきリスト
3. 順番つきリスト

見出し

行頭の#の個数でH1~H6を表す。
# H1見出し
## H2見出し
#### H4見出し
または、
H1見出し(イコール行を挿入。)
==================
 H2見出し(ハイフン行を挿入。)
---------------------------------

引用(blockquote)

メールの引用の感じ。途中で改行しても、""内は改行されない。入れ子もOK
> "引用本文引用本文引用本文引用本文
引用本文引用本文引用本文引用本文引用本文引用本文。"

> 引用本文引用本文引用本文引用本文  > * リスト
> 引用本文引用本文引用本文引用本文
> 1. 番号リスト
> 引用本文引用本文引用本文引用本文
> $hgoe = 1 コードを書いてみたり
 

リンク

記法は3種。リンクのタイトルは省略可能。
■自動リンク
アングルブラケット< >でURLを囲う、email と同じ。
<http://example.com>
<example@example.com>
■通常のインライン記法
[リンクのテキスト](リンクのアドレス "リンクのタイトル")
[google] (http://google.com "google") 
■外部参照リンク(段落の外でリンクをまとめれる)
[リンクのテキスト][linkref] 
[google] : http://google.com "google"  

画像

先頭に!
![Alt text](/path/to/img.jpg)
![Alt text](/path/to/img.jpg "Optional title")

・リンク[id]参照
  ![Alt text][id]
 [id]: url/to/image  "Optional title attribute"

水平線

3つ以上のハイフン、アスタリスク、アンダースコアをならべる。間にスペース可
* * *
***
*****
- - -
---------------------------------------

その他の注意

&マークなどは「&amp;」に変換しておく。

エスケープ一覧

\   backslash
`   backtick
*   asterisk
_   underscore
{}  curly braces
[]  square brackets
()  parentheses
#   hash mark
+   plus sign
-   minus sign (hyphen)
.   dot
!   exclamation mark
以上。

YAML:不是XML的标记语言


发源

    比XML更容易读写的标记语言。人机都容易读写。

语法


  1. 空格缩进。注意不能是tab. #类似python.
  2. #单行注释。
  3. --- 多个YAML内容块 的分割区分,不是注释。
    例如
    --- #第一块YAML
    mysql1:
      hostname : localhost
      port : 3306
    --- #第二块YAML
    drink: [milk, cola, water]  #数组类似json
  4. -(空格)数组元素。- 后面的空格不能省略。
    - d1
    - d2
    - d3
    #=>["d1", "d2", "d3"]
  5.  键值对. 类似json 。:后面的空格也不能省略。
     {name: tom,  age: 6}
  6. ---|保持换行
    ---| aaaaa
          bbbbb
  7. --->最终行换行
  8. 普通换行:解释成空格,元素间的区分。
    name : momo
    age : 33
    #=>{"name"=>"momo", "age"=>33}
  9. 数据类型 自动推定
    string :tomato
    int :22
    float:1.1
    bool:true, false
    blank:null
    date:2020-01-01
    强制用字符串:“123”

Docker 启动服务器

Docker下启动服务器容器,对外端口不能忘 

  1. 建立一个有别于默认docker0的网络lq01.net 
  2. root@linux-dxjo:~> docker network create -d bridge lq01.net
    root@linux-dxjo:~> docker network inspect  lq01.net
    [
        {
            "Name": "lq01.net",
            "Id": "0317a8cd7bd67758d981470ed4d8d06dccf0e52df05ffd345a5c186a160a99a9",
            "Created": "2020-03-26T03:18:35.758811904-04:00",
            "Scope": "local",
            "Driver": "bridge",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": {},
                "Config": [
                    {
                        "Subnet": "172.18.0.0/16",
                        "Gateway": "172.18.0.1"
                    }
                ]
            },
            "Internal": false,
            "Attachable": false,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Containers": {},
            "Options": {},
            "Labels": {}
        }
    ]
    root@linux-dxjo:~>

  3. 再建一个网络,指定网段
    root@linux-dxjo:~>docker network create -d bridge --subnet 172.20.1.0/24 --gateway 172.20.1.1 LBSnet
    root@linux-dxjo:~> docker network inspect lq02.net
      [
            {
                  "Name": "lq02.net",
                    "Id": "9c47cbcf247b9b2027a32f19035e386ba7f8c680a914a7114af480e42847341c",
                      "Created": "2020-03-26T05:43:13.985842763-04:00",
                        "Scope": "local",
                          "Driver": "bridge",
                            "EnableIPv6": false,
                              "IPAM": {
                                    "Driver": "default",
                                      "Options": {},
                                        "Config": [
                                              {
                                                    "Subnet": "172.20.1.0/24",
                                                      "Gateway": "172.20.1.1"
                                                    }
                                                  ]
                                                },
                                                  "Internal": false,
                                                    "Attachable": false,
                                                      "Ingress": false,
                                                        "ConfigFrom": {
                                                              "Network": ""
                                                            },
                                                              "ConfigOnly": false,
                                                                "Containers": {},
                                                                  "Options": {},
                                                                    "Labels": {}
                                                                  }
                                                                ]
                                                                  root@linux-dxjo:~>
                                                                1. 启动mysql服务器,对外端口映射( -p 外部端口:容器端口 )不能忘

                                                                2020年3月26日木曜日

                                                                Docker network rm --driver=null

                                                                删除不掉 driver=null的网络,
                                                                Error response from daemon: none is a pre-defined network and cannot be removed
                                                                好像也不算是异常,只能无视他。

                                                                Alter Oracle Table Add/Modify/Rename/Drop Columns

                                                                Oracle Table Columns 変更

                                                                1. カラムの追加 / ALTER TABLE ADD column(s)
                                                                  表定義の最後にのみ追加可能。表の途中への挿入や列の順番の変更や入れ替えはできない。
                                                                  ALTER TABLE my_table ADD ( time_col TIMESTAMP(3) ) ;

                                                                2. カラムの定義の変更 / ALTER TABLE MODIFY column(s)

                                                                  データが存在する場合、直接MODIFYは出来ない、DROPしてから、ADD
                                                                  ALTER TABLE IAMGE_INFO DROP COLUMN IMAGE_DATA 
                                                                  ALTER TABLE IMAGE_INFO ADD (IMAGE_DATA LONG RAW)

                                                                  NULL 制約の設定と解除
                                                                  ALTER TABLE table_name MODIFY ( char_col NULL )
                                                                  ALTER TABLE my_table MODIFY ( char_col  NOT NULL ) ;
                                                                  

                                                                  デフォルト値の変更と削除
                                                                  ALTER TABLE my_table MODIFY ( char_col  DEFAULT 'abc' ) ;

                                                                  カラムの長さ、桁数、スケール、精度の変更
                                                                  ALTER TABLE my_table MODIFY (
                                                                      char_col    VARCHAR2(50),
                                                                      number_col  NUMBER(14)
                                                                  );

                                                                3. テーブル名、カラム名の変更 / ALTER TABLE RENAME [column]

                                                                  列名の変更
                                                                  ALTER TABLE my_table RENAME COLUMN time_col TO date_col ;

                                                                  列の削除 (DROP)
                                                                  ALTER TABLE my_table DROP (
                                                                      char_col , number_col
                                                                  )
                                                                  -- 以下はオプションなので必須ではない
                                                                  CASCADE CONSTRAINT INVALIDATE;
                                                                  CASCADE CONSTRAINT : 列に付随する制約(主キー、ユニークキー、チェックなど)を削除する。INVALIDATE : 依存関係にあるオブジェクトに対し再帰的に無効化マーク(INVALID) を付ける。CHECKPOINT : UNDO に蓄積されるログを抑制するため、指定行数毎に チェックポイント を発生させる。

                                                                4. ALTER TABLE PRIMARY KEY

                                                                  主キー、プライマリキー制約の追加
                                                                  ALTER TABLE table_name ADD
                                                                      [ CONSTRAINT primary_key_name ]
                                                                      PRIMARY KEY (col_name, colname2 ..) ;

                                                                5. ADD PRIMARY KEY と USING INDEX
                                                                  ALTER TABLE table_name ADD CONSTRAINT primary_key_name 
                                                                    PRIMARY KEY  (col_name, colname2 ..) 
                                                                      USING INDEX -- インデックス作成時の属性情報
                                                                      PCTFREE 10 INITRANS 2 
                                                                      STORAGE( INITIAL 64K )
                                                                      TABLESPACE USERS ;

                                                                6. 主キー、プライマリキー制約の削除
                                                                  ALTER TABLE table_name DROP PRIMARY KEY;
                                                                   or
                                                                  ALTER TABLE table_name DROP CONSTRAINT primary_key_name ;

                                                                7. プライマリキーの確認をするための SQL
                                                                  select 
                                                                    c.table_name, c.constraint_name, c.status cc_status,
                                                                    cc.position, cc.column_name, 
                                                                    ix.index_name, ix.uniqueness, ix.tablespace_name, ix.visibility, ix.status
                                                                  from user_indexes ix,
                                                                    user_constraints c, user_cons_columns cc
                                                                  where
                                                                    ix.table_name in ('MY_TABLE') and c.constraint_type = 'P'
                                                                    and ix.index_name = c.index_name and c.constraint_name = cc.constraint_name
                                                                  order by cc.constraint_name, cc.position;


                                                                Docker Network 運用

                                                                Docker支持3种网络形式:none,host, bridge(默认模式)。


                                                                docker network ls  #显示当前docker的默认网卡状况
                                                                ip address #宿主机的网卡状态
                                                                • none模式
                                                                  容器和宿主机之间无法网络通信。
                                                                  使用场景:不明。如果无法和外部通信,容器就是个孤岛。
                                                                • host模式
                                                                  容器共享宿主机的网卡,利于和外部网络通信。
                                                                  使用场景:作为本宿主机上的一个服务,供宿主机之外,或外部网络机器访问。
                                                                  注意事项:默认的端口可能被宿主机占用,需要分配其他端口。
                                                                  如:80端口已经被宿主机的IIS占用,Docker容器内的Tomcat就无法使用80。
                                                                • bridge模式(Docker容器的默认启动模式)
                                                                  安装docker后,默认会产生一张docker0的网卡,默认ip:172.17.0.1/16。
                                                                  备注:/16代表16个1的子网掩码255.255.0.0。
                                                                  使用场景:虚拟内部网络,内部网络间可以相互通信,模拟分布式计算。

                                                                Docker容器的IP地址确认:

                                                                1. docker run 启动一个容器(比如oracle)后,通过docker exec -it containerid bash进入容器后,通过ifconfig命令,查看容器的ip, 发现以下输出
                                                                  root@a837d8deb6fb:/# ifconfig
                                                                  eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02
                                                                            inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
                                                                            UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                                                                            RX packets:16 errors:0 dropped:0 overruns:0 frame:0
                                                                            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
                                                                            collisions:0 txqueuelen:0
                                                                            RX bytes:1312 (1.3 KB)  TX bytes:0 (0.0 B)


                                                                2. 再启动一个mysql容器,然后同样docker exec -it containerid bash进入容器,
                                                                  执行ifconfig
                                                                  root@d5cfaf9bc203:/bin# ifconfig
                                                                  bash: ifconfig: command not found
                                                                  这个容器内没ifconfig, 只好换一种方式:hostname -i
                                                                  root@d5cfaf9bc203:/# hostname -i
                                                                  172.17.0.3

                                                                  重新通过docker network ls 查看网络状况。发现网络状况没有变化
                                                                  root@linux-dxjo:~> docker network ls
                                                                  NETWORK ID          NAME                DRIVER              SCOPE
                                                                  eced4efd22c4        bridge              bridge              local
                                                                  006540679f04        host                host                local
                                                                  bb6717ea195a        none                null                local
                                                                  root@linux-dxjo:~>

                                                                新建容器网络

                                                                1. 新建bridge网络,名称为lq01.net:
                                                                  root@linux-dxjo:~> docker network create -d bridge lq01.net
                                                                  0317a8cd7bd67758d981470ed4d8d06dccf0e52df05ffd345a5c186a160a99a9

                                                                  #查看现在的网络状况.
                                                                  root@linux-dxjo:~> docker network ls
                                                                  NETWORK ID          NAME                DRIVER              SCOPE
                                                                  eced4efd22c4        bridge              bridge              local
                                                                  006540679f04        host                host                local
                                                                  0317a8cd7bd6        lq01.net          bridge              local
                                                                  bb6717ea195a        none                null                local

                                                                  查看网络详细
                                                                  root@linux-dxjo:~> docker network inspect lq01.net
                                                                  [
                                                                      {
                                                                          "Name": "lq01.net",
                                                                          "Id": "0317a8cd7bd67758d981470ed4d8d06dccf0e52df05ffd345a5c186a160a99a9",
                                                                          "Created": "2020-03-26T03:18:35.758811904-04:00",
                                                                          "Scope": "local",
                                                                          "Driver": "bridge",
                                                                          "EnableIPv6": false,
                                                                          "IPAM": {
                                                                              "Driver": "default",
                                                                              "Options": {},
                                                                              "Config": [
                                                                                  {
                                                                                      "Subnet": "172.18.0.0/16",
                                                                                      "Gateway": "172.18.0.1"
                                                                                  }
                                                                              ]
                                                                          },
                                                                          "Internal": false,
                                                                          "Attachable": false,
                                                                          "Ingress": false,
                                                                          "ConfigFrom": {
                                                                              "Network": ""
                                                                          },
                                                                          "ConfigOnly": false,
                                                                          "Containers": {},
                                                                          "Options": {},
                                                                          "Labels": {}
                                                                      }
                                                                  ]
                                                                  root@linux-dxjo:~>
                                                                2. 在新网络内执行开启镜像。即在创建容器时显式将该容器连接到该网络。
                                                                  先查看所有镜像
                                                                  root@linux-dxjo:~> docker image ls
                                                                  REPOSITORY                       TAG        IMAGE ID      CREATED     SIZE
                                                                  postgres                         latest     cf879a45faaa  7 weeks ago 394MB
                                                                  mysql                            latest     791b6e40940c  7 weeks ago 465MB
                                                                  martinsthiago/oraclexe-11g-fig   latest     8253c6cad9fe  4 years ago 1.93GB

                                                                  在新的网络内开启postgres的镜像,必须设定明确的IP,不然启动不起来。


                                                                  docker run --name postgres1802 -e POSTGRES_PASSWORD=mysecretpassword -d postgres --network lq01.net  --ip 172.18.0.2
                                                                  97aa95cebfca6eb84d1be09dbed66e7db6037de044540af3b41f1174745be121
                                                                  root@linux-dxjo:~> docker ps -a
                                                                  CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                            NAMES
                                                                  97aa95cebfca        postgres                         "docker-entrypoint.s…"   8 seconds ago       Up 6 seconds        5432/tcp                                         postgres1802
                                                                  4e886ce92b11        postgres                         "docker-entrypoint.s…"   15 minutes ago      Up 15 minutes       5432/tcp                                         postgresdb2
                                                                  a837d8deb6fb        martinsthiago/oraclexe-11g-fig   "/startup.sh --name …"   3 weeks ago         Up About an hour    0.0.0.0:1521->1521/tcp, 0.0.0.0:8088->8080/tcp   distracted_payne
                                                                  d5cfaf9bc203        mysql                            "docker-entrypoint.s…"   6 weeks ago         Up About an hour    0.0.0.0:3306->3306/tcp, 33060/tcp                mysql-test
                                                                  root@linux-dxjo:~>
                                                                  root@linux-dxjo:~> docker run -itd --name nginx02 --network LBSnet --ip 172.20.1.11 nginx:latest 
                                                                  root@linux-dxjo:~> docker ps -a
                                                                  CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                            NAMES
                                                                  a2558eac3579        nginx:latest                     "nginx -g 'daemon of…"   5 seconds ago       Up 3 seconds        80/tcp                                           nginx02
                                                                  8c01025fcaf3        nginx:latest                     "nginx -g 'daemon of…"   4 minutes ago       Up 4 minutes        80/tcp                                           nginx01
                                                                  4 


                                                              1. root@linux-dxjo:~> docker run -itd --name nginx01 --network LBSnet --ip 172.20.1.10 nginx:latest  
                                                                root@linux-dxjo:~> docker ps -a
                                                                CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                            NAMES
                                                                a2558eac3579        nginx:latest                     "nginx -g 'daemon of…"   5 seconds ago       Up 3 seconds        80/tcp                                           nginx02
                                                                root@linux-dxjo:~> docker run -itd --name nginx02 --network LBSnet --ip 172.20.1.11 nginx:latest  
                                                              2. 可以将容器添加到多个网络。
                                                                既存网络:lq01.net:172.18.0.1/8
                                                                创建新的网络:
                                                                docker network create -d bridge --subnet 172.20.1.0/24 --gateway 172.20.1.1 LBSnet
                                                                然后将容器链接到指定的网络。
                                                                docker network connect lq01.net nginx01

                                                                容器仅能在网络内通信,不能跨网络进行通信。
                                                                一个连接到两个网络的容器可与每个网络中的成员容器进行通信。
                                                                当一个容器连接到多个网络时,外部连接通过第一个(按词典顺序)非内部网络提供。
                                                              3.  

                                                                随笔:大字成语


                                                                • 大方無隅:地方至极,则看不到它的拐角。平面无限大。古人相信天圆地方。
                                                                • 大器晩成:器贵至极,则要长期的打磨。时间无限长。
                                                                • 大音希声:声音至极,回声無穷。无限循环。
                                                                • 大象無形:象大致及,则無具体形状。立体无限大。

                                                                OpenSUSE中的网络查看命令

                                                                参考自:
                                                                https://software.opensuse.org/package/net-tools-deprecated
                                                                Deprecated Networking Utilities
                                                                This package contains the deprecated network utilities arp, ifconfig, netstat and route, which have been replaced by tools from the iproute2 package: 
                                                                * arp -> ip [-r] neigh 
                                                                * ifconfig -> ip a 
                                                                * netstat -> ss [-r] 
                                                                * route -> ip r
                                                                iproute2: 
                                                              4. size 170KB,
                                                              5. openSUSE Leap 15.1
                                                              6. ITIL4 Foundation Study Guide 2 : 4 Dimensions and 6 Factors

                                                                4  Dimensions:  Dimension1: Organizations & People Dimension2: Information & Technology Dimension3: Partners & Suppliers D...