docker4种网络配置,储存卷应用

4D 毫米波雷达:智驾普及的新路径(一) 总体而言,4D 毫米波雷达具有更佳的探测能力,更高的分辨率和精度,在人工智能技术的加持下,能够实现更加智能化的感知和跟踪,从而为自动驾驶、智能交通等领域提供更加可靠的数据支持。博世的第五代引入了俯仰维度,但其角度分辨率较差,且最大探测距离为。车载毫米波雷达的尺寸受限,我们认为通过算法的优化、天线内置等方式可以在保障性能的前提下,压缩尺寸,便于车企进行灵活的设计安装。在物理设计、天线性能设计、电连接、封装工艺和材料、散热处理、可靠性与自动化测试等方面进行持续优化,推出可大规模量产的高性能毫米波雷达解决方案。 阅读详情

四种网络模式配置

bridge模式配置

[root@docker ~]# docker run -it --name t1 --rm busybox
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1102 (1.0 KiB)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
/ # exit

可以发现没有刚才容器运行的记录
[root@docker ~]# docker container ls -a
CONTAINER ID   IMAGE               COMMAND             CREATED       STATUS                     PORTS                                   NAMES
5d41e973021b   73b8cfec1155        "/bin/bash"         4 hours ago   Exited (127) 4 hours ago                                           interesting_carver
429fce369443   xialuo/nginx:v0.2   "/bin/bash"         5 days ago    Exited (0) 5 days ago                                              infallible_hofstadter
be85a6234996   xialuo/nginx:v0.2   "/usr/sbin/nginx"   5 days ago    Exited (255) 5 days ago    0.0.0.0:8888->80/tcp, :::8888->80/tcp   nginx
f2ad5b2a35ba   centos              "/bin/bash"         5 days ago    Exited (0) 5 days ago                                              centos.nginx

# 在创建容器时添加--network bridge与不加--network选项效果是一致的
[root@docker ~]# docker run -it --name t1 --network bridge --rm busybox 
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:766 (766.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ # exit

none模式配置

[root@docker ~]# docker run -it --name t1 --network none --rm busybox 
/ # ifconfig -a
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ # exit

container模式配置

启动第一个容器
[root@docker ~]# docker run -it --name b1 --rm busybox
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:766 (766.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

启动第二个容器
[root@docker ~]# docker run -it --name b2 --rm busybox
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:03  
          inet addr:172.17.0.3  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:586 (586.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
可以看到名为b2的容器IP地址是172.17.0.3,与第一个容器的IP地址不是一样的,也就是说并没有共享网络,此时如果我们将第二个容器的启动方式改变一下,就可以使名为b2的容器IP与B1容器IP一致,也即共享IP,但不共享文件系统。

这里先关掉容器b2,然后再开启
[root@docker ~]# docker run -it --name b2 --rm --network container:b1 busybox
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:976 (976.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          
可以发现b2的IP现在和b1是一样的,此时我们在b1容器上创建一个目录
/ # mkdir /tmp/data
/ # ls /tmp
data

到b2容器上检查/tmp目录会发现并没有这个目录,因为文件系统是处于隔离状态,仅仅是共享了网络而已。
在b2容器上部署一个站点
/ # echo 'hello world' > /tmp/index.html
/ # ls /tmp
index.html
/ # httpd -h /tmp
/ # netstat -antl
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
tcp        0      0 :::80                   :::*                    LISTEN  

在b1容器上用本地地址或者两者共用的地址去访问此站点
/ # wget -O - -q 127.0.0.1:80
hello world
/ # wget -O - -q 172.17.0.2:80
hello world
由此可见,container模式下的容器间关系就相当于一台主机上的两个不同进程

host模式配置

启动容器时直接指明模式为host
[root@docker ~]# docker run -it --name b1 --rm --network host busybox    
/ # ifconfig
docker0   Link encap:Ethernet  HWaddr 02:42:3A:19:CC:5C  
          inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0
          inet6 addr: fe80::42:3aff:fe19:cc5c/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:284 (284.0 B)  TX bytes:944 (944.0 B)

ens160    Link encap:Ethernet  HWaddr 00:0C:29:2E:FB:6A  
          inet addr:192.168.149.134  Bcast:192.168.149.255  Mask:255.255.255.0
          inet6 addr: fe80::183a:9874:ef65:2b90/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24946 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36310 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2079387 (1.9 MiB)  TX bytes:8636860 (8.2 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          
此时如果我们在这个容器中启动一个http站点,我们就可以直接用宿主机的IP直接在浏览器中访问这个容器中的站点了          
/ # echo 'hello world' > /tmp/index.html
/ # httpd -h /tmp
/ # netstat -antl
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      
tcp        0      0 192.168.149.134:22      192.168.149.1:65380     ESTABLISHED 
tcp        0      0 192.168.149.134:22      192.168.149.1:65378     ESTABLISHED 
tcp        0      0 :::80                   :::*                    LISTEN      
tcp        0      0 :::22                   :::*                    LISTEN     

在这里插入图片描述

容器的常用操作

查看容器的主机名

[root@docker ~]# docker run -it --name t1 --rm busybox
/ # hostname
2235e70e4b1a

在容器启动时注入主机名

[root@docker ~]# docker run -it --name t1 --hostname xialuo --rm busybox
/ # hostname
xialuo
/ # cat /etc/hosts
127.0.0.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.17.0.2      xialuo     #注入主机名时会自动创建主机名到IP的映射关系
/ # cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.149.2    #DNS也会自动配置为宿主机的DNS
/ # ping www.baidu.com
PING www.baidu.com (112.80.248.76): 56 data bytes
64 bytes from 112.80.248.76: seq=0 ttl=127 time=19.562 ms
64 bytes from 112.80.248.76: seq=1 ttl=127 time=19.577 ms
64 bytes from 112.80.248.76: seq=2 ttl=127 time=17.252 ms

手动指定容器要使用的DNS

[root@docker ~]# docker run -it --name x1 --hostname xialuo --dns 114.114.114.114 busybox
/ # nslookup -type=a www.baidu.com
Server:         114.114.114.114
Address:        114.114.114.114:53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com
Name:   www.a.shifen.com
Address: 112.80.248.75
Name:   www.a.shifen.com
Address: 112.80.248.76

/ # cat /etc/resolv.conf
search localdomain
nameserver 114.114.114.114

手动往/etc/hosts文件中注入主机名到IP地址映射

[root@docker ~]# docker run -it --name c1 --hostname xialuo --add-host www.web.com:10.0.0.1 --rm busybox
/ # cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.0.0.1        www.web.com
172.17.0.2      xialuo

注意一个--add-host 后面只能写一个网址

储存卷应用

Docker存储卷
COW机制
Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。

如果运行中的容器修改了现有的一个已经存在的文件,那么该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本依然存在,只是已经被读写层中该文件的副本所隐藏,这就是“写时复制(COW)”机制。
在这里插入图片描述
对于这种方式来说,我们去访问一个文件,修改和删除等一类的操作,其效率会非常的低,因为隔着很多层镜像。

而要想绕过这种限制,我们可以通过使用存储卷的机制来实现。

什么是存储卷
存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。这就意味着,当我们在容器中的这个目录下写入数据时,容器会将其内容直接写入到宿主机上与此容器建立了绑定关系的目录。
在这里插入图片描述
在宿主机上的这个与容器形成绑定关系的目录被称作存储卷。

使用存储卷的好处
如果容器中跑的进程的所有有效数据都保存在存储卷中,从而脱离容器自身文件系统之后,带来的好处是当容器关闭甚至被删除时,只要不删除与此容器绑定的在宿主机上的这个存储目录,我们就不用担心数据丢失了。因此就可以实现数据持久,脱离容器的生命周期而持久。

我们通过这种方式管理容器,容器就可以脱离主机的限制,可以在任意一台部署了docker的主机上跑容器,而其数据则可以置于一个共享存储文件系统上,比如nfs。

Docker的存储卷默认情况下是使用其所在的宿主机上的本地文件系统目录的,也就是说宿主机上有一块属于自己的硬盘,这个硬盘并没有共享给其他的Docker主机,而在这台主机上启动的容器所使用的存储卷是关联到此宿主机硬盘上的某个目录之上。

这就意味着容器在这台主机上停止运行或者被删除了再重建,只要关联到硬盘上的这个目录下,那么其数据还存在。但如果在另一台主机上启动一个新容器,那么数据就没了。而如果在创建容器的时候我们手动的将容器的数据挂载到一台nfs服务器上,那么这个问题就不再是问题了。

为什么要用存储卷
关闭并重启容器,其数据不受影响,但删除Docker容器,则其更改将会全部丢失。

因此Docker存在的问题有:

存储于联合挂载文件系统中,不易于宿主机访问
容器间数据共享不便
删除容器其数据会丢失
而要解决这些问题,解决方案就是使用存储卷。

存储卷管理方式
存储卷(Data Volume)于容器初始化时被自动创建,由base image提供的卷中的数据会于此期间完成复制。

Volume的初衷是独立于容器的生命周期实现数据持久化,因此删除容器之时既不会删除卷,也不会对未被引用的卷做垃圾回收操作。

存储卷为Docker提供了独立于容器的数据管理机制,我们可以把镜像想象成静态文件,例如“程序”,把卷类比为动态内容,例如“数据”。所以镜像可以重用,而卷则可以共享。

卷实现了“程序(镜像)”和“数据(卷)”的分离,以及“程序(镜像)”和“制作镜像的主机”的分离,用户制作镜像时无须再考虑镜像运行的容器所在的主机的环境。
在这里插入图片描述
存储卷的分类
Docker有两种类型的卷,每种类型都在容器中存在一个挂载点,但其在宿主机上的位置有所不同:

  • Bind mount volume
    a volume that points to a user-specified location on the host file system
  • Docker-managed volume
    the Docker daemon creates managed volumes in a portion of the host’s file system that’s owned bye Docker
    在这里插入图片描述
    容器数据管理
    用户在使用Docker的过程中,往往需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据的共享,这必然涉及容器的数据管理操作。

容器中管理数据主要有两种方式:

  • 数据卷(Data Volumes)
  • 数据卷容器(Data Volumes Containers)

容器Volume使用语法:
Docker-managed volume

docker run -it --name CONTAINER_NAME -v VOLUMEDIR IMAGE_NAME

Bind mount volume

docker run -it --name CONTAINER_NAME -v HOSTDIR:VOLUMEDIR IMAGE_NAME

在容器中使用数据卷

  • 在容器内创建一个数据卷
  • 下面使用nginx镜像创建一个web容器,并创建一个数据卷挂载到容器的/web目录下:
[root@docker ~]# docker run -d -P --name v1 -v /web nginx
3639d93b4e2d99613d988a8d1bd7533d197655d7ba1f2a48aa960badb94abadd
这里的-P是允许外部访问容器需要暴露的端口。
  • 挂载一个主机目录作为数据卷
[root@docker ~]# docker run -d -P --name v2 -v /opt/data:/web nginx
97763c8502fa02d123e1da26cbd1695165a0365fdb0e9cfc9122fd4e48cadc8f

上面的命令加载主机的/var/www/html目录到容器的/web目录:
这个功能在进行测试的时候非常方便,比如用户可以放置一些程序或数据到本地目录中,然后在容器内运行和使用。另外,本地目录的路径必须是绝对路径,如果目录不存在,Docker会自动创建。

Docker挂载数据卷的默认权限是读写(rw),用户也可以通过(ro)指定为只读:

[root@docker ~]#  docker run -d -P --name v3 -v /opt/data:/web:ro nginx
2ca201cb065272b31a1b3c0b56a6f9c338ffaf59b8bb056bd547158c5fa58c86

加了:ro以后,容器内挂载的数据卷的数据就无法修改了。

挂载一个本地主机文件作为数据卷
-v选项也可以从主机挂载单个文件到容器中作为数据卷:

[root@docker ~]# docker run -it --rm -v ~/.bash_history:/.bash_history centos /bin/bash

这样就可以记录在容器输入过的命令历史了。

如果直接挂载一个文件到容器,使用文件编辑工具,包括vi或者sed去修改文件内容的时候,可能会造成inode的改变,这样将会导致错误。所以推荐的方式是直接挂载文件所在的目录。

数据卷容器
如果用户需要在容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器其实就是一个普通的容器,专门用它提供数据卷供其他容器挂载使用,方法如下:

首先,创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata:

[root@docker ~]# docker run -it -d --name dbdata -v /dbdata centos

然后可以在其他容器中使用–volumes-from来挂载dbdata容器中的数据卷,例如创建db1和db2两个容器,并从dbdata容器挂载数据卷:

[root@docker ~]# docker run -it -d --name db1 --volumes-from dbdata centos /bin/bash
f01007dcc5d8c37feb27bf4b123b5efac86dc87dfde42ff6de4b4f14e78d0b22
[root@docker ~]# docker run -it -d --name db2 --volumes-from dbdata centos /bin/bash
af1f6cb371bc36d4b9dd41388c286ecaa69989beaeb797a5b86ada724c08dbbc

此时,容器db1和db2都挂载同一个数据卷到相同的/dbdata目录。三个容器任何一方在该目录下的写入,其他容器都可以看到。
例如,在db1容器中创建一个test文件:

[root@docker ~]# docker exec -it db1 /bin/bash
[root@f01007dcc5d8 /]# ls
bin     dev  home  lib64       media  opt   root  sbin  sys  usr
dbdata  etc  lib   lost+found  mnt    proc  run   srv   tmp  var
[root@f01007dcc5d8 /]# cd /dbdata/
[root@f01007dcc5d8 dbdata]# touch 123

在db2容器中查看:

[root@docker ~]# docker exec -it db2 /bin/bash
[root@af1f6cb371bc /]# ls dbdata/
123

可以多次使用–volumes-from参数来从多个容器挂载多个数据卷。还可以从其他已挂载了容器卷的容器来挂载数据卷:

[root@docker ~]# docker run -it -d --name db3 --volumes-from db1 centos /bin/bash

使用–volumes-from参数所挂载数据卷的容器自身并不需要保持在运行状态。

如果删除了挂载的容器(包括dbdata、db1和db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时显式使用docker rm -v命令来指定同时删除关联的容器。

利用数据卷容器迁移数据
可以利用数据卷容器对其中的数据卷进行备份、恢复,以实现数据的迁移。

备份
使用下面的命令来备份dbdata数据卷容器内的数据卷:

[root@docker ~]# docker run -it --name worker --volumes-from dbdata -v $(pwd):/backup centos tar cvf /backup/backup.tar /dbdata /bin/bash
tar: Removing leading `/' from member names
/dbdata/
/dbdata/123
tar: Removing leading `/' from hard link targets
/bin/bash
[root@docker ~]# ls
anaconda-ks.cfg  backup.tar

这个命令稍微有点复杂,具体分析下。
首先利用centos镜像创建了一个容器worker。使用–volumes-from dbdata参数来让worker容器挂载dbdata容器的数据卷(即dbdata数据卷);使用-v $(pwd):/backup参数来挂载本地的当前目录到worker容器的/backup目录。
worker容器启动后,使用了tar cvf /backup/backup.tar /dbdata命令来将/dbdata下内容备份为容器内的/backup/backup.tar,即宿主主机当前目录下的backup.tar。

恢复
如果要恢复数据到一个容器,可以按照下面的操作。首先创建一个带有数据卷的容器dbdata3:

[root@docker ~]# docker run -it --name dbdata3 -v /dbdata centos /bin/bash   #不要退出

然后创建另一个新的容器,挂载dbdata3容器,并使用untar解压备份文件到所挂载的容器卷中即可:

[root@docker ~]# docker run --volumes-from dbdata3 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
dbdata/
dbdata/123
bin/bash
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED             STATUS             PORTS                                     NAMES
be4bbab9f7da   centos    "/bin/bash"              31 seconds ago      Up 30 seconds                                                dbdata3
17104d0c9341   centos    "/bin/bash"              9 minutes ago       Up 9 minutes                                                 db3
af1f6cb371bc   centos    "/bin/bash"              11 minutes ago      Up 11 minutes                                                db2
f01007dcc5d8   centos    "/bin/bash"              11 minutes ago      Up 11 minutes                                                db1
415c3f6c73bc   centos    "/bin/bash"              11 minutes ago      Up 11 minutes                                                dbdata
2ca201cb0652   nginx     "/docker-entrypoint.…"   20 minutes ago      Up 20 minutes      0.0.0.0:49155->80/tcp, :::49155->80/tcp   v3
97763c8502fa   nginx     "/docker-entrypoint.…"   22 minutes ago      Up 22 minutes      0.0.0.0:49154->80/tcp, :::49154->80/tcp   v2
3639d93b4e2d   nginx     "/docker-entrypoint.…"   23 minutes ago      Up 22 minutes      0.0.0.0:49153->80/tcp, :::49153->80/tcp   v1
2ef08c9c731c   busybox   "sh"                     About an hour ago   Up About an hour                                             b2

[root@docker ~]# docker exec -it dbdata3 /bin/bash
[root@be4bbab9f7da /]# ls
bin     dev  home  lib64       media  opt   root  sbin  sys  usr
dbdata  etc  lib   lost+found  mnt    proc  run   srv   tmp  var
[root@be4bbab9f7da /]# ls /dbdata
123
SAP_SD模块路径及运输功能后台配置简介 后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义传输模式根据实际运输过程运输地理的类型:海运、公路运输、空运后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义发运类型根据实际运输过程运输方式:汽车、卡车、火车、轮船、飞机后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义运输连接点指在运输过程中需要中转的地区可以维护中转地区的停留的时间后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义路径和阶段。 阅读详情

相关推荐

2023东华大学OJ机试题22-70

东华大学计算机考研复试机试22 约瑟夫环223、整除的尾数24、回文质数25、汽水瓶26、阶乘最后的非0位27、算菜价28、 水果价格29、求奇数的乘积30、求最晚和最早日期31、素数32、计算e33 数字之和34 繁殖问题35 奇妙的数字36 整除的尾数37 黑色星期五38 树39 约瑟夫环40 最大与最小41 环42 求数列项43 最高频率44 三艘船45 回文数46 特殊四位数47 最大值48 数列149 修理牛棚50 按要求输出序列51 部落人乘法52 序列53 双重回文数54 等差数列55 人见人

m0_49263811的博客 2598

docker基础4——网络配置

1、虚拟化网络概念。 2、容器间的网络通信原理。 3、docker四种网络模式原理。 4、docker容器常规操作。

百慕卿君博客 2096

手把手教你排查libstdc++.so.6版本问题:从GLIBCXX缺失到完美解决

本文深入解析Linux系统中常见的GLIBCXX版本缺失问题,以`ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.29' not found`为例,从动态链接原理入手,提供使用`strings`和`find`命令的诊断方法,并详细对比了四种解决方案的优缺点。文章重点推荐通过设置`LD_LIBRARY_PATH`或更新系统库的安全策略,并最终建议使用Docker容器化技术实现环境依赖的根治与统一管理。

j7k8l的博客 300

Docker----(六)原生网络及自定义网络

Docker自定义网络 docker run -it --name demo1 busybox docker run -it --name demo2 busybox docker ps -a docker rm -f demo2 docker run -it --name demo3 busybox dockun -it --name demo2 busybox docker network ls docker network create mynet docker inspect myn

qq_41582883的博客 916

Flink SQL数据血缘实战:如何用Calcite追踪字段级数据流向(附源码示例)

本文深入探讨了如何利用Apache Calcite解析Flink SQL执行计划,实现字段级数据血缘的追踪。通过扩展Calcite的元数据处理器,特别是针对Flink特有的Snapshot等节点,文章提供了从获取优化后的逻辑计划到提取并可视化血缘关系的完整实战方案,并附有核心源码示例,帮助开发者构建实时数仓的数据治理能力。

weixin_29032337的博客 142

UE4_SpeedTree Shader源码分析

目录 1.UMaterialExpressionSpeedTree::Compile 2.Compiler->SpeedTree 3.GetSpeedTreeVertexOffset 4.Scene中的SpeedTree应用 (Scene->UpdateSpeedTreeWind) 5.GetSpeedTreeVertexOffsetInner 由于之后做风场,也需要在S...

zzgyy123的专栏 2631

Docker的网络模式

当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,(1)docker四种网络模式如下: - Bridge contauner 桥接式网络模式 - Host(open) container 开放式网络模式 - Container(join) container 联合挂载式网络模式,是host网络模式的延伸 - None(Close) container 封闭式网络模式 (2)可以通过docker network命令查看 (3)docker run --network 命

milu_nff的博客 3206

【学习笔记】人群归因分数 PAF 以及combined PAF(更新)

在此推荐2篇发表在lancet以及jama子刊上的paf文章,这两篇文章套路是一样的,只是在不同国家进行。希望对大家学习PAF有所帮助,后面有新内容也会继续分享,也欢迎大家分享使用R语言计算PAF的经验~~~的时候,先建立了相关矩阵,再做主成分分析,得到communality。详细信息大家可翻阅原文。

weixin_53499537的博客 1498

docker安装WireGuard服务

默认新内核是从头插入,默认启动顺序也是从 0 开始。③ 载入 elrepo-kernel 元数据。② 升级安装 elrepo。⑧ 查看当前实际启动顺序。④ 安装最新版本的内核。⑤ 删除旧版本工具包。⑥ 安装新版本工具包。⑦ 查看内核插入顺序。查看当前实际启动顺序。

qq_40250122的博客 5736

从GWAS到单细胞:利用seismic包精准定位疾病相关的关键细胞亚群与驱动基因

本文详细介绍了如何利用seismic包将GWAS与单细胞测序数据结合,精准定位疾病相关的核心细胞亚群与驱动基因。通过创新的统计算法和实战案例,帮助研究者从遗传汇总数据中挖掘关键生物学机制,提升疾病研究的精准度和效率。

weixin_29215815的博客 441

【人工智能】架构演进:基于本体论与 LLM Agent 的供应链备件决策闭环实践

本文探讨了如何将本体论(Ontology)与大语言模型(LLM)Agent结合,构建供应链备件管理的智能决策系统。针对LLM在垂直领域存在的幻觉和逻辑缺陷问题,提出通过本体论建立结构化知识框架,形成四层架构:知识建模、动态感知、深度分析和决策闭环。系统利用图数据库实例化领域本体,融合多源数据实现实时感知,结合图谱推理和时序预测进行确定性分析,最终通过工具调用完成决策执行。技术选型推荐Gemini 1.5 Pro、Neo4j和LangChain等工具,实现从自动化到智能化的升级。该架构为工业领域提供了可解释、

奶爸的编程之路,也就一周冷个三天 170

Docker数据卷和数据卷容器应用

Docker数据卷和数据卷容器应用,掌握Docker数据卷和数据卷容器使用方法。

zn2021220822的博客 788

第81篇:Vibe Coding时代:LangGraph + Eval评估体系实战,解决 Agent 优化全靠感觉的问题

本文介绍了一个为LangGraph Coding Agent设计的评估体系解决方案。文章首先指出了当前AI Coding Agent开发中的常见问题:优化过程缺乏客观评估标准,导致改进效果难以量化。随后提出了一个完整的评估框架,包括评估指标(任务成功率、质量指标、安全指标、成本指标和流程指标)、项目结构设计和评估案例集。 核心内容包括: 设计了JSON格式的评估案例集,覆盖正常任务、边界任务和高风险场景 实现了模拟Agent输出的演示代码 构建了多维度评分系统,包括关键词匹配、禁用词检测和成本评估 提供了评

sundong_81的博客 47

docker的安装以及基本应用

centos7安装docker 安装储存设备映射包 yum install -y yum-utils device-mapper-persistent-data lvm2 添加docker软件镜像 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 安装dockerCE yum install -y docker-ce 启动docker systemctl start docker

weixin_43784341的博客 317

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Centos7 和 Docker容器 ,安装,网络配置,镜像安装(超详细教程)

声明:本篇文展仅分享安装,便于以后查看软件网盘链接。

csdn_HPL的博客 1153

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

docker-1

需要开启。

l6xy6的博客 1197

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Docker(容器虚拟化技术 )

docker,容器,镜像,命令,数据卷,储存卷,进入容器,查看容器详情,镜像地址

xbcai1的博客 3989

Centos8上安装Docker以及Docker常见命令

文章目录Centos8上安装DockerDocker版本要求更新yum查看仓库版本,并指定版本安装启动dockerDocker常用的命令1、拉取镜像2、首次启动镜像3、启动已存在容器4、运行的docker容器列表5、停止容器6、进入容器7、查看容器的某些进程PID8、删除容器9、镜像列表10、启动所有容器11、复制文件到容器12、创建容器时指定IP查看网络模式创建一个新的bridge网络查看网络信息创建容器并指定容器ip13、创建快照查看现有容器创建容器快照导入并验证 Centos8上安装Docker Do

wangscaler的博客 2473

一小时入门docker--运维高级知识(2)-------容器管理、网络模式、容器储存

创建容器和docker run启动容器停止容器和重启容器删除容器docker rm查看容器状态docker ps和查看容器详细信息查看容器日志准备环境:启动 Docker 服务。获取和管理镜像:搜索、拉取、列出、构建镜像。运行和管理容器:运行、查看、进入、停止、重启、删除容器。管理网络和卷:查看、创建网络和卷。推送和管理镜像:标记、推送镜像到仓库。清理:删除镜像、网络、卷。

weixin_44739075的博客 896

Linux下Docker环境搭建及docker常用命令

勿以浮沙筑高台 Docker基本概念 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。 Docker支持将软件编译成镜像;在镜像中支持各种软件配置好并发布,其他使用者可以直接使用配置好的镜像。运行中的镜像称之为容器,容器启动速度很快。类似于封装好的Windows系统,通过U盘直接安装即可,不需要进行系统配置软件。 Linux下安装Dock

qq_35059264的博客 295

docker查询mysql 有哪些版本的镜像_Docker使用

背景docker是什么?docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。简言之,就是可以在Linux上镜像使用的这么一个容器。docker可以在什么情况下使用1.web应用自动化打包发布,像tomcat应用的发布2.自动化测试和持续集成...

weixin_39609953的博客 1134

Docker容器之网络详解

容器技术很火,经常为人所提及,尤其是开源容器工具docker,已在不少数据中心里有广泛应用。容器主要是对软件和其依赖环境的标准化打包,将应用之间相互隔离,并能运行在很多主流操作系统上。这样看来容器和虚拟机技术很类似,容器是APP层面的隔离,而虚拟化是物理资源层面的隔离,容器解决了虚拟技术的不少痛点问题,很多时候容器可以和虚拟机结合在一起使用,这也是目前数据中心主流的做法。..................

weixin_51099370的博客 1116

docker 快速上手使用

docker 文章目录docker常用命名基本命令镜像ps 项说明images 项说明search 项说明镜像的导入导出导出导入容器日志网络数据卷底部 FAST OS DOCKER 可视化工具 常用命名 命令 作用 补充 docker search mysql 搜索镜像 docker pull mysql5.7 拉取镜像 docker ps 查看启动容器 docker exec -it mysql /bin/bash 进入容器 exit 退出 do

MXqihang的博客 618

Docker基础使用

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone:在容器内执行了一系列命令。首先,它链接了正确的时区文件到/etc/localtime,然后将时区信息写入/etc/timezone文件中。这些信息描述了如何将主机上的文件 /usr/local/docker/mysql5.7/conf/my.cnf 绑定挂载到容器中的路径 /etc/my.cnf,并允许容器对该文件进行读写操作。

欢迎来到我的技术博客!这里是一个专注于软件开发的地方,我将分享关于 Java、Python、C++ 和易语言等多种编程语言的教程、技巧、最佳实践以及开发经验。 1514

Docker之四种网络模式

Docker之四种网络模式一、四种网络模式二、实现原理1.Host模式2.Container模式3.None模式4.Bridge模式(默认)综上 一、四种网络模式 二、实现原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP

SHISHIZHIZHI的博客 462

Docker网络模式与数据卷

#查看网络模式列表##查看容器信息(包含配置、环境、网关、挂载、cmd等等信息)dockerinspect容器ID##指定分配容器IP地址#以上会报错,因为用户使用的ip地址不被规则所允许,docker0定义的就是按照顺序来,所有需要创建一个##自定义网络固定iPDocker网络模式有哪些?分别提供哪些功能?Host与宿主机共享网络名称空间/网络协议栈Container多个容器之间共享一个networknamespacesNone自闭空间bridge。...

夏颜的博客 382
上一篇: docker网络配置和名称空间管理
下一篇: dockerfile
B_memory
博客等级 码龄6年 7粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值