• Docker使用总结



    以前使用Docker时的笔记,记录一下。


    提示:以下命令供参考,个别需要根据实际修改。

    一、Docker基础命令

    导入镜像:docker load -i xxx.tar

    以交互模式创建一个容器并运行命令:docker run -t -i python /bin/bash

    退出容器:exit

    查看正在运行的容器:docker ps

    查看所有容器:docker ps -a

    退出容器后重新进入:docker start [CONTAINER ID],然后docker attach [CONTAINER ID]进入容器

    进入后台运行的容器:docker attach [NAMES] 或者 docker attach [CONTAINER ID]

    退出而不关闭容器(后台运行):Ctrl+P+Q

    在运行的容器中执行命令或进入正在运行的容器:docker exec -i -t [CONTAINER ID] /bin/bash

    运行docker里面的文件:docker run -d -P python:V1 python /home/docker_test.py

    删除镜像docker rmi image_id

    通过image_id查找依赖镜像:docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=image id)

    本地向容器传文件:docker cp <本地文件路径> container_id:<容器保存路径>

    容器向本地传文件:docker cp container_id:<容器文件路径> <本地保存路径>

    将容器打包成镜像:docker commit IMAGE_ID REPOSITORY:TAG

    将指定镜像保存为tar文件:docker save -o name.tar REPOSITORY:TAG

    网络端口映射:docker run -d -p 127.0.0.1:5001:5000 python:V1 python /home/docker_test.py (例子表示可以通过127.0.0.1:5001来访问容器的5000端口,docker_test.py是简单的前端访问测试代码。)
    -p:是容器内部端口绑定到指定的的主机端口。


    二、Docker私有仓库

    私有仓库搭建 :Docker官方提供了搭建私有仓库的镜像registry,只需要拉取镜像,运行容器并开放5000端口就可以使用。

    -v选项可以将本地目录挂载到容器内的/tmp/registry下,容器被删除后镜像还在。

    sudo docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry
    
    • 1

    下面以milvus为例子:
    镜像打标签:docker tag milvusdb/milvus:latest localhost:5000/milvus:latest

    上传镜像到私有库:docker push localhost:5000/milvus(本地)/ sudo docker push 10.99.xx.xxx:5000/registry(远程)

    从私有库拉取镜像:sudo docker pull 10.99.xx.xxx:5000/milvus:latest(远程)

    首次拉取私有仓库镜像需要配置私有仓库地址:
    修改/etc/docker/daemon.json文件

    {
      "registry-mirrors": [ "https://registry.docker-cn.com"],
      "insecure-registries": [ "10.99.xx.xxx:5000"]     # 私有仓库的IP:端口号
    }
    
    • 1
    • 2
    • 3
    • 4

    systemctl restart docker # 重启docker

    查看私有仓库:curl http://127.0.0.1:5000/v2/_catalog(本地)、curl http://10.99.xx.xxx:5000/v2/_catalog(远程)

    查看镜像有哪些版本: http://127.0.0.1:5000/v2//tags/list

    删除私有仓库镜像

    查看默认配置:docker exec -it registry sh -c 'cat /etc/docker/registry/config.yml'

    开启删除:

    docker exec -it  registry sh -c "sed -i '/storage:/a\  delete:' /etc/docker/registry/config.yml"
    docker exec -it  registry sh -c "sed -i '/delete:/a\    enabled: true' /etc/docker/registry/config.yml"
    
    • 1
    • 2

    重启:docker restart registry

    删除镜像:DELETE /v2//manifests/

    删除版本镜像:curl -I -X DELETE http://127.0.0.1:5000/v2/backgroundremove/manifests/sha256:35c499a67b00778dd837a53c693776d9f89e40ed807559782e536cba382ee02f

    sha256可以在挂载盘中找到:/data/registry/docker/registry/v2/repositories/backgroundremove/_manifests/tags/v1/index/sha256/

    registry垃圾回收(容器内):registry garbage-collect /etc/docker/registry/config.yml


    三、Docker源修改

    软件源修改(/etc/apt/sources.list),没有vim的情况下可以使用cat修改:

    root@d76cfe8e92ba:/etc/apt# cat << EOF > sources.list
    > deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
    > deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
    > deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
    > deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
    > EOF
    
    root@d76cfe8e92ba:/etc/apt# apt-get update
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    pip清华源修改:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple


    四、Docker使用GPU

    安装Nvidia-container-runtime,下载地址:http://mirror.cs.uchicago.edu/nvidia-docker/libnvidia-container/stable/ubuntu18.04/amd64/

    # 按顺序安装
    dpkg -i libnvidia-container1_1.3.3-1_amd64.deb
    dpkg -i libnvidia-container-tools_1.3.3-1_amd64.deb
    dpkg -i nvidia-container-toolkit_1.4.2-1_amd64.deb 
    dpkg -i nvidia-container-runtime_3.4.2-1_amd64.deb
    
    systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    创建容器需要加–gpus all,例如:docker run -t -i --gpus all backgroundremove:v1 /bin/bash,进入容器后执行nvidia-smi可以看到显卡信息。


    总结

    本文是仅仅是个人的Docker使用记录总结,方便日后查阅。

  • 相关阅读:
    使用BP神经网络、RBF神经网络以及PSO优化的RBF神经网络对数据进行预测(Matlab代码实现)
    音视频实战---音视频解码
    Liquibase使用SQL语句执行数据库变更
    Skywalking APM监控系列(二、Mysql、Linux服务器与前端JS接入Skywalking监听)
    Apache Doris 巨大飞跃:存算分离新架构
    Flink——实时计算引擎
    Sqli-labs靶场第15关详解[Sqli-labs-less-15]自动化注入-SQLmap工具注入
    vue3中<script setup> 和 setup函数的区别
    js对象深拷贝(深克隆)
    springboot xml 数据库访问 联表查询
  • 原文地址:https://blog.csdn.net/WellTung_666/article/details/124387927