docker基礎命令,經常使用操做

docker基礎命令

使用docker鏡像

  • 獲取鏡像python

    從docker registry獲取鏡像的命令是docker pull。命令格式是:
    docker pull [選項][docker registry地址] 倉庫名:標籤
    docker register地址:地址的格式通常是 域名:端口,默認地址是docker hub
    倉庫名:倉庫名是兩段格式,用戶名/軟件名,若是不寫用戶,默認docker hub用戶名是library,也就是官方鏡像
  • 列出服務器全部的鏡像文件linux

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

docker命令學習

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

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

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

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

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

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

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

    docker save shenzhenqishi1qi/centos-vim    > /opt/centos-vim.tar.gz
  8. .其餘人或者本身能夠導入這個鏡像文件centos

    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
相關文章
相關標籤/搜索