docker快速建立輕量級的可移植的容器(一)

NLPer_wx發表於2021-09-11
  • 系列其他內容

    1. docker快速建立輕量級的可移植的容器

    2. docker&flask快速構建服務介面

    3. docker&uwsgi高效能WSGI伺服器生產部署必備

    4. docker&gunicorn高效能WSGI伺服器生產部署必備

    5. docker&nginx&gunicorn實現負載均衡

    6. docker&ngxtop並實時解析nginx日誌

    7. docker&supervisor監控你的服務

    8. docker&pyinstaller兩步法構建小體積容器

    9. locust對你的服務做高併發測試

    10. postman熱門的API除錯工具

    11. docker+flask+gunicorn+nginx+pyinstaller+supervisor搭建一個輕量級滿足高併發效能的服務

docker安裝

  • 本教程是基於redhat linux伺服器的

  • 介紹

    • docker為應用程式提供了隔離的執行空間:

    • 映象作為基礎,一個映象可以建立多個容器,方便服務的快速部署和遷移;

    • 每個容器內都包含一個獨享的完整使用者環境空間,並且一個容器內的變動不會影響其他容器的執行環境;

線上安裝

  • 阿里雲安裝docker

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

    1docker線上安裝

  • 啟動服務

    # 先切換到root使用者, 依次執行以下命令
    systemctl enable docker # 開機自動啟動docker
    systemctl start docker # 啟動docker
    systemctl restart docker # 重啟dokcer

1啟動docker服務

離線安裝

  • 開啟網頁選擇對應的docker版本

https://download.docker.com/linux/static/stable/x86_64/
  • 上傳到伺服器(我們選擇的版本是docker-rootless-extras-20.10.5.tgz)

tar -xvf docker-20.10.5.tgz
cp docker/* /usr/bin/
dockerd &
docker -v

1docker離線安裝-解壓

1docker離線安裝-安裝

刪除docker

  • 查詢當前系統安裝了哪些docker包

    yum list installed | grep docker
    yum remove containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64 docker-ce-rootless-extras.x86_64
    docker -v

1解除安裝docker

構建映象

  • 使用開源映象

    docker pull alpine # 輕量級,但無法執行python打包的exe檔案
    docker pull debian:buster-slim # 體積也比較小。可以執行python打包的exe檔案

    1docker拉取開源映象

  • 構建你的第一個映象

    具體的服務構建可以建下篇內容#docker&flask快速構建服務介面#。

    • 驗證flask服務的有效性

    # flask_test.py為我們構造的flask服務
    python3 flask_test.py即可啟動服務
    wget -O apirsult.txt "http://127.0.0.1:2222/test?name=xiaoming&pwd=123

    1docker建立自己的映象-服務說明部分

    • 依Dockerfile檔案build個人Docker映象及服務的有效性

    %%writefile Dockerfile
    FROM python/3.8
    WORKDIR /home/myfirstapi/
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    COPY . .
    RUN pip install -r requirements.txt -q -i https://pypi.tuna.tsinghua.edu.cn/simple && \
    rm -rf /var/cache/apk/*
    expose 2222
    CMD ["python3", "flask_test.py"]

    # docker構建映象並啟動服務
    docker build -t test/api:1.0 .
    docker run -d -p 2222:2222 test/api:1.0
    wget -O apirsult.txt "http://127.0.0.1:2222/test?name=xiaoming&pwd=123"

1docker建立自己的映象-build步驟說明

docker常用命令

  • 基本使用,可以應用docker構建容器了

    • 容器的基本應用,涉及到映象及容器構建,容器檢視相關內容。

# 構建名稱為test/api,版本為2.0的映象
docker build -t test/api:2.0 .
# 通過映象test/api建立一個後臺執行的容器,且對映埠4050
docker run -d -p 4050:4050 test/api:2.0
# 進入容器內部互動式命令空間的兩種方式
docker run -it test/api:2.0 /bin/bash
docker container exec -it container-id /bin/bash
# 檢視並停止容器
docker ps
docker stop ontainer-id
# 檢視日誌
docker logs -f --tail 100 container-id
or
vim /var/lib/docker/containers/容器ID/容器ID-json.log
# 檢視埠
docker port container-id
  • 溜溜的,玩轉docker了可以

    • 涉及到容器遷移,修改及資料卷相關內容

# 與容器中檔案互動
docker cp container-id:/root/test.txt /root/
docker cp /root/ container-id:/root/test.txt
# 檢視映象中的檔案
docker exec container-id ls -lth
docker exec container-id cat file.py
# 檢視容器的程式情況
docker top container-id
docker stats container-id
# 儲存修改的容器為映象
docker commit -a "my_name" -m "install xxx" container-id image_name
# 儲存映象
docker save -o xxx.tar 映象名稱
# 載入映象名
docker load --input test.tar  
# 修改映象名稱
docker tag [映象id] [新映象名稱]:[新映象標籤]
# 資料卷-使伺服器和容器內對應的檔案同步更新
docker run -d -p 4001:4000 --name web -v /home/linux:/home/docker/ test/api:1.0
  • 掀桌了了,快速刪除所有映象及容器

    • 快速停止,刪除所有的容器,映象

# 檢視映象概覽
docker system df
# 刪除所有docker中所有未使用的資料
docker system prune -a
# 停止容器內的所有程式
docker pause container-id
# 刪除全部容器
docker kill $(docker ps -a -q)
# 刪除所有容器
docker rm $(docker ps -a -q)
# 刪除所有映象
docker rmi $(docker images -q)

1docker刪除所有容器和映象



相關文章