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

下面以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:端口号
}

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/<image_name>/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"

重启:docker restart registry

删除镜像:DELETE /v2/<image name>/manifests/<sha256>

删除版本镜像: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

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

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


总结

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值