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


  • 系列其他內容

    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刪除所有容器和鏡像




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM