zoukankan      html  css  js  c++  java
  • docker第二篇:docker compose

    compose是编排的意思。为什么需要docker compose呢?

    docker-compose命令要在docker-compose.yml文件所在目录中执行,否则会报错。

    docker-compose.yml中内容:

    network_mode:可选值有bridge、host、none、service:[service name]、container:[container name/id]

    bridge模式下,

    host模式下,docker不会为容器创建单独的network namespace,而是共享宿主机的network namespace,在容器中执行ifconfig和在宿主机上执行ifconfig,结果是一样的,且宿主机占用的端口和容器内应用占用的端口一致。假如容器内应用占用10000端口,则访问http://宿主机IP:10000,就可以访问到容器内的应用了。就好像把容器内应用暴露到宿主机中了。在宿主机上用netstat命令查出PID,用ps命令查看此PID,和在容器中用netstat命令查出PID,用ps命令查看此PID的结果是一样的,都可以看出来容器内应用的启动命令是什么。有3个注意点,1、此时ports是不生效的,可以不设置ports,设置了也不生效。如果是docker run命令起来的话,同时指定-p xx:yy --network=host,会提示WARNING: Published ports are discarded when using host network mode的。2、因为占用了宿主机的端口,所以只能创建一个容器,再起一个容器,如果不改变容器内应用占用的端口的话,就起不来,启动会报address already in use。3、用docker ps或者docker-compose ps查看时,PORTS列值是空的,没有数据。

    none模式下,

    如果不指定network_mode的话,如果用docker-compose up在前端启动,则可以看到会输出Creating network "xxx_default" with the default driver这样的日志。这个时候,在宿主机执行ifconfig命令,可以看到,

    在宿主机安装docker的命令补全工具bash-completion。

  • 相关阅读:
    安卓虚拟机adb shell sqlite3数据库
    gridview安卓实现单行多列横向滚动
    安卓gridview 网格,多行多列实现
    安卓5.0 沉浸式状态栏
    Acionbar logo
    .replace(R.id.container, new User()).commit();/The method replace(int, Fragment) in the type FragmentTransaction is not app
    导航抽屉图标+文字
    透明ActionBar
    去掉Actionbar下的shadow
    沉浸式导航栏
  • 原文地址:https://www.cnblogs.com/koushr/p/12938861.html
Copyright © 2011-2022 走看看