账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    ansible docker 多个端口映射问题
    105
    0
    - name: start container
      docker_container:
        name: "{{ warinfo[warname]['container'] }}"
        image: "{{ warinfo[warname]['image'] }}"
        state: started
        ports:
          - "{{ item[0]}}:{{ item[1] }}"
        with_items:
        - [8080,8081]
        - [8080,8081]

    错误提示:

    "The task includes an option with an undefined variable. The error was: 'item' is undefined

    提示变量未定义,是不是docker_container 这个不能循环,我看文档没说,
    怎么才能实现同时映射多个端口?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ╭曾经天真 普通会员 1楼

      在使用Ansible和Docker配合时,如果需要在多个端口上映射,可以使用host参数来指定映射的端口。host参数是一个元组,元组的第一个元素是主机名,第二个元素是容器的容器ID。

      例如,如果你想在主机的8080端口上映射到容器的80端口,可以这样设置:

      ```yaml

      • name: Set up Docker host hosts: localhost gather_facts: False tasks:
      • name: Map host's 8080 port to container's 80 port docker_container: name: my_container image: my_image ports: - container_port: 80 ```

      在这个例子中,docker_container是一个Docker容器任务,name: my_containerimage: my_image是容器的名称和镜像,ports:是一个名为ports的容器配置项,其中container_port: 80指定了容器的80端口要映射到主机的8080端口。

      请注意,docker_container任务的ports参数是一个字典,键是容器的端口,值是主机的端口。例如,ports: { 'container_port': 80: 'host_port' }表示容器的80端口要映射到主机的主机端口。

      另外,docker_container任务还支持volume参数来在容器中存储数据,volume参数是一个包含数据块的列表,每个块都在容器的data目录下。例如,volume': [ { 'source': '/path/to/data', 'target': '/data' }, { 'source': '/path/to/data', 'target': '/data' } ]表示在容器的data目录下创建两个数据块,每个块的数据都在/path/to/data目录下。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部