天天看点

docker快速创建轻量级的可移植的容器(一)

介绍如何使用docker快速创建容器

本文主要包括docker的安装和删除,镜像和容器的建立,以及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      
    docker快速创建轻量级的可移植的容器(一)
  • 启动服务
    # 先切换到root用户, 依次执行以下命令
    systemctl enable docker # 开机自动启动docker
    systemctl start docker # 启动docker
    systemctl restart docker # 重启dokcer      
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      
docker快速创建轻量级的可移植的容器(一)
docker快速创建轻量级的可移植的容器(一)

删除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      
docker快速创建轻量级的可移植的容器(一)

构建镜像

  • 使用开源镜像
    docker pull alpine # 轻量级,但无法执行python打包的exe文件
    docker pull debian:buster-slim # 体积也比较小。可以执行python打包的exe文件      
    docker快速创建轻量级的可移植的容器(一)
  • 构建你的第一个镜像

    具体的服务构建可以建下篇内容#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      
    docker快速创建轻量级的可移植的容器(一)
    • 依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"      
docker快速创建轻量级的可移植的容器(一)

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)      
docker快速创建轻量级的可移植的容器(一)