Linux企业应用——Docker(五)之Docker网络

文章目录

  • 一、三种原生网络
    • 1.bridge桥接模式
    • 2.host模式
    • 3.none模式
  • 二、Docker自定义网络
    • 1.创建
    • 2.容器互访
    • 3.自定义网络,设置自定义网段和网关
    • 4.创建容器自定义ip
  • 三、容器的通信
    • 1.Joined容器
    • 2. --link
  • 三、跨主机网络通信
    • macvlan网络方案实现

清除所有的不用的镜像、容器、数据卷、网络

dcoekr system prune

一、三种原生网络


[root@k8s2 harbor]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
696489daaaf3   bridge    bridge    local
daf109ce4ab0   host      host      local
41928efc6031   none      null      local

1.bridge桥接模式

• bridge模式下容器没有一个公有ip,只有宿主机可以直接访问,外部主机
是不可见的。
• 容器通过宿主机的NAT规则后可以访问外网。
Linux企业应用——Docker(五)之Docker网络_第1张图片

[root@k8s2 harbor]# docker run -it --rm busybox
/ # ip addr
1: lo: ,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
23: eth0@if24: ,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

yum install -y bridge-utils

docker安装时会创建一个名为 docker0 的Linux bridge,新建的容器
会自动桥接到这个接口。


[root@k8s2 harbor]# brctl show
bridge name     bridge id               STP enabled     interfaces
docker0         8000.02425d314189       no
[root@k8s2 harbor]# ip addr
1: lo: ,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: ,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:09:e9:3a brd ff:ff:ff:ff:ff:ff
    inet 172.27.84.9/20 brd 172.27.95.255 scope global dynamic eth0
       valid_lft 315359423sec preferred_lft 315359423sec
3: docker0: ,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:5d:31:41:89 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

防火墙策略查看

[root@k8s2 harbor]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (1 references)
target     prot opt source               destination

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-USER (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

[root@k8s2 harbor]# docker run -d --name vm1 nginx
69935dabfb2a1f059b8ed97c7a2da1c58825a7bdc4edc84f79b2e55eff950d99
[root@k8s2 harbor]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
69935dabfb2a   nginx     "/docker-entrypoint.…"   4 seconds ago   Up 3 seconds   80/tcp    vm1
[root@k8s2 harbor]# docker inspect vm1|grep Pid
            "Pid": 11664,
            "PidMode": "",
            "PidsLimit": null,
[root@k8s2 harbor]# cd /proc/11664
[root@k8s2 11664]# ls
attr        cmdline          environ  io         mem         ns             pagemap      sched      stack    task
autogroup   comm             exe      limits     mountinfo   numa_maps      patch_state  schedstat  stat     timers
auxv        coredump_filter  fd       loginuid   mounts      oom_adj        personality  sessionid  statm    uid_map
cgroup      cpuset           fdinfo   map_files  mountstats  oom_score      projid_map   setgroups  status   wchan
clear_refs  cwd              gid_map  maps       net         oom_score_adj  root         smaps      syscall
[root@k8s2 11664]# cd ns/
[root@k8s2 ns]# ls
ipc  mnt  net  pid  user  uts

docker inspect vm1可查看vm1容器被分配到ip地址

Linux企业应用——Docker(五)之Docker网络_第2张图片
宿主机可以直接访问,但其他主机不能访问


[root@k8s2 ns]# curl 172.17.0.2
<!DOCTYPE html>


Welcome to nginx!<<span class="token operator">/</span>title>
<style>
html <span class="token punctuation">{</span> color-scheme: light dark<span class="token punctuation">;</span> <span class="token punctuation">}</span>
body <span class="token punctuation">{</span> width: 35em<span class="token punctuation">;</span> margin: 0 auto<span class="token punctuation">;</span>
font-family: Tahoma<span class="token punctuation">,</span> Verdana<span class="token punctuation">,</span> Arial<span class="token punctuation">,</span> sans-serif<span class="token punctuation">;</span> <span class="token punctuation">}</span>
<<span class="token operator">/</span>style>
<<span class="token operator">/</span>head>
<body>
<h1>Welcome to nginx!<<span class="token operator">/</span>h1>
<p><span class="token keyword">If</span> you see this page<span class="token punctuation">,</span> the nginx web server is successfully installed and
working<span class="token punctuation">.</span> Further configuration is required<span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><span class="token keyword">For</span> online documentation and support please refer to
<a href=<span class="token string">"http://nginx.org/"</span>>nginx<span class="token punctuation">.</span>org<<span class="token operator">/</span>a><span class="token punctuation">.</span><br/>
Commercial support is available at
<a href=<span class="token string">"http://nginx.com/"</span>>nginx<span class="token punctuation">.</span>com<<span class="token operator">/</span>a><span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><em>Thank you <span class="token keyword">for</span> <span class="token keyword">using</span> nginx<span class="token punctuation">.</span><<span class="token operator">/</span>em><<span class="token operator">/</span>p>
<<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>

</code></pre> 
  <h2>2.host模式</h2> 
  <p>host模式可以让容器共享宿主机网络栈,这样的好处是外部主机与容<br> 器直接通信,但是容器的网络缺少隔离性。<br> <a href="http://img.e-com-net.com/image/info8/33ea345691f14356be116efbb2b55790.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/33ea345691f14356be116efbb2b55790.jpg" alt="Linux企业应用——Docker(五)之Docker网络_第3张图片" width="650" height="533" style="border:1px solid black;"></a></p> 
  <p><code>docker inspect vm2</code>vm2没有被分到IP地址,因为它和宿主机<mark>共享网络栈</mark></p> 
  <p><a href="http://img.e-com-net.com/image/info8/269ffa78b17f4e089ed6be5582496a11.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/269ffa78b17f4e089ed6be5582496a11.jpg" alt="Linux企业应用——Docker(五)之Docker网络_第4张图片" width="650" height="609" style="border:1px solid black;"></a></p> 
  <p>使用<mark>其他主机</mark><code>curl 172.27.86.9</code>访问该宿主机,能直接到达vm2容器</p> 
  <p><a href="http://img.e-com-net.com/image/info8/9a869e2e5ff74af79d7545f545d876bf.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/9a869e2e5ff74af79d7545f545d876bf.jpg" alt="Linux企业应用——Docker(五)之Docker网络_第5张图片" width="650" height="515" style="border:1px solid black;"></a><br> 弊端,当创建多个容器时,<mark>容器运行起冲突</mark></p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -d --name vm3 --network host nginx</span>
98791f547c93cdf385e3488d74b721cd946526bd0d0827fa8bc0806acc9c3a14
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS     NAMES
8879ed66ee64   nginx     <span class="token string">"/docker-entrypoint.…"</span>   About a minute ago   Up About a minute             vm2

</code></pre> 
  <p><code>docker logs vm3</code>端口80冲突<br> <a href="http://img.e-com-net.com/image/info8/9740646b683546aaa033fa1777dd0de2.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/9740646b683546aaa033fa1777dd0de2.jpg" alt="Linux企业应用——Docker(五)之Docker网络_第6张图片" width="650" height="518" style="border:1px solid black;"></a></p> 
  <h2>3.none模式</h2> 
  <p>none模式是指禁用网络功能,只有lo接口,在容器创建时使用–network=none指定。<br> 主要用来做网络隔离,在容器内存储密钥之类。</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -it --rm --network none busybox</span>
<span class="token operator">/</span> <span class="token comment"># ip addr</span>
1: lo: <LOOPBACK<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1/8 scope host lo
       valid_lft forever preferred_lft forever
<span class="token operator">/</span> <span class="token comment">#</span>

</code></pre> 
  <h1>二、Docker自定义网络</h1> 
  <h2>1.创建</h2> 
  <pre><code class="prism language-powershell">
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -d --name vm1 nginx</span>
f8a491eb153f8e8482165f7ee3188fd97fae1c8698adefa6bcb39ea0b13337dc
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -d --name vm2 nginx</span>
3673ada86dfc0c52af1d8711811b78ac64473e067fdc09608f2557d52050eff9
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
3673ada86dfc   nginx     <span class="token string">"/docker-entrypoint.…"</span>   2 seconds ago   Up 2 seconds   80/tcp    vm2
f8a491eb153f   nginx     <span class="token string">"/docker-entrypoint.…"</span>   6 seconds ago   Up 5 seconds   80/tcp    vm1

</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/5b140aac9a6b41c2bb75725286994066.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/5b140aac9a6b41c2bb75725286994066.jpg" alt="Linux企业应用——Docker(五)之Docker网络_第7张图片" width="650" height="871" style="border:1px solid black;"></a></p> 
  <p><a href="http://img.e-com-net.com/image/info8/de88ecc12f2d44719d701a1db7a8311b.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/de88ecc12f2d44719d701a1db7a8311b.jpg" alt="Linux企业应用——Docker(五)之Docker网络_第8张图片" width="650" height="667" style="border:1px solid black;"></a><br> 容器的ip地址是流动的,关闭又启动后的<mark>地址分配</mark>,是单调递增的</p> 
  <pre><code class="prism language-powershell">
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker stop vm1</span>
vm1
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker stop vm2</span>
vm2
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker start vm2</span>
vm2
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker start vm1</span>
vm1

</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/428c0b3904cc47b9816ff332a0b3ecc7.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/428c0b3904cc47b9816ff332a0b3ecc7.jpg" alt="Linux企业应用——Docker(五)之Docker网络_第9张图片" width="650" height="498" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/640a8769eb6d4725b82327d6047071ff.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/640a8769eb6d4725b82327d6047071ff.jpg" alt="Linux企业应用——Docker(五)之Docker网络_第10张图片" width="650" height="473" style="border:1px solid black;"></a><br> 创建一个自己的网络mynet1</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker network create mynet1</span>
7b3f43033e18c7fe601b4467d44f21ee38e6fe1fff53056c2140cd36f7f74984
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker network ls</span>
NETWORK ID     NAME      DRIVER    SCOPE
696489daaaf3   bridge    bridge    local
daf109ce4ab0   host      host      local
7b3f43033e18   mynet1    bridge    local
41928efc6031   none      null      local

</code></pre> 
  <p><mark>可以发现容器内内嵌DNS,这为容器互访带来了便利</mark></p> 
  <pre><code class="prism language-powershell">
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -it --rm --name vm3 --network mynet1 busybox</span>
<span class="token operator">/</span> <span class="token comment"># ip addr</span>
1: lo: <LOOPBACK<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1/8 scope host lo
       valid_lft forever preferred_lft forever
38: eth0@if39: <BROADCAST<span class="token punctuation">,</span>MULTICAST<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP<span class="token punctuation">,</span>M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:<span class="token function">ac</span>:12:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2/16 brd 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>255<span class="token punctuation">.</span>255 scope global eth0
       valid_lft forever preferred_lft forever
<span class="token operator">/</span> <span class="token comment"># ping vm3</span>
PING vm3 <span class="token punctuation">(</span>172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2<span class="token punctuation">)</span>: 56 <span class="token keyword">data</span> bytes
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=0 ttl=64 time=0<span class="token punctuation">.</span>051 ms
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=1 ttl=64 time=0<span class="token punctuation">.</span>085 ms
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=2 ttl=64 time=0<span class="token punctuation">.</span>076 ms
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=3 ttl=64 time=0<span class="token punctuation">.</span>079 ms
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=4 ttl=64 time=0<span class="token punctuation">.</span>073 ms
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=5 ttl=64 time=0<span class="token punctuation">.</span>079 ms
^C
<span class="token operator">--</span><span class="token operator">-</span> vm3 ping statistics <span class="token operator">--</span><span class="token operator">-</span>
6 packets transmitted<span class="token punctuation">,</span> 6 packets received<span class="token punctuation">,</span> 0% packet loss
round-trip min/avg/max = 0<span class="token punctuation">.</span>051/0<span class="token punctuation">.</span>073/0<span class="token punctuation">.</span>085 ms
<span class="token operator">/</span> <span class="token comment"># cat /etc/hosts</span>
127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2      ff96ef344507

</code></pre> 
  <h2>2.容器互访</h2> 
  <pre><code class="prism language-powershell">
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -it --rm --name vm3 --network mynet1 busybox</span>
<span class="token operator">/</span> <span class="token comment"># ip addr</span>
1: lo: <LOOPBACK<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1/8 scope host lo
       valid_lft forever preferred_lft forever
42: eth0@if43: <BROADCAST<span class="token punctuation">,</span>MULTICAST<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP<span class="token punctuation">,</span>M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:<span class="token function">ac</span>:12:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>3/16 brd 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>255<span class="token punctuation">.</span>255 scope global eth0
       valid_lft forever preferred_lft forever
<span class="token operator">/</span> <span class="token comment"># ping web1</span>
PING web1 <span class="token punctuation">(</span>172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2<span class="token punctuation">)</span>: 56 <span class="token keyword">data</span> bytes
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=0 ttl=64 time=0<span class="token punctuation">.</span>102 ms
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=1 ttl=64 time=0<span class="token punctuation">.</span>104 ms
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=2 ttl=64 time=0<span class="token punctuation">.</span>098 ms
^C
<span class="token operator">--</span><span class="token operator">-</span> web1 ping statistics <span class="token operator">--</span><span class="token operator">-</span>
3 packets transmitted<span class="token punctuation">,</span> 3 packets received<span class="token punctuation">,</span> 0% packet loss
round-trip min/avg/max = 0<span class="token punctuation">.</span>098/0<span class="token punctuation">.</span>101/0<span class="token punctuation">.</span>104 ms
<span class="token operator">/</span> <span class="token comment"># cat /etc/hosts</span>
127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>3      3d3a46782051
<span class="token operator">/</span> <span class="token comment"># exit</span>
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -it --rm --name vm3 --network mynet1 busyboxplus</span>
<span class="token operator">/</span> <span class="token comment"># ip addr</span>
1: lo: <LOOPBACK<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1/8 scope host lo
       valid_lft forever preferred_lft forever
44: eth0@if45: <BROADCAST<span class="token punctuation">,</span>MULTICAST<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP<span class="token punctuation">,</span>M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:<span class="token function">ac</span>:12:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>3/16 brd 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>255<span class="token punctuation">.</span>255 scope global eth0
       valid_lft forever preferred_lft forever
<span class="token operator">/</span> <span class="token comment"># curl web1</span>
<<span class="token operator">!</span>DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!<<span class="token operator">/</span>title>
<style>
html <span class="token punctuation">{</span> color-scheme: light dark<span class="token punctuation">;</span> <span class="token punctuation">}</span>
body <span class="token punctuation">{</span> width: 35em<span class="token punctuation">;</span> margin: 0 auto<span class="token punctuation">;</span>
font-family: Tahoma<span class="token punctuation">,</span> Verdana<span class="token punctuation">,</span> Arial<span class="token punctuation">,</span> sans-serif<span class="token punctuation">;</span> <span class="token punctuation">}</span>
<<span class="token operator">/</span>style>
<<span class="token operator">/</span>head>
<body>
<h1>Welcome to nginx!<<span class="token operator">/</span>h1>
<p><span class="token keyword">If</span> you see this page<span class="token punctuation">,</span> the nginx web server is successfully installed and
working<span class="token punctuation">.</span> Further configuration is required<span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><span class="token keyword">For</span> online documentation and support please refer to
<a href=<span class="token string">"http://nginx.org/"</span>>nginx<span class="token punctuation">.</span>org<<span class="token operator">/</span>a><span class="token punctuation">.</span><br/>
Commercial support is available at
<a href=<span class="token string">"http://nginx.com/"</span>>nginx<span class="token punctuation">.</span>com<<span class="token operator">/</span>a><span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><em>Thank you <span class="token keyword">for</span> <span class="token keyword">using</span> nginx<span class="token punctuation">.</span><<span class="token operator">/</span>em><<span class="token operator">/</span>p>
<<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>
<span class="token operator">/</span> <span class="token comment">#</span>

</code></pre> 
  <h2>3.自定义网络,设置自定义网段和网关</h2> 
  <p><code>--subnet</code>参数设置网段,<code>--gateway</code>设置网关</p> 
  <pre><code class="prism language-powershell">
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker network create --subnet 30.0.0.0/24 --gateway 30.0.0.1 mynet2</span>
ff3d3c3e9d0284f0a96643398f0d41e23e5bd03bff4ee9438398349c4ebe532d
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker inspect mynet2</span>
<span class="token punctuation">[</span>
    <span class="token punctuation">{</span>
        <span class="token string">"Name"</span>: <span class="token string">"mynet2"</span><span class="token punctuation">,</span>
        <span class="token string">"Id"</span>: <span class="token string">"ff3d3c3e9d0284f0a96643398f0d41e23e5bd03bff4ee9438398349c4ebe532d"</span><span class="token punctuation">,</span>
        <span class="token string">"Created"</span>: <span class="token string">"2022-11-04T15:39:31.816320337+08:00"</span><span class="token punctuation">,</span>
        <span class="token string">"Scope"</span>: <span class="token string">"local"</span><span class="token punctuation">,</span>
        <span class="token string">"Driver"</span>: <span class="token string">"bridge"</span><span class="token punctuation">,</span>
        <span class="token string">"EnableIPv6"</span>: false<span class="token punctuation">,</span>
        <span class="token string">"IPAM"</span>: <span class="token punctuation">{</span>
            <span class="token string">"Driver"</span>: <span class="token string">"default"</span><span class="token punctuation">,</span>
            <span class="token string">"Options"</span>: <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
            <span class="token string">"Config"</span>: <span class="token punctuation">[</span>
                <span class="token punctuation">{</span>
                    <span class="token string">"Subnet"</span>: <span class="token string">"30.0.0.0/24"</span><span class="token punctuation">,</span>
                    <span class="token string">"Gateway"</span>: <span class="token string">"30.0.0.1"</span>
                <span class="token punctuation">}</span>
            <span class="token punctuation">]</span>
        <span class="token punctuation">}</span><span class="token punctuation">,</span>
        <span class="token string">"Internal"</span>: false<span class="token punctuation">,</span>
        <span class="token string">"Attachable"</span>: false<span class="token punctuation">,</span>
        <span class="token string">"Ingress"</span>: false<span class="token punctuation">,</span>
        <span class="token string">"ConfigFrom"</span>: <span class="token punctuation">{</span>
            <span class="token string">"Network"</span>: <span class="token string">""</span>
        <span class="token punctuation">}</span><span class="token punctuation">,</span>
        <span class="token string">"ConfigOnly"</span>: false<span class="token punctuation">,</span>
        <span class="token string">"Containers"</span>: <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
        <span class="token string">"Options"</span>: <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
        <span class="token string">"Labels"</span>: <span class="token punctuation">{</span><span class="token punctuation">}</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">]</span>


</code></pre> 
  <h2>4.创建容器自定义ip</h2> 
  <p>• 使用<code>--ip参数</code>可以指定容器ip地址,但必须是在自定义网桥上,默认的bridge模式不支持,同一网桥上的容器是可以互通的。</p> 
  <pre><code class="prism language-powershell">
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -it --rm --name vm3 --network mynet2 --ip 30.0.0.126 busyboxplus</span>
<span class="token operator">/</span> <span class="token comment"># ping 30.0.0.1</span>
PING 30<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1 <span class="token punctuation">(</span>30<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1<span class="token punctuation">)</span>: 56 <span class="token keyword">data</span> bytes
64 bytes <span class="token keyword">from</span> 30<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1: seq=0 ttl=64 time=0<span class="token punctuation">.</span>107 ms
^C
<span class="token operator">--</span><span class="token operator">-</span> 30<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1 ping statistics <span class="token operator">--</span><span class="token operator">-</span>
1 packets transmitted<span class="token punctuation">,</span> 1 packets received<span class="token punctuation">,</span> 0% packet loss
round-trip min/avg/max = 0<span class="token punctuation">.</span>107/0<span class="token punctuation">.</span>107/0<span class="token punctuation">.</span>107 ms

</code></pre> 
  <p>web1和vm3属于不同网桥,所以不互通</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -it --rm --name vm3 --network mynet2 --ip 30.0.0.126 busyboxplus</span>
<span class="token operator">/</span> <span class="token comment"># ping web1</span>
ping: bad address <span class="token string">'web1'</span>

</code></pre> 
  <p>如何实现不同网桥互通?</p> 
  <p><a href="http://img.e-com-net.com/image/info8/f0f41ee62cad4d4ea11aa8e238c9f4e1.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/f0f41ee62cad4d4ea11aa8e238c9f4e1.jpg" alt="Linux企业应用——Docker(五)之Docker网络_第11张图片" width="650" height="545" style="border:1px solid black;"></a><br> Ctrl+p+q将容器打入后台<br> <code>docker network connect mynet1 vm3</code>给容器再添加一块mynet1的网卡</p> 
  <pre><code class="prism language-powershell"><span class="token operator">/</span> <span class="token comment"># [root@k8s2 ns]# docker ps</span>
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS     NAMES
d90a71b34cd1   busyboxplus   <span class="token string">"/bin/sh"</span>                2 minutes ago    Up 2 minutes              vm3
f37215297f66   nginx         <span class="token string">"/docker-entrypoint.…"</span>   8 minutes ago    Up 8 minutes    80/tcp    web1
3673ada86dfc   nginx         <span class="token string">"/docker-entrypoint.…"</span>   16 minutes ago   Up 14 minutes   80/tcp    vm2
f8a491eb153f   nginx         <span class="token string">"/docker-entrypoint.…"</span>   16 minutes ago   Up 14 minutes   80/tcp    vm1
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker network connect mynet1 vm3</span>
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker attach vm3</span>
<span class="token operator">/</span> <span class="token comment"># ip addr</span>
1: lo: <LOOPBACK<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1/8 scope host lo
       valid_lft forever preferred_lft forever
47: eth0@if48: <BROADCAST<span class="token punctuation">,</span>MULTICAST<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP<span class="token punctuation">,</span>M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:1e:00:00:7e brd ff:ff:ff:ff:ff:ff
    inet 30<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>126/24 brd 30<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>255 scope global eth0
       valid_lft forever preferred_lft forever
49: eth1@if50: <BROADCAST<span class="token punctuation">,</span>MULTICAST<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP<span class="token punctuation">,</span>M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:<span class="token function">ac</span>:12:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>3/16 brd 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>255<span class="token punctuation">.</span>255 scope global eth1
       valid_lft forever preferred_lft forever
<span class="token operator">/</span> <span class="token comment"># ping web1</span>
PING web1 <span class="token punctuation">(</span>172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2<span class="token punctuation">)</span>: 56 <span class="token keyword">data</span> bytes
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=0 ttl=64 time=0<span class="token punctuation">.</span>112 ms
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=1 ttl=64 time=0<span class="token punctuation">.</span>103 ms
^C
<span class="token operator">--</span><span class="token operator">-</span> web1 ping statistics <span class="token operator">--</span><span class="token operator">-</span>
2 packets transmitted<span class="token punctuation">,</span> 2 packets received<span class="token punctuation">,</span> 0% packet loss
round-trip min/avg/max = 0<span class="token punctuation">.</span>103/0<span class="token punctuation">.</span>107/0<span class="token punctuation">.</span>112 ms
<span class="token operator">/</span> <span class="token comment">#</span>

</code></pre> 
  <h1>三、容器的通信</h1> 
  <p>容器之间除了使用ip通信外,还可以使用容器名称通信。<br> • docker 1.10开始,内嵌了一个DNS server。<br> • dns解析功能必须在自定义网络中使用。<br> • 启动容器时使用 --name 参数指定容器名称</p> 
  <h2>1.Joined容器</h2> 
  <p>Joined容器一种较为特别的网络模式。处于这个模式下的 Docker 容器会共享一个网络栈,这样两个容器之<br> 间可以使用localhost高效快速通信。</p> 
  <p><a href="http://img.e-com-net.com/image/info8/5c2fde2d33fb4ae2a89f771a5da6a045.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/5c2fde2d33fb4ae2a89f771a5da6a045.jpg" alt="Linux企业应用——Docker(五)之Docker网络_第12张图片" width="632" height="521" style="border:1px solid black;"></a><br> • 在容器创建时使用<code>--network=container:vm1</code>指定。(vm1指定的是运行的容器名)</p> 
  <pre><code class="prism language-powershell">
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -it --name vm1 --network container:web1 busyboxplus</span>
<span class="token operator">/</span> <span class="token comment"># ip addr</span>
1: lo: <LOOPBACK<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1/8 scope host lo
       valid_lft forever preferred_lft forever
40: eth0@if41: <BROADCAST<span class="token punctuation">,</span>MULTICAST<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP<span class="token punctuation">,</span>M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:<span class="token function">ac</span>:12:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2/16 brd 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>255<span class="token punctuation">.</span>255 scope global eth0
       valid_lft forever preferred_lft forever
<span class="token operator">/</span> <span class="token comment"># ping web1</span>
PING web1 <span class="token punctuation">(</span>172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2<span class="token punctuation">)</span>: 56 <span class="token keyword">data</span> bytes
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=0 ttl=64 time=0<span class="token punctuation">.</span>048 ms
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>18<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=1 ttl=64 time=0<span class="token punctuation">.</span>080 ms
^C
<span class="token operator">--</span><span class="token operator">-</span> web1 ping statistics <span class="token operator">--</span><span class="token operator">-</span>
2 packets transmitted<span class="token punctuation">,</span> 2 packets received<span class="token punctuation">,</span> 0% packet loss
round-trip min/avg/max = 0<span class="token punctuation">.</span>048/0<span class="token punctuation">.</span>064/0<span class="token punctuation">.</span>080 ms
<span class="token operator">/</span> <span class="token comment"># curl localhost</span>
<<span class="token operator">!</span>DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!<<span class="token operator">/</span>title>
<style>
html <span class="token punctuation">{</span> color-scheme: light dark<span class="token punctuation">;</span> <span class="token punctuation">}</span>
body <span class="token punctuation">{</span> width: 35em<span class="token punctuation">;</span> margin: 0 auto<span class="token punctuation">;</span>
font-family: Tahoma<span class="token punctuation">,</span> Verdana<span class="token punctuation">,</span> Arial<span class="token punctuation">,</span> sans-serif<span class="token punctuation">;</span> <span class="token punctuation">}</span>
<<span class="token operator">/</span>style>
<<span class="token operator">/</span>head>
<body>
<h1>Welcome to nginx!<<span class="token operator">/</span>h1>
<p><span class="token keyword">If</span> you see this page<span class="token punctuation">,</span> the nginx web server is successfully installed and
working<span class="token punctuation">.</span> Further configuration is required<span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><span class="token keyword">For</span> online documentation and support please refer to
<a href=<span class="token string">"http://nginx.org/"</span>>nginx<span class="token punctuation">.</span>org<<span class="token operator">/</span>a><span class="token punctuation">.</span><br/>
Commercial support is available at
<a href=<span class="token string">"http://nginx.com/"</span>>nginx<span class="token punctuation">.</span>com<<span class="token operator">/</span>a><span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><em>Thank you <span class="token keyword">for</span> <span class="token keyword">using</span> nginx<span class="token punctuation">.</span><<span class="token operator">/</span>em><<span class="token operator">/</span>p>
<<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>
<span class="token operator">/</span> <span class="token comment">#</span>

</code></pre> 
  <h2>2. --link</h2> 
  <pre><code class="prism language-powershell">
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -d --name web1 nginx</span>
91c420704b24eeda1caebe7f33995a07b76c83dbb01184de22a6e803788188d1
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
91c420704b24   nginx     <span class="token string">"/docker-entrypoint.…"</span>   5 seconds ago   Up 4 seconds   80/tcp    web1
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -it --name vm1 --link web1:nginx busyboxplus</span>
<span class="token operator">/</span> <span class="token comment"># ip addr</span>
1: lo: <LOOPBACK<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1/8 scope host lo
       valid_lft forever preferred_lft forever
57: eth0@if58: <BROADCAST<span class="token punctuation">,</span>MULTICAST<span class="token punctuation">,</span>UP<span class="token punctuation">,</span>LOWER_UP<span class="token punctuation">,</span>M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:<span class="token function">ac</span>:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0<span class="token punctuation">.</span>3/16 brd 172<span class="token punctuation">.</span>17<span class="token punctuation">.</span>255<span class="token punctuation">.</span>255 scope global eth0
       valid_lft forever preferred_lft forever
<span class="token operator">/</span> <span class="token comment"># ping web1</span>
PING web1 <span class="token punctuation">(</span>172<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2<span class="token punctuation">)</span>: 56 <span class="token keyword">data</span> bytes
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=0 ttl=64 time=0<span class="token punctuation">.</span>133 ms
64 bytes <span class="token keyword">from</span> 172<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2: seq=1 ttl=64 time=0<span class="token punctuation">.</span>101 ms
^C
<span class="token operator">--</span><span class="token operator">-</span> web1 ping statistics <span class="token operator">--</span><span class="token operator">-</span>
2 packets transmitted<span class="token punctuation">,</span> 2 packets received<span class="token punctuation">,</span> 0% packet loss
round-trip min/avg/max = 0<span class="token punctuation">.</span>101/0<span class="token punctuation">.</span>117/0<span class="token punctuation">.</span>133 ms
<span class="token operator">/</span> <span class="token comment">#</span>

</code></pre> 
  <p>容器解析查看<code>cat /etc/hosts</code>或者·env·(里面存储变量值)<br> 当容器地址改变时,解析同步变化,变量不变,容器重启后,变量才会改变</p> 
  <pre><code class="prism language-powershell">
<span class="token operator">/</span> <span class="token comment"># cat /etc/hosts</span>
127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2      nginx 91c420704b24 web1
172<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0<span class="token punctuation">.</span>3      98279a1cd492
<span class="token operator">/</span> <span class="token comment"># env</span>
HOSTNAME=98279a1cd492
SHLVL=1
HOME=<span class="token operator">/</span>
NGINX_ENV_PKG_RELEASE=1~bullseye
NGINX_PORT_80_TCP=tcp:<span class="token operator">/</span><span class="token operator">/</span>172<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2:80
NGINX_ENV_NGINX_VERSION=1<span class="token punctuation">.</span>23<span class="token punctuation">.</span>2
NGINX_ENV_NJS_VERSION=0<span class="token punctuation">.</span>7<span class="token punctuation">.</span>7
TERM=xterm
PATH=<span class="token operator">/</span>usr/local/sbin:<span class="token operator">/</span>usr/local/bin:<span class="token operator">/</span>usr/sbin:<span class="token operator">/</span>usr/bin:<span class="token operator">/</span>sbin:<span class="token operator">/</span>bin
NGINX_PORT=tcp:<span class="token operator">/</span><span class="token operator">/</span>172<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2:80
NGINX_NAME=<span class="token operator">/</span>vm1/nginx
<span class="token function">PWD</span>=<span class="token operator">/</span>
NGINX_PORT_80_TCP_ADDR=172<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0<span class="token punctuation">.</span>2
NGINX_PORT_80_TCP_PORT=80
NGINX_PORT_80_TCP_PROTO=tcp
<span class="token operator">/</span> <span class="token comment">#</span>

</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/576c127be7b3432d8bf80a4cb2bfd122.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/576c127be7b3432d8bf80a4cb2bfd122.jpg" alt="Linux企业应用——Docker(五)之Docker网络_第13张图片" width="650" height="344" style="border:1px solid black;"></a><br> • 外网如何访问容器:<br> • 端口映射<br> • -p 选项指定映射端口</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># ps ax | grep dokcer-proxy</span>
 4632 pts/0    S+     0:00 grep <span class="token operator">--</span>color=auto dokcer-proxy
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker run -d --name web2 -p 80:80 nginx</span>
1bbc2a10781df7efdd197fa27b436a11f052e1826f5ee5d5340d4fce8568aa15
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># docker port web2</span>
80/tcp <span class="token operator">-</span>> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:80
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># ps ax | grep dokcer-proxy</span>
 5147 pts/0    S+     0:00 grep <span class="token operator">--</span>color=auto dokcer-proxy
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment"># netstat -antlp| grep :80</span>
tcp        0      0 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:80              0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:<span class="token operator">*</span>               LISTEN      4913/docker-proxy
tcp        0      0 172<span class="token punctuation">.</span>27<span class="token punctuation">.</span>84<span class="token punctuation">.</span>9:49624       100<span class="token punctuation">.</span>100<span class="token punctuation">.</span>30<span class="token punctuation">.</span>26:80        ESTABLISHED 1042/AliYunDun
<span class="token namespace">[root@k8s2 ns]</span><span class="token comment">#</span>

</code></pre> 
  <p>• 外网访问容器用到了docker-proxy和iptables DNAT<br> • 宿主机访问本机容器使用的是iptables DNAT<br> • 外部主机访问容器或容器之间的访问是docker-proxy实现<br> <a href="http://img.e-com-net.com/image/info8/dc4be31814c4409892ebbc0ddf285a50.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/dc4be31814c4409892ebbc0ddf285a50.jpg" alt="Linux企业应用——Docker(五)之Docker网络_第14张图片" width="650" height="311" style="border:1px solid black;"></a></p> 
  <h1>三、跨主机网络通信</h1> 
  <p>跨主机网络解决方案<br> • docker原生的overlay和macvlan<br> • 第三方的flannel、weave、calico<br> • 众多网络方案是如何与docker集成在一起的<br> • libnetwork docker容器网络库<br> • CNM (Container Network Model)这个模型对容器网络进行了抽象</p> 
  <h2>macvlan网络方案实现</h2> 
  <p>• Linux kernel提供的一种网卡虚拟化技术。<br> • 无需Linux bridge,直接使用物理接口,性能极好</p> 
  <p><mark>在两台主机上</mark>激活网卡开启混杂模式</p> 
  <pre><code class="prism language-powershell">ip link <span class="token function">set</span> eth0 promisc on
</code></pre> 
  <p><mark>在两个主机上</mark>创建macvlan网络<br> 设置parent网络为eth0的子接口</p> 
  <pre><code class="prism language-powershell"> docker network create <span class="token operator">-</span>d macvlan <span class="token operator">--</span>subnet 20<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0/24 <span class="token operator">--</span>gateway 20<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1 <span class="token operator">-</span>o parent=eth0<span class="token punctuation">.</span>1 macvlan1
</code></pre> 
  <p>一个主机</p> 
  <pre><code class="prism language-powershell">docker run <span class="token operator">-</span>it <span class="token operator">--</span><span class="token function">rm</span> <span class="token operator">--</span>name web1 <span class="token operator">--</span>network macvlan1 <span class="token operator">--</span>ip 20<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>11 busyboxplus
</code></pre> 
  <p>另一个主机</p> 
  <pre><code class="prism language-powershell"> docker run <span class="token operator">-</span>it <span class="token operator">--</span><span class="token function">rm</span> <span class="token operator">--</span>name vm1 <span class="token operator">--</span>network macvlan1 <span class="token operator">--</span>ip 20<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>11 busyboxplus
</code></pre> 
  <p>两台主机能互相ping通,实现通信</p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1646729461976096768"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(Linux企业运维,docker,linux,网络)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1904063869286936576.htm"
                           title="Java面试黄金宝典12" target="_blank">Java面试黄金宝典12</a>
                        <span class="text-muted">ylfhpy</span>
<a class="tag" taget="_blank" href="/search/Java%E9%9D%A2%E8%AF%95%E9%BB%84%E9%87%91%E5%AE%9D%E5%85%B8/1.htm">Java面试黄金宝典</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>1.什么是Java类加载机制定义Java类加载机制是Java程序运行时的关键环节,其作用是把类的字节码文件(.class文件)加载到Java虚拟机(JVM)中,并且将字节码文件转化为JVM能够识别的类对象。整个类加载过程主要包含加载、连接(验证、准备、解析)和初始化三个阶段。原理加载阶段:此阶段会通过类的全限定名来获取定义该类的二进制字节流。获取途径较为多样,既可以从本地文件系统读取,也能从网络下</div>
                    </li>
                    <li><a href="/article/1904063111523004416.htm"
                           title="文件的基本的基本属性" target="_blank">文件的基本的基本属性</a>
                        <span class="text-muted">伶星37</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>为什么要有基本属性Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。例子你可以把Linux比作成一个学校,里面的人学生老师校长里面的资料课本学校档案老师个人备案资料学生只能看课本,其他的都不能看,而老师,可以看老师备案资料和课本。校长上面都可以看。在Linux中我们通常使</div>
                    </li>
                    <li><a href="/article/1904059708659003392.htm"
                           title="逆向爬虫-筑基篇-第二层-壹-计算机网络和因特网-008" target="_blank">逆向爬虫-筑基篇-第二层-壹-计算机网络和因特网-008</a>
                        <span class="text-muted">蓝花楹下</span>
<a class="tag" taget="_blank" href="/search/%E9%80%86%E5%90%91%E7%88%AC%E8%99%AB/1.htm">逆向爬虫</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>第二层网络初探计算机网络和因特网计算机网络与因特网之史分组交换之兴:1961-1972昔时,电话网为天下通信之主宰,其以电路交换之术,使语音恒速传于发收之间。然至20世纪60年代,计算机之重要日增,分时计算机亦现于世。彼时,智者思虑如何将计算机相连,使地理分布之用户共享其能。用户之流量,多具突发之性,如发一令于远机,继而静待其应,或思其答。当此之时,天下有三组智者,各自发明分组交换之术,以代电路交</div>
                    </li>
                    <li><a href="/article/1904059330253090816.htm"
                           title="Nginx多台服务器负载均衡" target="_blank">Nginx多台服务器负载均衡</a>
                        <span class="text-muted">PS测</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a>
                        <div>一操作步骤:1.服务器IP45.114.124.215//主服务器(安装Nginx)45.114.124.99//从服务器(安装Nginx或Apache都可以)2.保证2台服务器网络互通3.在2台服务器上设置不同页面方便验证3.1在主服务器添加一个可以访问的站点3.2在次服务器添加一个站点,端口必须是主服务器在nginx指定给次服务器的端口4.在主服务器45.114.124.215安装Nginx,</div>
                    </li>
                    <li><a href="/article/1904057811629830144.htm"
                           title="Dify1.01版本vscode 本地环境搭建运行实践" target="_blank">Dify1.01版本vscode 本地环境搭建运行实践</a>
                        <span class="text-muted">hamish-wu</span>
<a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a><a class="tag" taget="_blank" href="/search/dify/1.htm">dify</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a>
                        <div>dify是python编写的低代码AI开发平台,是常用的大模型开发平台。本文基于最新的1.0.1版本实践完成,有需要的可以私信交流。咨询免费,详细文档及视频需要一定成本,大概相当于节约的时间成本。搭建环境windows11开发工具vscode搭建步骤:1.Startthedocker-composestackwindow环境下运行docker命令,需要下载docker官网镜像,会遇到timeout</div>
                    </li>
                    <li><a href="/article/1904054528894889984.htm"
                           title="ERROR: Failed building wheel for pyaudioFailed to build pyaudioERROR: ERROR: Failed to build insta" target="_blank">ERROR: Failed building wheel for pyaudioFailed to build pyaudioERROR: ERROR: Failed to build insta</a>
                        <span class="text-muted">小李飞刀李寻欢</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/audio/1.htm">audio</a><a class="tag" taget="_blank" href="/search/pyaudio/1.htm">pyaudio</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E8%A3%85%E5%BA%93/1.htm">安装库</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>ERROR:FailedbuildingwheelforpyaudioFailedtobuildpyaudioERROR:ERROR:Failedtobuildinstallablewheelsforsomepyproject.tomlbasedprojects(pyaudio)这个错误表明在编译pyaudio时缺少PortAudio开发库。以下是完整解决方案:Linux系统解决方案#1.安装系统</div>
                    </li>
                    <li><a href="/article/1904053897371119616.htm"
                           title="2025年第二届机器学习与神经网络国际学术会议(MLNN 2025)" target="_blank">2025年第二届机器学习与神经网络国际学术会议(MLNN 2025)</a>
                        <span class="text-muted">分享学术科研与论文的禁小默</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>重要信息官网:www.icmlnn.org时间:2025年4月22-24日地点:中国-重庆简介2025年第二届机器学习与神经网络国际学术会议(MLNN2025)围绕学习系统与神经网络的核心理论、关键技术和应用展开讨论,涵盖深度学习、计算机视觉、自然语言处理、强化学习等多个子领域,通过特邀报告、主题演讲、海报展示等形式,展示相关领域的最新研究成果和技术创新。征稿主题神经网络机器学习深度学习算法及应用</div>
                    </li>
                    <li><a href="/article/1904052763243900928.htm"
                           title="别只会用别人的模型了,自学Ai大模型,顺序千万不要搞反了!刚入门的小白必备!" target="_blank">别只会用别人的模型了,自学Ai大模型,顺序千万不要搞反了!刚入门的小白必备!</a>
                        <span class="text-muted">鸡腿爱学习</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>大家好,我是JackBytes,一个专注于将人工智能应用于日常生活的半吊子程序猿,平时主要分享AI、NAS、Docker、搞机技巧、开源项目等。在使用诸如DeepSeek、ChatGPT、豆包、文心一言等大模型之余,你是否知道这些大模型背后的技术原理是什么?假如让你从头开始学习大模型,你知道应该遵循什么样的路线嘛?今天给大家介绍一下Ai大模型的学习路线,顺序千万不要搞反了!,大家可以按照这个路线进</div>
                    </li>
                    <li><a href="/article/1904051378020478976.htm"
                           title="服务器负载均衡" target="_blank">服务器负载均衡</a>
                        <span class="text-muted">冬冬小圆帽</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a>
                        <div>1.安装EPEL仓库EPEL(ExtraPackagesforEnterpriseLinux)仓库提供了额外的软件包,安装HAProxy前需要先启用EPEL仓库。sudoyuminstallepel-release-y2.安装HAProxy通过EPEL仓库安装HAProxy。sudoyuminstallhaproxy-y注意:如果服务器上已安装Docker,可能会干扰HAProxy的安装。建议先关</div>
                    </li>
                    <li><a href="/article/1904050117074284544.htm"
                           title="01.什么是MQTT?" target="_blank">01.什么是MQTT?</a>
                        <span class="text-muted">墨先森</span>
<a class="tag" taget="_blank" href="/search/NodeMCU%E4%B8%8EMQTT/1.htm">NodeMCU与MQTT</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a>
                        <div>目录00_前言01_简述02_特性03_MQTT运行机制00_前言本系列博客是基于NodeMCU平台来完成的一个物联网小项目,目的在于了解并学习MQTT协议,掌握MQTT协议的作用机制。以上。01_简述以下摘自百度百科MQTT(消息队列遥测传输)是ISO标准(ISO/IECPRF20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情</div>
                    </li>
                    <li><a href="/article/1904048982498275328.htm"
                           title="使用 Docker 部署 Puter 云桌面系统" target="_blank">使用 Docker 部署 Puter 云桌面系统</a>
                        <span class="text-muted">Jaxx.Wang</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/1.htm">开源项目</a><a class="tag" taget="_blank" href="/search/Docker/1.htm">Docker</a>
                        <div>1)Puter介绍:::infoGitHub:https://github.com/HeyPuter/puter:::Puter是一个先进的开源桌面环境,运行在浏览器中,旨在具备丰富的功能、异常快速和高度可扩展性。它可以用于构建远程桌面环境,也可以作为云存储服务、远程服务器、Web托管平台等的界面。Puter是一个隐私至上的个人云,可以将您的所有文件、应用程序和游戏保存在一个安全的地方,随时随地都</div>
                    </li>
                    <li><a href="/article/1904048730009563136.htm"
                           title="TCP和MQTT通信协议" target="_blank">TCP和MQTT通信协议</a>
                        <span class="text-muted">御风_21</span>
<a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91%E5%88%86%E4%BA%AB%E7%AF%87/1.htm">物联网分享篇</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a>
                        <div>协议分层网络分层协议应用层CoAPMQTTHTTP传输层UDPTCP网络层IP链路层Enternet网络分层中最常见的几种协议应用层:应用程序负责将数据以相应规则(协议)进行包装,发给传输层MQTT:消息队列遥测传输CoAP:受限应用协议HTTP:超文本传输协议传输层:负责将应用层传输过来的数组进行分组,为确保终端接收数据的顺序和完整性,会对每个分组进行标记,交给网络层TCP:传输控制协议UDP:</div>
                    </li>
                    <li><a href="/article/1904045075516682240.htm"
                           title="Docker搭建开源Web云桌面操作系统Puter和DaedalOS" target="_blank">Docker搭建开源Web云桌面操作系统Puter和DaedalOS</a>
                        <span class="text-muted">没刮胡子</span>
<a class="tag" taget="_blank" href="/search/Linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%8A%80%E6%9C%AF/1.htm">Linux服务器技术</a><a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/1024%E7%A8%8B%E5%BA%8F%E5%91%98%E8%8A%82/1.htm">1024程序员节</a><a class="tag" taget="_blank" href="/search/puter/1.htm">puter</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E6%A1%8C%E9%9D%A2/1.htm">云桌面</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E6%A1%8C%E9%9D%A2%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">云桌面操作系统</a><a class="tag" taget="_blank" href="/search/daedalOS/1.htm">daedalOS</a><a class="tag" taget="_blank" href="/search/web%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">web操作系统</a>
                        <div>文章目录Puter操作系统说明基于Docker启动Puter操作系统拉取镜像运行容器基于Docker-Compose启动Puter操作系统创建目录编写docker-compose.yml运行在本地直接运行puter操作系统puter界面截图puter个人使用总结构建自己的Puter镜像daedalos基于web的操作系统说明技术特点核心功能使用场景基于docker运行daedalos拉取镜像运行容</div>
                    </li>
                    <li><a href="/article/1904044823308988416.htm"
                           title="分享:Javascript开源桌面环境-Puter" target="_blank">分享:Javascript开源桌面环境-Puter</a>
                        <span class="text-muted">ac-er8888</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a>
                        <div>Puter这是一个运行在浏览器里的桌面操作系统,提供了笔记本、代码编辑器、终端、画图、相机、录音等应用和一些小游戏。该项目作者出于性能方面的考虑没有选择Vue和React技术栈,而是采用的JavaScript和jQuery构建,支持Docker一键部署和在线使用。简介:Puter是一个先进的开源项目,旨在为用户提供全新的云端体验。它可以在浏览器中运行,无需安装,即可提供丰富的功能和极快的速度。功能</div>
                    </li>
                    <li><a href="/article/1904044192745713664.htm"
                           title="网安会有35岁中年危机吗,还有网安将来发展怎么样?网络安全工程师可以干到多大年龄" target="_blank">网安会有35岁中年危机吗,还有网安将来发展怎么样?网络安全工程师可以干到多大年龄</a>
                        <span class="text-muted">认真写程序的强哥</span>
<a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%B9%B2%E8%B4%A7%E5%88%86%E4%BA%AB/1.htm">干货分享</a><a class="tag" taget="_blank" href="/search/%E9%BB%91%E5%AE%A2%E6%8A%80%E6%9C%AF/1.htm">黑客技术</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/1.htm">渗透测试</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA/1.htm">计算机</a>
                        <div>关于35岁中年危机这个问题,我想说,在网安行业里,这根本就不是个事儿!!与传统的IT行业不同,网安行业更加注重实战经验和技能深度,而不是单一的年龄因素。随着经验的积累,网络安全工程师在面对复杂问题时,反应更快、决策更准,这种价值是无法用年龄来衡量的。所以,只要你保持学习热情,不断提升自己的技能,35岁不仅不是终点,反而可能是你职业生涯的新起点。初入计算机行业的人或者想转行大学计算机相关专业准程序员</div>
                    </li>
                    <li><a href="/article/1904043310817800192.htm"
                           title="Centos Redis安装与配置指南" target="_blank">Centos Redis安装与配置指南</a>
                        <span class="text-muted">程序~阿呆</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7/1.htm">开发工具</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a>
                        <div>1.环境说明centos7.9redis6.2.6安装方式:外网服务器可以使用wget来下载安装,内网服务器只能windows下载后上传到linux服务器上2.新建下载目录将下载的Redis放在本文件夹中mkdir/tools3.Redis下载服务器执行wget命令:wgethttp://download.redis.io/releases/redis-6.2.6.tar.gz4.解压和编译依次执</div>
                    </li>
                    <li><a href="/article/1904041292757790720.htm"
                           title="kibana第一次连接elasticsearch出现问题1:Unable to retrieve version information from Elasticsearch nodes." target="_blank">kibana第一次连接elasticsearch出现问题1:Unable to retrieve version information from Elasticsearch nodes.</a>
                        <span class="text-muted">皮卡兔子屋</span>
<a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a>
                        <div>问题描述elasticsearch容器正常运行,在启动kibana容器后打开对应连接,出现错误:kibanaserverisnotreadyyet.通过docker命令查看kibana日志:dockerlogskibana显示错误为:[ERROR][elasticsearch-service]UnabletoretrieveversioninformationfromElasticsearchno</div>
                    </li>
                    <li><a href="/article/1904038897176866816.htm"
                           title="关于MTU的使用(TCP/IP网络下载慢可能与此有关)" target="_blank">关于MTU的使用(TCP/IP网络下载慢可能与此有关)</a>
                        <span class="text-muted">Littlehero_121</span>
<a class="tag" taget="_blank" href="/search/bug%E6%80%BB%E7%BB%93/1.htm">bug总结</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>参考链接:告诉你mtu值怎么设置才能网速最好!-Win7系统之家出现网络速度被限制,可能与MTU值相关,先查看下本机的MTUwin+R,然后输入:netshinterfaceipv4showsubinterfaces,查看自己网络中的MTU,一般默认1500,则预示着你使用单包的字节数可能在1500以内,如果想要速度增加,则需自行修改MTU值,否则可能网速被限制</div>
                    </li>
                    <li><a href="/article/1904038769762299904.htm"
                           title="卫星网络仿真平台:IPLOOK赋能空天地一体化通信新生态" target="_blank">卫星网络仿真平台:IPLOOK赋能空天地一体化通信新生态</a>
                        <span class="text-muted">爱浦路 IPLOOK</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>卫星仿真平台在6G技术加速演进与天地一体化网络建设的大背景下,卫星通信作为地面网络的重要补充,正成为全球通信覆盖的关键支撑。IPLOOK凭借其深厚的技术积累与创新实践,推出的卫星网络仿真平台(SCEPS),不仅填补了行业技术空白,更通过多维度功能设计与产学研深度合作,为构建空天地一体化网络提供了全栈式解决方案。一、卫星仿真平台:技术架构与核心功能IPLOOK卫星仿真平台基于“分层式、组件化、插件化</div>
                    </li>
                    <li><a href="/article/1904038517483302912.htm"
                           title="4G核心网的演变与创新:从传统到虚拟化的跨越" target="_blank">4G核心网的演变与创新:从传统到虚拟化的跨越</a>
                        <span class="text-muted">爱浦路 IPLOOK</span>
<a class="tag" taget="_blank" href="/search/4G%E6%A0%B8%E5%BF%83%E7%BD%91/1.htm">4G核心网</a><a class="tag" taget="_blank" href="/search/%E6%A0%B8%E5%BF%83%E7%BD%91/1.htm">核心网</a>
                        <div>4G核心网随着移动通信技术的不断发展,4G核心网已经经历了从传统的硬件密集型架构到现代化、虚拟化网络架构的重大转型。这一演变不仅提升了网络的灵活性和可扩展性,也为未来的5G、物联网(LOT)和边缘计算等技术的发展奠定了基础。本文将探讨4G核心网的演变过程,重点分析虚拟化技术在其中的作用,并结合我们公司IPLOOK的创新产品和解决方案,展望未来核心网的发展趋势。传统4G核心网:硬件依赖与功能分离在4</div>
                    </li>
                    <li><a href="/article/1904037509009043456.htm"
                           title="国内外的网络安全成难题,IPLOOK 2022年用产品筑起“护城墙”" target="_blank">国内外的网络安全成难题,IPLOOK 2022年用产品筑起“护城墙”</a>
                        <span class="text-muted">爱浦路 IPLOOK</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%9E%B6%E6%9E%84/1.htm">安全架构</a>
                        <div>《爱尔兰时报》和爱尔兰国家广播电台(RTE)于12月31日对2021年爱尔兰科技行业的赢家和弱点进行了年终盘点。双方纷纷表示,2021年爱尔兰科技行业最大的弱点是爱尔兰的网络安全,这一年是一场前所未有的灾难。随着人工智能、大数据、5G等新兴技术的发展,企业面临的威胁日益增加,信息安全的重要性变得越来越突显。现在我们把视线从爱尔兰的网络安全问题拉回到国内的网络安全现状。我国对网络安全问题保持时刻警惕</div>
                    </li>
                    <li><a href="/article/1904034610388463616.htm"
                           title="如何在百度搜索上删除与自己名字相关的资料" target="_blank">如何在百度搜索上删除与自己名字相关的资料</a>
                        <span class="text-muted">weixin_locy06</span>
<a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a>
                        <div>个人信息的网络足迹如同一张无形的网,将我们与世界的每一个角落紧密相连。然而,当某些与自己名字相关的资料不再希望被公众轻易检索到时,如何在百度搜索中有效“隐身”,成为了一个亟待解决的问题。面对复杂多变的网络环境,自行删除百度上的相关资料往往困难重重,但并非无解。本文腾轩科技传媒分享如何在百度搜索上删除与自己名字相关的资料。如果自己不懂怎么操作看左上方。一、为何自行删除难上加难?解决方案之前,重要的是</div>
                    </li>
                    <li><a href="/article/1904032343673335808.htm"
                           title="FreeRTOS进阶使用之流缓冲区:高效处理字节流的秘密武器" target="_blank">FreeRTOS进阶使用之流缓冲区:高效处理字节流的秘密武器</a>
                        <span class="text-muted">逸云客嵌入式</span>
<a class="tag" taget="_blank" href="/search/FreeRTOS%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">FreeRTOS操作系统</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/mcu/1.htm">mcu</a>
                        <div>在嵌入式开发中,流缓冲区(StreamBuffer)是FreeRTOS中用于高效处理字节流数据传输的核心机制,尤其适合任务间或中断与任务间的连续数据传输场景(如串口通信、网络数据流等)。本文将深入解析其原理、特点、使用方法及注意事项,助你进阶掌握这一关键技术。一、流缓冲区是什么?为什么需要它?流缓冲区是FreeRTOS中基于环形缓冲区实现的字节流传输机制,其核心作用是动态管理数据的读写,支持任意长</div>
                    </li>
                    <li><a href="/article/1904026786082123776.htm"
                           title="前端面试常见的计算机网络内容梳理" target="_blank">前端面试常见的计算机网络内容梳理</a>
                        <span class="text-muted">GISer_Jinger</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>前端面试常见的计算机网络内容梳理,我得从搜索结果里找相关的信息。先看看各个网页的内容。网页1和网页2主要讲OSI模型、TCP/IP模型,ARP、DNS、TCP/UDP区别这些基础概念,这些都是常考的点。网页3提到了TCP三次握手、HTTP缓存、跨域方法,还有CDN原理,这些都是前端面试的重点。网页4详细讨论了HTTP请求方法、状态码、请求头和响应头,这些内容也很关键。网页5提到了HTTPS加密原理</div>
                    </li>
                    <li><a href="/article/1904026659439308800.htm"
                           title="图解HTTP的知识框架详解" target="_blank">图解HTTP的知识框架详解</a>
                        <span class="text-muted">GISer_Jinger</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>图解HTTP的知识框架详解,我需要结合提供的搜索结果来整理出一个结构化的回答。首先,看看用户提供的搜索结果,有三个文档,分别是关于《图解HTTP》的读书笔记、Java解析HTTP的方法,以及网络基础知识的图解内容。不过用户的问题主要集中在HTTP的知识框架,所以可能主要参考第一个和第三个文档。第一个搜索结果[1]是《图解HTTP》的读书笔记,里面详细介绍了HTTP协议的基本概念、请求方法、状态码、</div>
                    </li>
                    <li><a href="/article/1904025648901451776.htm"
                           title="SGP.31/.32 规范以及它将如何影响物联网" target="_blank">SGP.31/.32 规范以及它将如何影响物联网</a>
                        <span class="text-muted">SofterICer</span>
<a class="tag" taget="_blank" href="/search/eSIM/1.htm">eSIM</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a>
                        <div>去年,GSMA发布了适用于物联网设备的新eSIM远程配置标准的架构和要求、SGP.31eSIM物联网架构和网络受限和/或用户界面(UI)受限物联网设备中eUICC远程配置的要求。自SGP.31获得批准以来,业界一直在等待GSMA发布SGP.31的技术实施规范SGP.32。5月26日,GSMASGP.32eSIM物联网技术规范发布,为设备制造商开始受益于新标准并扩展其物联网项目铺平了道路。据物联网专</div>
                    </li>
                    <li><a href="/article/1904023000173309952.htm"
                           title="【开题报告+论文+源码】基于SpringBoot+vue的鲜花购物商城" target="_blank">【开题报告+论文+源码】基于SpringBoot+vue的鲜花购物商城</a>
                        <span class="text-muted">编程毕设</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>项目背景与意义近年来,随着人们生活水平的提高,鲜花消费需求逐年增长。然而,传统的鲜花销售模式存在着诸如店面租金高、人力成本高、货源不稳定等问题,这使得商家在面对激烈的市场竞争时,难以获得持续稳定的发展。传统的鲜花商店也可能距离远,这使得消费者需要花时间在各个鲜花店里来回选择,而网上的消费群体可以通过网站,挑选并订购自己需要的鲜花[2]。因此,网络鲜花购物系统可以很好地解决顾客在购买鲜花时的地域限制</div>
                    </li>
                    <li><a href="/article/1904018714362179584.htm"
                           title="ES日志分析" target="_blank">ES日志分析</a>
                        <span class="text-muted">喝醉酒的小白</span>
<a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a>
                        <div>日志分析总结:核心错误类型日志中高频出现Client.Timeoutexceeded错误,表明向elasticsearch-logging:9200发起的请求(如获取索引状态/_all/_stats、节点状态/nodes/stats)因超时失败,属于网络请求超时问题。可能原因分析Elasticsearch服务异常:检查elasticsearch-logging服务是否正常运行,是否存在崩溃、重启或</div>
                    </li>
                    <li><a href="/article/1904014930978336768.htm"
                           title="cifs挂载 mount ubuntu_在Linux上使用CIFS,如何挂载Windows共享" target="_blank">cifs挂载 mount ubuntu_在Linux上使用CIFS,如何挂载Windows共享</a>
                        <span class="text-muted">王小约</span>
<a class="tag" taget="_blank" href="/search/cifs%E6%8C%82%E8%BD%BD/1.htm">cifs挂载</a><a class="tag" taget="_blank" href="/search/mount/1.htm">mount</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a>
                        <div>在Linux和UNIX操作系统上,可以使用mount命令的cifs选项将Windows共享安装在本地目录。常见的Internet文件系统(CIFS)是网络文件共享协议,CIFS是SMB的一种形式。在本教程中,解释如何在Windows共享上手动和自动挂载Linux系统。安装CIFS程序包要在Windows系统上挂载Linux共享,首先需要安装CIFS程序包。在Ubuntu和Debian上安装CIFS</div>
                    </li>
                    <li><a href="/article/1904013670099251200.htm"
                           title="Linux中挂载Windows Samba共享的指南" target="_blank">Linux中挂载Windows Samba共享的指南</a>
                        <span class="text-muted">执剑走天涯xp</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>主要步骤:安装cifs-utils确保你的Linux系统已安装cifs-utils包。如果未安装,使用以下命令:sudoapt-getinstallcifs-utils#Debian/Ubuntu系统sudoyuminstallcifs-utils#CentOS/RHEL系统创建挂载点创建一个本地目录来挂载Windows共享:sudomkdir/mnt/share编辑/etc/fstab文件使用文</div>
                    </li>
                                <li><a href="/article/82.htm"
                                       title="java类加载顺序" target="_blank">java类加载顺序</a>
                                    <span class="text-muted">3213213333332132</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>package com.demo;

/**
 * @Description 类加载顺序
 * @author FuJianyong
 * 2015-2-6上午11:21:37
 */
public class ClassLoaderSequence {
	
	String s1 = "成员属性"; 
	
	static String s2 = "</div>
                                </li>
                                <li><a href="/article/209.htm"
                                       title="Hibernate与mybitas的比较" target="_blank">Hibernate与mybitas的比较</a>
                                    <span class="text-muted">BlueSkator</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a><a class="tag" taget="_blank" href="/search/orm/1.htm">orm</a>
                                    <div>第一章     Hibernate与MyBatis 
Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/R mapping框架。目前属于apache的一个子项目。 
MyBatis 参考资料官网:http:</div>
                                </li>
                                <li><a href="/article/336.htm"
                                       title="php多维数组排序以及实际工作中的应用" target="_blank">php多维数组排序以及实际工作中的应用</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/usort/1.htm">usort</a><a class="tag" taget="_blank" href="/search/uasort/1.htm">uasort</a>
                                    <div>自定义排序函数返回false或负数意味着第一个参数应该排在第二个参数的前面, 正数或true反之, 0相等usort不保存键名uasort 键名会保存下来uksort 排序是对键名进行的 
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8&q</div>
                                </li>
                                <li><a href="/article/463.htm"
                                       title="DOM改变字体大小" target="_blank">DOM改变字体大小</a>
                                    <span class="text-muted">周华华</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                                    <div><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml&q</div>
                                </li>
                                <li><a href="/article/590.htm"
                                       title="c3p0的配置" target="_blank">c3p0的配置</a>
                                    <span class="text-muted">g21121</span>
<a class="tag" taget="_blank" href="/search/c3p0/1.htm">c3p0</a>
                                    <div>c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0的下载地址是:http://sourceforge.net/projects/c3p0/这里可以下载到c3p0最新版本。 
以在spring中配置dataSource为例: 
<!-- spring加载资源文件 -->
<bean name="prope</div>
                                </li>
                                <li><a href="/article/717.htm"
                                       title="Java获取工程路径的几种方法" target="_blank">Java获取工程路径的几种方法</a>
                                    <span class="text-muted">510888780</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>第一种: 
File f = new File(this.getClass().getResource("/").getPath()); 
System.out.println(f); 
结果: 
C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin 
获取当前类的所在工程路径; 
如果不加“</div>
                                </li>
                                <li><a href="/article/844.htm"
                                       title="在类Unix系统下实现SSH免密码登录服务器" target="_blank">在类Unix系统下实现SSH免密码登录服务器</a>
                                    <span class="text-muted">Harry642</span>
<a class="tag" taget="_blank" href="/search/%E5%85%8D%E5%AF%86/1.htm">免密</a><a class="tag" taget="_blank" href="/search/ssh/1.htm">ssh</a>
                                    <div>1.客户机 
    (1)执行ssh-keygen -t rsa -C "xxxxx@xxxxx.com"生成公钥,xxx为自定义大email地址 
    (2)执行scp ~/.ssh/id_rsa.pub root@xxxxxxxxx:/tmp将公钥拷贝到服务器上,xxx为服务器地址 
    (3)执行cat</div>
                                </li>
                                <li><a href="/article/971.htm"
                                       title="Java新手入门的30个基本概念一" target="_blank">Java新手入门的30个基本概念一</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/java+%E5%85%A5%E9%97%A8/1.htm">java 入门</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E6%89%8B/1.htm">新手</a>
                                    <div>在我们学习Java的过程中,掌握其中的基本概念对我们的学习无论是J2SE,J2EE,J2ME都是很重要的,J2SE是Java的基础,所以有必要对其中的基本概念做以归纳,以便大家在以后的学习过程中更好的理解java的精髓,在此我总结了30条基本的概念。  Java概述:  目前Java主要应用于中间件的开发(middleware)---处理客户机于服务器之间的通信技术,早期的实践证明,Java不适合</div>
                                </li>
                                <li><a href="/article/1098.htm"
                                       title="Memcached for windows 简单介绍" target="_blank">Memcached for windows 简单介绍</a>
                                    <span class="text-muted">antlove</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a><a class="tag" taget="_blank" href="/search/memcached/1.htm">memcached</a>
                                    <div>1. 安装memcached server 
a. 下载memcached-1.2.6-win32-bin.zip 
b. 解压缩,dos 窗口切换到 memcached.exe所在目录,运行memcached.exe -d install 
c.启动memcached Server,直接在dos窗口键入 net start "memcached Server&quo</div>
                                </li>
                                <li><a href="/article/1225.htm"
                                       title="数据库对象的视图和索引" target="_blank">数据库对象的视图和索引</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/%E7%B4%A2%E5%BC%95/1.htm">索引</a><a class="tag" taget="_blank" href="/search/oeacle%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">oeacle数据库</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E5%9B%BE/1.htm">视图</a>
                                    <div>  
视图 
  
  视图是从一个表或视图导出的表,也可以是从多个表或视图导出的表。视图是一个虚表,数据库不对视图所对应的数据进行实际存储,只存储视图的定义,对视图的数据进行操作时,只能将字段定义为视图,不能将具体的数据定义为视图 
  
    为什么oracle需要视图; 
   &</div>
                                </li>
                                <li><a href="/article/1352.htm"
                                       title="Mockito(一) --入门篇" target="_blank">Mockito(一) --入门篇</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/1.htm">持续集成</a><a class="tag" taget="_blank" href="/search/mockito/1.htm">mockito</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a>
                                    <div>        Mockito是一个针对Java的mocking框架,它与EasyMock和jMock很相似,但是通过在执行后校验什么已经被调用,它消除了对期望 行为(expectations)的需要。其它的mocking库需要你在执行前记录期望行为(expectations),而这导致了丑陋的初始化代码。 
 &nb</div>
                                </li>
                                <li><a href="/article/1479.htm"
                                       title="精通Oracle10编程SQL(5)SQL函数" target="_blank">精通Oracle10编程SQL(5)SQL函数</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a>
                                    <div>/*
 * SQL函数
*/

--数字函数
--ABS(n):返回数字n的绝对值
declare
  v_abs number(6,2);
begin
  v_abs:=abs(&no);
  dbms_output.put_line('绝对值:'||v_abs);
end;

--ACOS(n):返回数字n的反余弦值,输入值的范围是-1~1,输出值的单位为弧度</div>
                                </li>
                                <li><a href="/article/1606.htm"
                                       title="【Log4j一】Log4j总体介绍" target="_blank">【Log4j一】Log4j总体介绍</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a>
                                    <div>Log4j组件:Logger、Appender、Layout 
  
Log4j核心包含三个组件:logger、appender和layout。这三个组件协作提供日志功能: 
 
 日志的输出目标 
 日志的输出格式 
  日志的输出级别(是否抑制日志的输出) 
  logger继承特性 
A logger is said to be an ancestor of anothe</div>
                                </li>
                                <li><a href="/article/1733.htm"
                                       title="Java IO笔记" target="_blank">Java IO笔记</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>	public static void main(String[] args) throws IOException {
		//输入流
		InputStream in = Test.class.getResourceAsStream("/test");
		InputStreamReader isr = new InputStreamReader(in);
		Bu</div>
                                </li>
                                <li><a href="/article/1860.htm"
                                       title="Docker 监控" target="_blank">Docker 监控</a>
                                    <span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/docker%E7%9B%91%E6%8E%A7/1.htm">docker监控</a>
                                    <div>         
目前项目内部署了docker,于是涉及到关于监控的事情,参考一些经典实例以及一些自己的想法,总结一下思路。 1、关于监控的内容 监控宿主机本身 
监控宿主机本身还是比较简单的,同其他服务器监控类似,对cpu、network、io、disk等做通用的检查,这里不再细说。 
额外的,因为是docker的</div>
                                </li>
                                <li><a href="/article/1987.htm"
                                       title="java-顺时针打印图形" target="_blank">java-顺时针打印图形</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>一个画图程序 要求打印出: 
 

1.int i=5;   
2.1  2  3  4  5  
3.16 17 18 19 6  
4.15 24 25 20 7  
5.14 23 22 21 8  
6.13 12 11 10 9  
7.  
8.int i=6  
9.1  2  3  4  5   6  
10.20 21 22 23 24  7  
11.19</div>
                                </li>
                                <li><a href="/article/2114.htm"
                                       title="关于iReport汉化版强制使用英文的配置方法" target="_blank">关于iReport汉化版强制使用英文的配置方法</a>
                                    <span class="text-muted">Kai_Ge</span>
<a class="tag" taget="_blank" href="/search/iReport%E6%B1%89%E5%8C%96/1.htm">iReport汉化</a><a class="tag" taget="_blank" href="/search/%E8%8B%B1%E6%96%87%E7%89%88/1.htm">英文版</a>
                                    <div>对于那些具有强迫症的工程师来说,软件汉化固然好用,但是汉化不完整却极为头疼,本方法针对iReport汉化不完整的情况,强制使用英文版,方法如下: 
在 iReport 安装路径下的 etc/ireport.conf 里增加红色部分启动参数,即可变为英文版。   
# ${HOME} will be replaced by user home directory accordin</div>
                                </li>
                                <li><a href="/article/2241.htm"
                                       title="[并行计算]论宇宙的可计算性" target="_blank">[并行计算]论宇宙的可计算性</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E5%B9%B6%E8%A1%8C%E8%AE%A1%E7%AE%97/1.htm">并行计算</a>
                                    <div> 
 
      现在我们知道,一个涡旋系统具有并行计算能力.按照自然运动理论,这个系统也同时具有存储能力,同时具备计算和存储能力的系统,在某种条件下一般都会产生意识...... 
 
      那么,这种概念让我们推论出一个结论 
 
 
    &nb</div>
                                </li>
                                <li><a href="/article/2368.htm"
                                       title="用OpenGL实现无限循环的coverflow" target="_blank">用OpenGL实现无限循环的coverflow</a>
                                    <span class="text-muted">dai_lm</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/coverflow/1.htm">coverflow</a>
                                    <div>网上找了很久,都是用Gallery实现的,效果不是很满意,结果发现这个用OpenGL实现的,稍微修改了一下源码,实现了无限循环功能 
 
源码地址: 
https://github.com/jackfengji/glcoverflow 
 
 

public class CoverFlowOpenGL extends GLSurfaceView implements
		GLSurfaceV</div>
                                </li>
                                <li><a href="/article/2495.htm"
                                       title="JAVA数据计算的几个解决方案1" target="_blank">JAVA数据计算的几个解决方案1</a>
                                    <span class="text-muted">datamachine</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97/1.htm">计算</a>
                                    <div>老大丢过来的软件跑了10天,摸到点门道,正好跟以前攒的私房有关联,整理存档。 
 
-----------------------------华丽的分割线------------------------------------- 
 
    数据计算层是指介于数据存储和应用程序之间,负责计算数据存储层的数据,并将计算结果返回应用程序的层次。J 
 &nbs</div>
                                </li>
                                <li><a href="/article/2622.htm"
                                       title="简单的用户授权系统,利用给user表添加一个字段标识管理员的方式" target="_blank">简单的用户授权系统,利用给user表添加一个字段标识管理员的方式</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a>
                                    <div>怎么创建一个简单的(非 RBAC)用户授权系统 
通过查看论坛,我发现这是一个常见的问题,所以我决定写这篇文章。 
本文只包括授权系统.假设你已经知道怎么创建身份验证系统(登录)。 数据库 
首先在 user 表创建一个新的字段(integer 类型),字段名 'accessLevel',它定义了用户的访问权限 扩展 CWebUser 类 
在配置文件(一般为 protecte</div>
                                </li>
                                <li><a href="/article/2749.htm"
                                       title="未选之路" target="_blank">未选之路</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E8%AF%97/1.htm">诗</a>
                                    <div>作者:罗伯特*费罗斯特 
  
黄色的树林里分出两条路, 
可惜我不能同时去涉足, 
我在那路口久久伫立, 
我向着一条路极目望去, 
直到它消失在丛林深处. 
  
但我却选了另外一条路, 
它荒草萋萋,十分幽寂; 
显得更诱人,更美丽, 
虽然在这两条小路上, 
都很少留下旅人的足迹. 
  
那天清晨落叶满地, 
两条路都未见脚印痕迹. 
呵,留下一条路等改日再</div>
                                </li>
                                <li><a href="/article/2876.htm"
                                       title="Java处理15位身份证变18位" target="_blank">Java处理15位身份证变18位</a>
                                    <span class="text-muted">蕃薯耀</span>
<a class="tag" taget="_blank" href="/search/18%E4%BD%8D%E8%BA%AB%E4%BB%BD%E8%AF%81%E5%8F%9815%E4%BD%8D/1.htm">18位身份证变15位</a><a class="tag" taget="_blank" href="/search/15%E4%BD%8D%E8%BA%AB%E4%BB%BD%E8%AF%81%E5%8F%9818%E4%BD%8D/1.htm">15位身份证变18位</a><a class="tag" taget="_blank" href="/search/%E8%BA%AB%E4%BB%BD%E8%AF%81%E8%BD%AC%E6%8D%A2/1.htm">身份证转换</a>
                                    <div>  
15位身份证变18位,18位身份证变15位 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
蕃薯耀 201</div>
                                </li>
                                <li><a href="/article/3003.htm"
                                       title="SpringMVC4零配置--应用上下文配置【AppConfig】" target="_blank">SpringMVC4零配置--应用上下文配置【AppConfig】</a>
                                    <span class="text-muted">hanqunfeng</span>
<a class="tag" taget="_blank" href="/search/springmvc4/1.htm">springmvc4</a>
                                    <div>从spring3.0开始,Spring将JavaConfig整合到核心模块,普通的POJO只需要标注@Configuration注解,就可以成为spring配置类,并通过在方法上标注@Bean注解的方式注入bean。 
  
Xml配置和Java类配置对比如下: 
applicationContext-AppConfig.xml 
  
<!-- 激活自动代理功能 参看:</div>
                                </li>
                                <li><a href="/article/3130.htm"
                                       title="Android中webview跟JAVASCRIPT中的交互" target="_blank">Android中webview跟JAVASCRIPT中的交互</a>
                                    <span class="text-muted">jackyrong</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a>
                                    <div>  在android的应用程序中,可以直接调用webview中的javascript代码,而webview中的javascript代码,也可以去调用ANDROID应用程序(也就是JAVA部分的代码).下面举例说明之: 
 
1 JAVASCRIPT脚本调用android程序 
   要在webview中,调用addJavascriptInterface(OBJ,int</div>
                                </li>
                                <li><a href="/article/3257.htm"
                                       title="8个最佳Web开发资源推荐" target="_blank">8个最佳Web开发资源推荐</a>
                                    <span class="text-muted">lampcy</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a>
                                    <div>Web开发对程序员来说是一项较为复杂的工作,程序员需要快速地满足用户需求。如今很多的在线资源可以给程序员提供帮助,比如指导手册、在线课程和一些参考资料,而且这些资源基本都是免费和适合初学者的。无论你是需要选择一门新的编程语言,或是了解最新的标准,还是需要从其他地方找到一些灵感,我们这里为你整理了一些很好的Web开发资源,帮助你更成功地进行Web开发。 
这里列出10个最佳Web开发资源,它们都是受</div>
                                </li>
                                <li><a href="/article/3384.htm"
                                       title="架构师之面试------jdk的hashMap实现" target="_blank">架构师之面试------jdk的hashMap实现</a>
                                    <span class="text-muted">nannan408</span>
<a class="tag" taget="_blank" href="/search/HashMap/1.htm">HashMap</a>
                                    <div>1.前言。 
  如题。 
2.详述。 
  (1)hashMap算法就是数组链表。数组存放的元素是键值对。jdk通过移位算法(其实也就是简单的加乘算法),如下代码来生成数组下标(生成后indexFor一下就成下标了)。 
 

static int hash(int h) 
{ 
    h ^= (h >>> 20) ^ (h >>></div>
                                </li>
                                <li><a href="/article/3511.htm"
                                       title="html禁止清除input文本输入缓存" target="_blank">html禁止清除input文本输入缓存</a>
                                    <span class="text-muted">Rainbow702</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/input/1.htm">input</a><a class="tag" taget="_blank" href="/search/%E8%BE%93%E5%85%A5%E6%A1%86/1.htm">输入框</a><a class="tag" taget="_blank" href="/search/change/1.htm">change</a>
                                    <div>多数浏览器默认会缓存input的值,只有使用ctl+F5强制刷新的才可以清除缓存记录。    
如果不想让浏览器缓存input的值,有2种方法: 
方法一: 在不想使用缓存的input中添加 autocomplete="off";  
<input type="text" autocomplete="off" n</div>
                                </li>
                                <li><a href="/article/3638.htm"
                                       title="POJO和JavaBean的区别和联系" target="_blank">POJO和JavaBean的区别和联系</a>
                                    <span class="text-muted">tjmljw</span>
<a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a><a class="tag" taget="_blank" href="/search/java+beans/1.htm">java beans</a>
                                    <div>POJO 和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Pure Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比 POJO复杂很多, Java Bean 是可复用的组件,对 Java Bean 并没有严格的规</div>
                                </li>
                                <li><a href="/article/3765.htm"
                                       title="java中单例的五种写法" target="_blank">java中单例的五种写法</a>
                                    <span class="text-muted">liuxiaoling</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a>
                                    <div>/**
 * 单例模式的五种写法:
 * 1、懒汉
 * 2、恶汉
 * 3、静态内部类
 * 4、枚举
 * 5、双重校验锁
 */
/**
 * 五、 双重校验锁,在当前的内存模型中无效
 */
class LockSingleton
{

    private volatile static LockSingleton singleton;

    pri</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>