当前位置:   article > 正文

1-13 Docker实战案例_error: unable to find a match: bridge-utils

error: unable to find a match: bridge-utils

目录

1、通过DockerFile生成Image

(1)创建一个Spring Boot项目。

(2)编写测试Controller

(3)项目打包

(4)项目上传服务器

(5)编写Dockerfile文件

(6)基于Dockerfile构建镜像

(7)基于image创建container

(8)查看启动日志

(9)宿主机上访问

2、从Container生成Image

(1) 先使用下载的镜像启动容器。

(2) 在容器中添加 yum和vim 两个应用。

(3) 使用 docker commit 命令来提交更新后的副本。

(4) 使用 docker images 来查看新创建的镜像。

(5) 可以使用新的镜像来启动容器

3、搭建本地仓库harbor

(1)访问github上的harbor项目

(2)下载版本,比如1.7.1

(3)找一台安装了docker-compose[这个后面的课程会讲解],上传并解压

(4)进入到harbor目录

(5)安装harbor,需要一些时间

(6)浏览器访问,比如39.100.39.63,输入用户名和密码即可

4、安装Bridge-Utils


1、通过DockerFile生成Image

(1)创建一个Spring Boot项目。

直接通过官网来生成,https://start.spring.io/

 

(2)编写测试Controller

自定义一个测试用Controller,启动项目后,测试是否可用。

  1.  @RestController
  2.  public class DockerController {
  3.     @GetMapping("/dockerfile")
  4.     @ResponseBody
  5.     String dockerfile() {
  6.         return "hello docker" ;
  7.     }
  8.  }
  1.  C:\Users\tracy.chen>curl http://localhost:8080/dockerfile
  2.  hello docker
  3.  C:\Users\tracy.chen>

(3)项目打包

运行mvn clean install,将项目打包成jar文件docker-file-demo-0.0.1-SNAPSHOT.jar

(4)项目上传服务器

在服务器上新建文件夹,并将jar文件上传。

我这边用的阿里云ECS,废了不少功夫才上传上去。

  1.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]# ll
  2.  total 16320
  3.  -rw-r--r-- 1 root root 16495154 Jul 16 21:59 docker-file-demo-0.0.1-SNAPSHOT.jar
  4.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]#

(5)编写Dockerfile文件

创建dockerfile文件,并编辑内容。

  1.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]# ll
  2.  total 16116
  3.  -rw-r--r-- 1 root root     204 Jul 16 22:26 Dockerfile
  4.  -rw-r--r-- 1 root root 16495154 Jul 16 21:59 docker-file-demo-0.0.1-SNAPSHOT.jar
  5.  ​
  6.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]# cat Dockerfile
  7.  FROM openjdk:8
  8.  MAINTAINER lucas.chen
  9.  LABEL name="docker-file-demo" version="1.0" author="lucas.chen"
  10.  COPY docker-file-demo-0.0.1-SNAPSHOT.jar dockerfile-demo.jar
  11.  CMD ["java","-jar","dockerfile-demo.jar"]

(6)基于Dockerfile构建镜像

docker build -t 自定义镜像名 .

  1.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]# docker build -t dockerfile-demo .
  2.  Sending build context to Docker daemon   16.5MB
  3.  Step 1/5 : FROM openjdk:8
  4.  8: Pulling from library/openjdk
  5.  e9afc4f90ab0: Already exists
  6.  989e6b19a265: Already exists
  7.  af14b6c2f878: Already exists
  8.  5573c4b30949: Already exists
  9.  fb1a405f128d: Already exists
  10.  197b0f525c26: Pull complete
  11.  f133ed18caca: Pull complete
  12.  Digest: sha256:7363057a9a679338e55920a57513e9077b193d94425f4d2db13766d3ff1c031e
  13.  Status: Downloaded newer image for openjdk:8
  14.   ---> b190ad78b520
  15.  Step 2/5 : MAINTAINER lucas.chen
  16.   ---> Running in 28b0a82f7530
  17.  Removing intermediate container 28b0a82f7530
  18.   ---> 261639c2587f
  19.  Step 3/5 : LABEL name="docker-file-demo" version="1.0" author="lucas.chen"
  20.   ---> Running in 2b5a24361dbf
  21.  Removing intermediate container 2b5a24361dbf
  22.   ---> ec898c16b323
  23.  Step 4/5 : COPY docker-file-demo-0.0.1-SNAPSHOT.jar dockerfile-demo.jar
  24.   ---> 3ba778f9a9a7
  25.  Step 5/5 : CMD ["java","-jar","dockerfile-demo.jar"]
  26.   ---> Running in 55a9a8455857
  27.  Removing intermediate container 55a9a8455857
  28.   ---> ca4d859482c1
  29.  Successfully built ca4d859482c1
  30.  Successfully tagged dockerfile-demo:latest
  31.  ​
  32.  ​
  33.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]# docker images
  34.  REPOSITORY                 TAG                 IMAGE ID           CREATED             SIZE
  35.  dockerfile-demo           latest             ca4d859482c1       3 minutes ago       527MB
  36.  james821/tomcat.lucas     1.0                 aba402c4a427       14 hours ago       791MB
  37.  tomcat.lucas               1.0                 aba402c4a427       14 hours ago       791MB
  38.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]#

(7)基于image创建container

docker run

  1.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]# docker run -d --name dockerfile -p 9999:8080 dockerfile-demo
  2.  dbd499b2e3fe2b07190755a30c9b73757f8ceb9f6ec7980ddaa7cb6a1c859e48
  3.  ​
  4.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]# docker ps
  5.  CONTAINER ID       IMAGE               COMMAND                 CREATED             STATUS             PORTS                   NAMES
  6.  dbd499b2e3fe       dockerfile-demo     "java -jar dockerfil…"   6 seconds ago       Up 4 seconds       0.0.0.0:9999->8080/tcp   dockerfile

(8)查看启动日志

docker logs

  1.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]# docker logs dockerfile
  2.  ​
  3.   .   ____         _           __ _ _
  4.   /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
  5.  ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
  6.   \\/ ___)| |_)| | | | | || (_| | ) ) ) )
  7.   ' |____| .__|_| |_|_| |_\__, | / / / /
  8.   =========|_|==============|___/=/_/_/_/
  9.   :: Spring Boot ::       (v2.3.1.RELEASE)
  10.  ​
  11.  2020-07-17 02:15:32.191 INFO 1 --- [           main] c.e.d.DockerFileDemoApplication         : Starting DockerFileDemoApplication v0.0.1-SNAPSHOT on dbd499b2e3fe with PID 1 (/dockerfile-demo.jar started by root in /)
  12.  2020-07-17 02:15:32.199 INFO 1 --- [           main] c.e.d.DockerFileDemoApplication         : No active profile set, falling back to default profiles: default
  13.  2020-07-17 02:15:34.818 INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
  14.  2020-07-17 02:15:34.854 INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
  15.  2020-07-17 02:15:34.854 INFO 1 --- [           main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.36]
  16.  2020-07-17 02:15:35.111 INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
  17.  2020-07-17 02:15:35.111 INFO 1 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2788 ms
  18.  2020-07-17 02:15:36.001 INFO 1 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
  19.  2020-07-17 02:15:36.534 INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
  20.  2020-07-17 02:15:36.575 INFO 1 --- [           main] c.e.d.DockerFileDemoApplication         : Started DockerFileDemoApplication in 5.326 seconds (JVM running for 6.195)
  21.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]#

(9)宿主机上访问

  1.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]# curl 127.0.0.1:9999/dockerfile
  2.  hello docker
  3.  [root@iZ2zef4zu0mvk0hhwa0il1Z firstdockerfile]#

2、从Container生成Image

通常Docker镜像都不支持yum和vim命令,我们安装一个yum和vim,然后生成新的镜像。

(1) 先使用下载的镜像启动容器。

  1.  [root@iZ2zef4zu0mvk0hhwa0il1Z ~]# docker images
  2.  REPOSITORY                 TAG                 IMAGE ID           CREATED             SIZE
  3.  mongo                     4.4.0-rc11         8c7720f503aa       2 weeks ago         492MB
  4.  redis                     alpine             b546e82a6d0e       5 weeks ago         31.5MB
  5.  haproxy                   latest             14fcadff50a5       5 weeks ago         92.4MB
  6.  tomcat                     latest             2eb5a120304e       5 weeks ago         647MB
  7.  mysql                     5.7                 9cfcce23593a       5 weeks ago         448MB
  8.  hello-world               latest             bf756fb1ae65       6 months ago       13.3kB
  9.  perconalab/pxc-openshift   latest             a6fa4d81c1e2       13 months ago       611MB
  10.  swarm                     latest             ff454b4a0e84       2 years ago         12.7MB
  11.  ​
  12.  [root@iZ2zef4zu0mvk0hhwa0il1Z ~]# docker run -d tomcat
  13.  c0af76bf294cc7571724f9ee093ba3aa780522c75275ac91d4cf6c18989085c2
  14.  ​
  15.  [root@iZ2zef4zu0mvk0hhwa0il1Z ~]# docker ps
  16.  CONTAINER ID       IMAGE               COMMAND             CREATED             STATUS             PORTS               NAMES
  17.  c0af76bf294c       tomcat             "catalina.sh run"   4 seconds ago       Up 2 seconds       8080/tcp           unruffled_dirac
  18.  ​
  19.  [root@iZ2zef4zu0mvk0hhwa0il1Z ~]#

注意:记住容器的 ID,稍后还会用到。

(2) 在容器中添加 yum和vim 两个应用。

  1.  root@c0af76bf294c:/usr/local/tomcat# apt-get update
  2.  ...省略安装过程...
  3.  ​
  4.  root@c0af76bf294c:/usr/local/tomcat# apt-get install vim -y
  5.  ...省略安装过程...
  6.  ​
  7.  root@c0af76bf294c:/usr/local/tomcat# apt-get install yum -y
  8.  ...省略安装过程...

当结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了。

(3) 使用 docker commit 命令来提交更新后的副本。

-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;

-a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。

创建成功后会返回这个镜像的 ID 信息。

  1.  [root@iZ2zef4zu0mvk0hhwa0il1Z ~]# docker ps
  2.  CONTAINER ID       IMAGE               COMMAND             CREATED             STATUS             PORTS               NAMES
  3.  c0af76bf294c       tomcat             "catalina.sh run"   57 minutes ago     Up 57 minutes       8080/tcp           unruffled_dirac
  4.  ​
  5.  [root@iZ2zef4zu0mvk0hhwa0il1Z ~]# docker commit -m "add yum and vim" -a "lucas.chen" c0af76bf294c tomcat.lucas:1.0
  6.  sha256:aba402c4a427d25e4a10e10e5e94b8e3e2b3a5911d6f9af669380e069c256d29
  7.  [root@iZ2zef4zu0mvk0hhwa0il1Z ~]#

(4) 使用 docker images 来查看新创建的镜像。

  1.  [root@iZ2zef4zu0mvk0hhwa0il1Z ~]# docker images
  2.  REPOSITORY                 TAG                 IMAGE ID           CREATED             SIZE
  3.  tomcat.lucas               1.0                 aba402c4a427       31 seconds ago     791MB

(5) 可以使用新的镜像来启动容器

  1.  [root@iZ2zef4zu0mvk0hhwa0il1Z ~]# docker run -d tomcat.lucas:1.0
  2.  f98fa428ac25c360410d6be498177c1f66c145039cf942ba5ffdffecadbe0fcc
  3.  ​
  4.  [root@iZ2zef4zu0mvk0hhwa0il1Z ~]# docker ps
  5.  CONTAINER ID       IMAGE                   COMMAND             CREATED             STATUS             PORTS               NAMES
  6.  f98fa428ac25       tomcat.lucas:1.0       "catalina.sh run"   3 seconds ago       Up 2 seconds       8080/tcp           zealous_kowalevski

进入新的容器,发现已经自带vim和yum命令了。


3、搭建本地仓库harbor

(1)访问github上的harbor项目

https://github.com/goharbor/harbor

(2)下载版本,比如1.7.1

https://github.com/goharbor/harbor/releases

(3)找一台安装了docker-compose[这个后面的课程会讲解],上传并解压

tar -zxvf xxx.tar.gz

(4)进入到harbor目录

修改harbor.cfg文件,主要是ip地址的修改成当前机器的ip地址

同时也可以看到Harbor的密码,默认是Harbor12345

(5)安装harbor,需要一些时间

sh install.sh

(6)浏览器访问,比如39.100.39.63,输入用户名和密码即可


4、安装Bridge-Utils

我是阿里云ECS机器,Centos8系统,首先网上找资料,都说要通过命令执行安装bridge-utils。

  1.  [root@iZ2zef4zu0mvk0hhwa0il1Z ~]# yum install -y bridge-utils
  2.  Repository AppStream is listed more than once in the configuration
  3.  Repository extras is listed more than once in the configuration
  4.  Repository PowerTools is listed more than once in the configuration
  5.  Repository centosplus is listed more than once in the configuration
  6.  Repository epel is listed more than once in the configuration
  7.  Last metadata expiration check: 0:08:08 ago on Sun 19 Jul 2020 04:22:14 PM CST.
  8.  No match for argument: bridge-utils
  9.  Error: Unable to find a match: bridge-utils

但是无论怎么操作,都安装不了。

 

各种找资料还是无果,无奈只能试试能不能手动安装。

  1.  # bridge-utils-1.6 源码下载,然后上传到服务器
  2.  https://mirrors.edge.kernel.org/pub/linux/utils/net/bridge-utils/bridge-utils-1.6.tar.xz
  3.  ​
  4.  # 源码解压
  5.  tar -xvf bridge-utils-1.6.tar.xz
  6.  ​
  7.  # 安装autoconf工具
  8.  yum install autoconf
  9.  ​
  10.  # 使用 autoconf 工具生成配置文件
  11.  autoconf
  12.  ​
  13.  # 配置,生成makefile文件
  14.  ./configure
  15.  ​
  16.  # 编译与安装
  17.  make
  18.  make install
  19.  ​
  20.  # bridge-utils 已经安装完毕。测试使用情况:
  21.  [root@iZ2zef4zu0mvk0hhwa0il1Z bridge-utils-1.6]# brctl show
  22.  bridge name     bridge id               STP enabled     interfaces
  23.  docker0         8000.02422fc70dd0       no             veth5481848
  24.                                                         veth7162f75

完美!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/834605
推荐阅读
相关标签
  

闽ICP备14008679号