CircleCI2.0でdockerのexperimentalを有効にする

  • 0
    Like
  • 0
    Comment

    ただ、--squashをしたかった。

    CircleCI2.0では実行環境(Executer)を2種類から選択できる。指定イメージをつかうdockerと1.0のような環境のmachine
    dockerデーモンの挙動に手を入れられるのはmachineのほうだけなので、環境にmachineを指定。この時点でdockerは17.03.0-ceだったので、--squashが使える。おそらくもっと新しいバージョンにアップグレードして使うこともできるでしょう。

    サンプルで使用したDockerfileはこちら。レイヤに差分がないと--squashがコケるので軽く変更します。

    FROM alpine:latest
    
    RUN apk update
    ADD Dockerfile /Dockerfile
    CMD ["/bin/true"]
    

    .circleci/config.ymlのサンプル

    最初のstepで--experimental=trueを追記してリスタート。

    .circleci/config.yml
    version: 2
    jobs:
      build:
        machine: true
        working_directory: /home/circleci/circleci-sandbox-bb
        steps:
          - checkout
          - run:
              name: Enable experimental
              command: |
                set -x
                echo 'DOCKER_OPTS="--experimental=true"' | sudo tee -a /etc/default/docker
                # sudo DEBIAN_FRONTEND=noninteractive apt-get update && sudo apt-get install -y docker-engine ## ついでにdockerデーモンをaptリポジトリの最新にしたい時
                sudo service docker restart
          - run: |
              TAG=0.1.$CIRCLE_BUILD_NUM
              docker build -t local/circleci-sandbox-bb:$TAG --squash .
              docker image history local/circleci-sandbox-bb:$TAG
    

    image historyの実行結果で--squashによる寄せができていることを確認。

    circleci-outputs
    .
    .
    .
    Successfully built 6d611d5da4fc
    IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
    2de9d6caee54        1 second ago                                                        1.03 MB             merge sha256:6d611d5da4fcfe515263c628140ae8a25a4b870881b8da9f88f9130caf44ae3c to sha256:02674b9cb179d57c68b526733adf38b458bd31ba0abff0c2bf5ceca5bad72cd9
    <missing>           1 second ago        /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B                 
    <missing>           1 second ago        /bin/sh -c #(nop) ADD file:00457989c9c63fa...   0 B                 
    <missing>           1 second ago        /bin/sh -c apk update                           0 B                 
    <missing>           37 hours ago        /bin/sh -c #(nop)  CMD ["/bin/sh"]              0 B                 
    <missing>           37 hours ago        /bin/sh -c #(nop) ADD file:63f63606d6e289e...   3.99 MB            
    

    machine-executerは起動がちょっと遅いのと、ちょいちょい環境の変化がありそうなのであまり常用したくはないけど、イメージのビルド用途なら十分。