1. 程式人生 > >docker基礎命令,常用操作

docker基礎命令,常用操作

dea 數據 解釋 作者 push 進行 commit 生成 urn

docker基礎命令

使用docker鏡像

  • 獲取鏡像

    從docker registry獲取鏡像的命令是docker pull。命令格式是:
    docker pull [選項][docker registry地址] 倉庫名:標簽
    docker register地址:地址的格式一般是 域名:端口,默認地址是docker hub
    倉庫名:倉庫名是兩段格式,用戶名/軟件名,如果不寫用戶,默認docker hub用戶名是library,也就是官方鏡像
  • 列出服務器所有的鏡像文件

    # 列出所有的imaga文件
    docker image ls
    等同與
    docker images
    刪除所有的image文件
    docker image rm   [imagename]

docker命令學習

  1. 刪除docker鏡像(必須刪除依賴這個鏡像的容器記錄)

    docker rmi 鏡像id/鏡像名
  2. 運行鏡像,且產生一個容器記錄,且進入容器空間內

    docker run  -it  centos  /bin/bash
     -it 交互式的終端,代表我可以在容器中輸入命令
     /bin/bash  指定shell解釋器
  3. 創建一個容器,在容器內安裝一個vim工具

    # 運行鏡像,
    docker run -it centos /bin/bash
    # 安裝vim
    yum install vim 
    
    #退出
    exit
  4. 提交這個容器,創建新的image

    docker commit 059fdea031ba chaoyu/centos-vim
    # 059fdea031ba 為上述容器id,  後面的是新的image文件名
  5. 查看已提交的鏡像記錄

    docker images
  6. 基於這個擁有vim的鏡像,創建新的容器

    docker run -it 479  /bin/bash
    # 479 為擁有vim的鏡像id,  後續為路徑
  7. 導出當前系統的鏡像文件,可以傳輸給其他人

    docker save shenzhenqishi1qi/centos-vim    > /opt/centos-vim.tar.gz
  8. .其他人或者自己可以導入這個鏡像文件

    docker load < /opt/centos-vim.tar.gz
  9. 創建啟動容器的方式有2種

    1.基於鏡像創建新的容器
    2.對於已運行的容器,進行啟停
    docker stop 容器id
    docker start 容器id
  10. 運行centos鏡像生成容器並執行 echo hehe

    #這條命令意思是:創建一個只運行一次的容器
    docker run centos /bin/echo "hehe" 
  11. 運行一個容器記錄,且給與名字

    docker run --name mydocker -it centos /bin/bash#啟動一個bash終端,允許用戶進行交互
  12. 運行一個ubuntu容器

    1.查看系統的版本信息
    cat /etc/redhat-release  #這個命令查看紅帽系列的系統
    cat /etc/os-release
    2.運行一個ubuntu容器
    docker run -it  ubuntu  /bin/bash 
  13. 刪除容器記錄

    docker rm  容器id
    docker  -aq  #列出所有容器記錄的id
    docker stop  `docker ps -aq`  #停止所有正在運行的容器
    docker  rm `docker ps -aq`    #一次性刪除所有容器記錄
    docker rmi  `docker images -aq`   #一次性刪除所有本地的鏡像記錄
  14. 暴露容器端口,端口映射

     -P 參數會隨機映射端口到容器開放的網絡端口
     docker run -d -P training/webapp python app.py
         -d 後臺運行 
         -P  端口映射, 隨機映射 ,物理機的隨機端口:容器內暴露的端口
    
    
     如果本地沒有鏡像文件,docker run會自動幫我們下載鏡像
     在docker run centos  
    
    
    [root@qishione ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
    e3e0be2b22a8        training/webapp     "python app.py"     2 seconds ago       Up 1 second         0.0.0.0:32769->5000/tcp   qishiweb
    
    只要我訪問宿主機的32769端口也就是訪問到了容器內的5000端口
  15. 指定端口映射,啟動容器應用

    docker run -d -p 9999:5000 --name my9999webapp training/webapp python app.py
  16. training/webapp 這個鏡像文件,我們基於這個鏡像,運行了一個flask web app

    1.基於ubuntu 14.04的操作系統   FROM ubuntu:14.04
    2.默認進入了/opt/webapp目錄    RUN   cd /opt/webapp 
    3.在這個目錄下存放了Procfile  app.py  requirements.txt  tests.py
    4.通過容器內的命令,運行一個後臺程序  python  app.py 
    5.最終這個鏡像,生成了一個web容器
    6.數據掛載 
    -v   宿主機的文件夾:容器內的文件夾
    -p  端口映射  宿主機的端口:容器內的端口
    7.  docker port  82e  查看容器的端口映射關系
  17. 發布docker鏡像到docker hub

    1.登錄odcker hub倉庫,註冊一個用戶,用於存放自己的docker鏡像
    2.在linux中登錄docker
     docker login #輸入賬號密碼
    
    3.修改本地鏡像的名字,推送到docker hub 
    docker tag docker.io/hello-world   yuchao163/qishi1qi-hello-docker
    
    4.推送本地鏡像到共有倉庫
    docker push yuchao163/qishi1qi-hello-docker  
    
    5.仍和人都可以隨意下載這個鏡像  
     docker pull yuchao163/qishi1qi-hello-docker
  18. 搭建私有docker倉庫,提交本地鏡像

    1.下載一個docker官方私有倉庫鏡像
    docker pull registry
    2.運行一個docker私有容器倉庫
    docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry  registry
        -d 後臺運行 
        -p  端口映射 宿主機的5000:容器內的5000
        -v  數據卷掛載  宿主機的 /opt/data/registry :/var/lib/registry 
        registry  鏡像名
    3.修改docker的配置文件,讓他支持http方式,上傳私有鏡像
        vim /etc/daemon.json 
        寫入如下內容
                {
                "registry-mirrors": ["http://f1361db2.m.daocloud.io"],
                "insecure-registries":["192.168.11.37:5000"]
            }
    4.修改docker的服務配置文件
        vim /lib/systemd/system/docker.service
        找到[service]這一代碼區域塊,寫入如下參數
        [Service]
        EnvironmentFile=-/etc/docker/daemon.json
    5.重新加載docker服務
        systemctl daemon-reload
    6.重啟docker服務
        重啟docker服務,所有的容器都會掛掉
        重啟docker服務,所有的容器都會掛掉
        重啟docker服務,所有的容器都會掛掉
    
        systemctl restart docker
    
    7.修改本地鏡像的tag標記,往自己的私有倉庫推送
        docker tag docker.io/yuchao163/hello-world-docker    192.168.11.37:5000/xiayuhao
    8.下載私有倉庫的鏡像
    docker pull 192.168.11.37:5000/xiayuhao
  19. 編寫dockerfile,構建自己的鏡像,運行flask程序

    1.在宿主機中,編寫一個flask代碼文件,和Dockerfile
    cd /opt/dockertest/
    touch flasktest.py 
        from flask import Flask
        app=Flask(__name__)
        @app.route('/')
        def hello():
        return "i love china"
        if __name__=="__main__":
        app.run(host='0.0.0.0',port=8080)
    
    
    
    2.構建dockerfile
        1.指引一個基礎的系統鏡像centos 
        2.定義作者標簽
        3.解決環境依賴關系,安裝python-setuptools
        4.安裝flask模塊  easy_install  flask 
        5.準備代碼文件到容器中   COPY  flasktest.py   /opt/ 
        6.切換到/opt目錄下 workdir  /opt 
        7.運行代碼  python flasktest.py 
    
    3.dockerfile內容如下
    [root@qishione dockertest]# cat Dockerfile 
        FROM centos
        LABEL maintainer="深圳騎士1期"
        RUN yum install python-setuptools -y 
        RUN  easy_install flask 
        COPY  flasktest.py   /opt/
        WORKDIR /opt
        EXPOSE 8080  
        CMD ["python","flasktest.py"]
    
    4.構建鏡像文件,找到當前目錄的Dockerfile,開始構建
    docker build  -t  qishi1qi/flask-web    .  
    
    
    5.基於這個鏡像,生成容器實例
    docker run -d -p  7777:8080    945
    
    6.推送這個鏡像到私有倉庫
    docker tag  qishi1qi/flask-web   192.168.11.37:5000/qishi1qi-flaskweb
    docker push 192.168.11.37:5000/qishi1qi-flaskweb
    

docker基礎命令,常用操作