経験拾憶(純手作業)=>Docker文法全面回想


Hello Docker
      :https://docs.docker.com/install/linux/docker-ce/ubuntu/
        /   ,       -  -  。         (         )

イメージ(ミラー)
  • docker search
       docker search python    #   dockerhub     image
  • docker pull(ダウンロード)
       docker pull python:3.7  #   dockerhub   image      :          (         )   
  • docker images(リスト)
       docker images           #        (  docker image ls)
       docker images py*       #              image,        
  • docker rmi(削除)
       docker rmi "image "   "imageID"    #    image
       docker rmi python -f                #     ( image           ,   -f    )
               image    "imageID",     ,         "image "    
               image     "image ",          "image :Tag"     
  • docker save(保存バックアップ)
         1:docker save python > python.tar        #      image     image      
         2: docker save python -o python.tar
       python.tar        ,         
        :     ,     python  ,       python images          
                    ,       ,            docker save python:latest  
  • docker load(還元)
         1: docker load -i python.tar
         2: docker load < python.tar
  • docker tag(改名、改版本号)
       docker tag python:latest py:3.7        #    "python:latest"      "py:3.7 "
        1:  image   ,        image       ,    
        2:   image    ,      ,      image     
  • docker inspect(詳細を参照)
       docker inspect python
  • docker history(階層履歴情報の表示)
       docker history mypython:3.7
  • Container(コンテナ)
  • docker create(作成)
       docker create --name py-con python:latest    #  --name      ,           
       docker create -it python:latest  python       #               ,   python  
           -t           terminal
           -i                 (  ,         )
        :      created  ,      docker start           
  • docker start(オープン)
       docker start -ai   ID        #           
           -a         
           -i  create -i ,      
  • docker run(作成+起動、推奨)
       docker run -it python:latest python      #       create+start      , -it     
           #        :   python:latest   ,       ,     python  
       docker run  -d -it python:latest python
           #     ,     -d,         "  "    (  -d ,   "  ")
       docker run -dit --rm python:latest python
           # --rm          , (exited  ),        。 
       docker run --network bridge -itd mypython:latest python
           # --network       (    ,    bridge,        )
       docker run -dit -p 6006:6379 redis
           #     ,    (6006):  (6379)        (-P                   )
       docker run --restart always
           # --restart always    docker     ,            
  • docker stop(終了、終了)
       docker ps             #        "     ID"
       docker stop   ID    #    "   "      (    10       )
       docker stop -t 0 374  # -t     0  ,         
         (           ):
           docker stop $(docker ps -q)    # -q         ID
           
  • docker restart(再起動)
       docker restart -t 0  281    # 0   
  • docker pause(一時停止)
       docker pause 281    #           ,      ,     
  • docker unpause(継続)
       docker unpause 281    #       ,    
  • docker ps(表示)
       docker ps         #      "   "    
       docker ps -a      #        
  • docker logs(出力ログの表示)
       docker logs 281   #           
       docker logs -f 281   # -f       ,   (  tail -f     )
  • docker rename(名前変更)
       docker rename 281 python    #   281          python
  • docker inspect(コンテナの詳細を表示)
       docker inspect 374    #         
  • docker rm(削除)
       docker rm   ID        #         
       docker rm   ID -f     #     (   )        
  • docker attach(コンテナコマンド実行に進む)
       docker run -itd python:latest python    #      ,    python  
       docker attach 281     #     281    ,      python      
       " :   python    ,    ,    ,      。"
  • docker exec(実行コマンド)
       docker exec -it 281 python    #  "    ",   "    "  python  
       " :     attach    ,  python    ,      !(           python  )"
  • Container and Images(コンテナとミラーの関連付け)
  • docker commit(コンテナを新しいミラーに「カプセル化」する)
       docker commit 4d mypython:3.7   #  4d        ,     "  :  " "mypython:3.7"   
  • docker export(コンテナをファイルとしてエクスポート)
       docker export fc8 -o mypython.tar  #          .tar   ,       image  save  
  • docker import(exportからエクスポートされたファイルをエクスポートし、ミラーを生成)
       docker import mypython.tar mypython:latest
            :  export    mypython.tar               mypython:latest     
  • docker commit&docker import区別
           :
           docker commit        container      image
           docker import    export   container.tar         ,          image
       docker commit       ,            (docker history imageID     ) 
       docker import       ,            (docker history imageID     ) 
  • ネットワーク
  • docker network ls(表示)
       docker network ls
           bridge(  ):        
                 -      :
                   container1(etho0)--veth1--Docker(bridge)--veth2--container2(etho0)
                 -       :
                   container1(etho0)--veth1--Docker(bridge)--   (etho0)
                    : veth      ,     ,       
                   
           host(  ):                
                 -      :
                   container1(etho0)--   --container2(etho0)
                 -       :    
                   container1(etho0)--   
                   (  host):    
                   container1--container2    #    ‘                ’     
                       :
                       docker run -it --network container:24f1 mypython:latest ls
                       # container:24f1    container         24f1        ()
                                               
           null(   ):       
           
    
  • docker network create(作成)
       docker network create -d bridge mybridge    #      bridge
       docker network create -d host myhost        #       host(      ,     )
       docker network create -d null mynull        #       null(      ,     ) 
  • docker network rm(削除)
       docker network rm ab5
        :            (null host         bridge)
  • docker network connect(コンテナにネットワークをバインド)
       docker network connect mybridge 4c4  #  4c4          mybridge  (    bridge)
       docker inspect 4c4    #         ,       
        :  container        bridge   , 
  • docker network disconnect(コンテナへのバインド解除ネットワーク)
       docker network disconnect mybridge 4c4    #          mybridge
        :   container   bridge   none        , (   ,  disconnect connect)
        2:host      connect   disconnect
  • データボリューム(volume)
  • docker volume create(データボリュームの作成)
       docker volume create myvolume
        : myvolume     
  • docker volume ls(データボリュームのリスト)
       docker volume ls
        :          ,    docker run -v    ,       ID,   ID  。
  • docker volume prune(コンテナで使用されていないすべてのデータボリュームを削除)
       docker volume prune
        :        ,   
  • docker volume rm(指定データボリュームを1つ以上削除)
       docker volume rm myvolume
        :    myvolume     ,         ,         
  • データボリューム
       """  :                    """
         1 (-v  )
           -v    1:(        )
               docker run -itd -v /root:/root mypython:latest python  # -v       :    
                 :
                   cd /root
                   touch aaa.txt                  #         aaa.txt
                   docker exec -it cfb ls /root   #             aaa.txt   
                   
           -v    2:(            )
               docker run -itd -v myvolume:/root mypython:latest python    #         myvolume
                1:   myvolume         ,         ,                
                2:           ,              ??
                   docker volume inspect myvolume  #   Mountpoint     ,             
                   cd /var/lib/docker/volumes/myvolume11/_data    #     volume   
                   touch bbb.txt                   #         bbb.txt
                   docker exec -it 916 ls /root    #       ,      bbb.txt,      。
               
         2:(--mount  ,     -v       ,            "  "    ) 
           docker run -itd --mount type=volume,src=myvolume11,dst=/root mypython:latest python
            :
               type:     (    : bind)  (       : volume)  (    :tmpfs)
               src:       1(     )          2(    )       (    )
               dst:     
                   ,    
           docker run -itd --mount type=tmpfs,dst=/root mypython:latest python  (tmpfs"  "  )
           
       "  ,    3       ":
            . "           "      
            . "            "      
            . "           "      
           
       "  ,    2       ":
            、 "-v   "        2    (              )
            、 "--mount   "   3    (                     )
  • をマウント
  • コンテナ間共有データ
       """                        """
       docker run -itd --volumes-from 6252 python:latest     #   6252       ,      
         :
            docker exec -it 97db touch /root/abc    #           abc
            docker exec -it 6252 ls /root           #       ,     abc,    
  • 詳細注意事項
        、   "    "              , "           copy        "
        、   "     "            , "        copy      ,          " 
                :
                 :"        ,        ,                。。"
                  :"        (    ),          ,             "
           
  • DockerHub(倉庫)
  • 無認証私有倉庫
  • 倉庫
       docker pull registry    #    registry  
       docker run -itd \
           --restart always \                    # docker   ,        
           --name myregistry \                   #      
           -p 6006:5000 \                        #      (registry     5000  ,   6006)
           -v /root:/var/lib/registry \          #       (     ),              
           registry                              #     registry  
         :(  web  ,      Url    )
                  :               IP:6006/v2/_catalog      
                  : curl 127.0.0.1:6006/v2/_catalog
  • を建てる
  • アップロードミラー
        、          
           docker tag   mypython:latest    127.0.0.1:6006/mython_hub
            :        (   ,     ):   IP:Port/    
        、    
           docker push 127.0.0.1:6006/mython_hub    # docker push    ,     ID   ,     
        、  
                        ,       repositories               
           curl 127.0.0.1:6006/v2/_catalog
  • ダウンロードミラー
       docker pull  127.0.0.1:6006/mython_hub
        :               ,    
  • Dockerfile(プロファイル)
  • Dockerfile認知
       Docker   docker           shell         
                       ,     ,    dockerfile          。
       Dockerfile     ,         (    ) "       ,       (     )"
       
       Dockerfile  :
            、     "  "     ,    Dockerfile ,"         ,           "
            、       "       ",      "        ", "  "           ,
            、FROM      Dockerfile   。
                          "FROM    ",                     Dockerfile -->
                 "    "    ,   "     "    ,  commit          
  • Dockerfile構築
       docker build /Dockerfile     -t mypython:v2
        1:   Dockerfile      ,build        dockerfile  
        2:   Dockerfile       ,      .        
        3: -t           
  • Dockerfile構文
  • FROM
       "    ,   docker pull"
       FROM python:latest    #          
  • RUN | CMD | ENTRYPOINT
                    2     :
            、(exec)  --      
               eg:  python -V        #    linux      
            、(shell)   --     
               eg:  ["python", "-V"]    #              ,  py scrapy shell  
               
       RUN: 
           "       "     ,          。。(    )
       CMD:
                      ,          docker run         
           "   docker run          ,      CMD      "
       ENRTYPOINT:
            CMD  ,     docker run       ,  ENTRYPOINT          。    
       
    
  • ADD | COPY
       """                   """
       COPY aaa.txt /root    #  aaa.txt          /root   
       ADD aaa.txt /root     #  COPY  ,   ADD            ,"    "
  • ENV
       """              """
       ENV name=python       
       ENV nickname=$name    # $name      name    
  • WORKDIR
       """       cd  """
       WORKDIR /root
  • VOLUME
       """     """
       VOLUME /root   #          docker run -v /root,                  /root
  • EXPOSE
       """    """
       EXPOSE 6379  
       EXPOSE 3306    #       EXPOSE       
        1:      ,           docker run -P         
        2:        ,        -p,     。
  • 公式テンプレート参考URL
           :https://docs.docker.com/engine/reference/builder/
           Dockerfile  :https://github.com/docker-library/docs/tree/master/
    
  • Docker Compose
  • Docker-Compose認知
        、Dockerfile       Docker     
        、Docker-Compose       Dockerfile   (          )
        、Docker-Compose         docoker-compose.yaml
        、docoker-compose.yaml             eg:  version: 3.7(3.7       )
        、docoker-compose.yaml              
  • Docker-Compose取付
             :https://docs.docker.com/compose/install/
           ,    -  -  。。。Easy 
  • Docker-Composeファイル命令
       version: "3.7"    #   
           #      docker      : https://docs.docker.com/compose/compose-file/  
           
       services:         # services   ,    ,   
           mypython:     # mypython       
               build: .  # Dockerfile     , build   Dockerfile   
               ports:
                   -"6006:3003"    #   -       ,markdown     ,      
               command: xxxx    #   Dockerfile   CMD
               depends_on:      #      ,  (       ,   myredis   )
                   -myredis     # -    
           myredis:      #    myredis         
               image: redis    #             DockerfilE  FROM  
               container_name: myredis    #      
               networks:     #        mynet  
                   -mynet    # ( -    ,  markdown    ) 
               volumes:      #        myvolume   ,       /root  
                   -myvolume:/root  # -    ,(     :        )
               hostname: myredis    
                   #        IP      ,    ,         IP
                   #      hostname,        ,   myredis
                   
       networks:    #     
           mynet:   #        mynet 
               driver: "bridge"    #        
       volumes:     #      
           myvolume:    #         myvolume
               driver: "local"     #     local,              
  • 事前検査docker-compose.ymlファイル構文フォーマットに誤りがあるかどうか
       docker-compose config
        :    docker-compose.yml        
  • docker comopse
       docker-compose up    #         (      ,           )
       docker-compose up -d #           (          )
       
       docker-compose stop  #     (              )
  • 起動/停止
    END