如何使用ansible docker_image模块标记本地docker映像?

dei*_*iga 4 image ansible docker

我正在构建本地docker映像,我想对其进行标记,但是我不知道repository应该如何为刚在本地构建的docker映像填充字段。

是否可以使用docker_image模块标记本地图像?

bod*_*sog 6

似乎有更好的解决方案docker_image

tasks:
  - name: build_image
    docker_image:
      name: test_img:latest     # Name of image, may be with repo path.
      path: .
      state: present
    register: image_build

  - name: tag_version
    docker_image:
      name: test_img:latest     # Equal to name in build task.
      repository: test_img:1.2  # New tag there.
      pull: no
      state: present
    when: image_build.changed
Run Code Online (Sandbox Code Playgroud)

影响:

    $ docker images
    REPOSITORY   TAG       IMAGE ID            CREATED              SIZE
    test_img     1.2       ab14e8cce7ef        9 seconds ago        142MB
    test_img     latest    ab14e8cce7ef        9 seconds ago        142MB
Run Code Online (Sandbox Code Playgroud)

还可用于推送回购(需要将名称更改为完整的回购路径)。


BMi*_*tch 5

您可以在一个命令中进行构建和标记。如果您希望它保持本地状态,则不能在名称中包含存储库(no /)。该标签仅相当于“最新”标签。因此结果看起来像:

  - name: 'Build an image with a tag'
    docker_image:
      path: .
      name: ansible-module
      tag: v1
      state: present
Run Code Online (Sandbox Code Playgroud)

结果将如下所示:

$ docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
ansible-module              v1                  39be0dcc8dfa        2 minutes ago       1.093 MB
Run Code Online (Sandbox Code Playgroud)

如果要包括注册表URL或存储库名称(docker中心登录),并且不想在构建后自动推送,我不认为您可以使用此Ansible插件。


更新,对于其他标签,您可以执行以下操作:

  - name: 'Build an image'
    docker_image:
      path: .
      name: ansible-module
      tag: v1
      state: present
    register: docker_build

  - name: 'Retag image'
    shell: docker tag ansible-module:v1 ansible-module:dev
    when: docker_build.changed
Run Code Online (Sandbox Code Playgroud)


dei*_*iga 1

我发现repository模块的docker_image就是本地构建的图像的名称。

这是首先构建带有标签的图像latest,然后向其添加标签的方式。

- name: Build docker image
  become: yes
  docker_image:
    path: /tmp/foo
    name: foo
    state: present

- name: Tag docker image
  become: yes
  docker_image:
    name: foo
    repository: foo
    tag: "{{ version.stdout }}"
    state: present
Run Code Online (Sandbox Code Playgroud)