Docker 的使用全解

注:一下代碼必要時加sudo
    容器 = 鏡像 + 可讀層。
    docker run 命令先是利用鏡像創建了一個容器,然後運行這個容器。
    Docker start命令爲容器文件系統創建了一個進程隔離空間。注意,每一個容器只能夠有一個進程隔離空間。 
1、測試Docker是否安裝成功
    docker run hello-world
2、查看版本信息
    docker --version
3、使用Dockerfile定義容器:
    1)創建空目錄test
    2)將名爲Dockerfile的文件放入,配置如下:
        # 將官方 Python 運行時用作父鏡像
        FROM python:3.6-slim

        # 將工作目錄設置爲 /app
        WORKDIR /app

        # 將當前目錄內容複製到位於 /app 中的容器中
        ADD . /app

        # 安裝 requirements.txt 中指定的任何所需軟件包
        RUN pip install -r requirements.txt

        # 使端口 80 可供此容器外的環境使用
        EXPOSE 80

        # 定義環境變量
        ENV NAME World

        # 在容器啓動時運行 app.py
        CMD ["python", "app.py"]
    3)將requirements.txt放入,配置如下:
        Flask
        Redis
    4)將app.py的文件放入
        from flask import Flask
        from redis import Redis, RedisError
        import os
        import socket

        # Connect to Redis
        redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

        app = Flask(__name__)
    
        @app.route("/")
        def hello():
            try:
                visits = redis.incr("counter")
            except RedisError:
                visits = "<i>cannot connect to Redis, counter disabled</i>"

            html = "<h3>Hello {name}!</h3>" \
                "<b>Hostname:</b> {hostname}<br/>" \
                "<b>Visits:</b> {visits}"
            return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

        if __name__ == "__main__":
            app.run(host='0.0.0.0', port=80)
    5)查看文件
        cd test
        ls
    6)準備工作完成
    7)構建Docker鏡像
        docker build -t friendlyhello .
    8)查看鏡像的位置
        docker images
    9)運行應用,p參數將本機的一個端口與容器的端口綁定
        docker run -p 4000:80 friendlyhello
    10)測試:
        a:在瀏覽器上測試
            http://localhost:4000/
        b:用命令行測試
            curl http://localhost:4000
    11)終端上按 CTRL+C 退出。
    12)在分離模式下運行應用
        docker run -d -p 4000:80 friendlyhello
        結果:
            容器在後臺運行;
            獲得應用的長容器 ID
    13)查看正在運行的容器
        docker ps
    14)結束容器的運行
        docker stop CONTAINER ID
    15)完成了,嚶嚶嚶~
        
4、鏡像操作
    1)列出鏡像列表
        docker images
    2)使用一個鏡像運行容器
        例如:docker run -t -i ubuntu:15.10 /bin/bash 
    3)獲取新鏡像
        docker pull ubuntu:18.10
    4)搜索鏡像
        docker search httpd
    5)自己創建一個鏡像
        a:從已經創建的容器中更新鏡像,並且提交這個鏡像
        b:使用 Dockerfile 指令來創建一個新的鏡像
    6)更新鏡像
        由鏡像創建一個容器後才能更新
            docker run -t -i ubuntu:15.10 /bin/bash
            apt-get update 
            exit
            docker commit 來提交容器副本。
                docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2\
                sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
                    -m:提交的描述信息
                    -a:指定鏡像作者
                    e218edb10161:容器ID
                    runoob/ubuntu:v2:指定要創建的目標鏡像名
    7)設置鏡像標籤
        docker tag 860c279d2fec runoob/centos:dev
    8)構建鏡像:可參考步驟3
        命令 docker build , 從零開始來創建一個新的鏡像。爲此,我們需要創建一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構建我們的鏡像。
            docker build -t 名字

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章