docker 学习笔记 (持续更新)

一些基础概念

Docker 入门教程 - 阮一峰的网络日志

什么是image文件?

**Docker 把应用程序及其依赖,打包在 image 文件里面。**只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。

image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。一般来说,为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作。即使要定制,也应该基于别人的 image 文件进行加工,而不是从零开始制作。

为了方便共享,image 文件制作完成后,可以上传到网上的仓库。Docker 的官方仓库 Docker Hub 是最重要、最常用的 image 仓库。此外,出售自己制作的 image 文件也是可以的。

查看本机已加载的镜像

bash 复制代码
docker images

什么容器文件?

**image 文件生成的容器实例,本身也是一个文件,称为容器文件。**也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。

运行image文件,会生成容器文件:

bash 复制代码
docker run -it <image_name> /bin/bash

列出正在运行的容器:

bash 复制代码
docker ps

列出本机所有容器,包括终止运行的容器

bash 复制代码
docker ps -a

常用命令

docker 以非root身份加载docker镜像

1、Docker 需要用户具有 sudo 权限,为了避免每次命令都输入sudo,可以把用户加入 Docker 用户组

bash 复制代码
sudo usermod -aG docker <username>

2、重启电脑

3、解压缩镜像文件(即image文件),以用户身份加载镜像

bash 复制代码
docker load --input /home/developer/rknn-toolkit/rknn-toolkit-1.7.1-docker.tar.gz

加载镜像后会将其保存在 /var/lib/docker目录下的overlay2文件夹下,所以如果你的/分区太小的话记得常常删除不需要的镜像

4、检查镜像是否已加载

bash 复制代码
root@lrj-HLY-WX9XX:/var/lib/docker# docker images
REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
rknn-toolkit   1.7.3     9cce319ebc29   11 months ago   3.7GB

5、在以 rknn-toolkit:1.7.3 镜像为基础的容器中开启一个交互式 shell,赋予容器足够的权限,以便在容器内访问主机的 USB 设备和文件系统。通过挂载主机的 /dev/bus/usb//home/lrj/work/rv1126/model_convert/ 目录到容器中的 /dev/bus/usb//test 目录,实现了主机与容器之间的设备和文件的共享

bash 复制代码
docker run -t -i --privileged -v /dev/bus/usb/:/dev/bus/usb -v /home/lrj/work/rv1126/model_convert/:/test rknn-toolkit:1.7.3 /bin/bash
  • docker run:启动一个新的容器。

  • -t:为容器分配一个伪终端(pseudo-TTY)。

  • -i:使容器与交互式命令行保持打开状态。

  • --privileged:赋予容器特权,允许对主机设备进行操作。

  • -v /dev/bus/usb/:/dev/bus/usb:将主机的 /dev/bus/usb/ 目录挂载到容器中的 /dev/bus/usb/ 目录,实现主机与容器之间 USB 设备的访问共享。

  • -v /home/lrj/work/rv1126/model_convert/:/test:将主机的 /home/lrj/work/rv1126/model_convert/ 目录挂载到容器中的 /test 目录,实现主机与容器之间文件的共享。

  • rknn-toolkit:1.7.3:运行的容器镜像的名称及其版本号。

  • /bin/bash:在容器启动后立即运行的命令。此处是以交互式 shell 的方式打开容器的命令行。

如何删除镜像?

删除Image之前,必须停止该Image正在运行的容器,并删除容器;然后才能删除该image

bash 复制代码
docker stop <container_ID> && docker rm <container_ID> && docker rmi <image_name>

如何以交互的方式进入已停止的容器?

先启动容器

bash 复制代码
docker start <container_ID>

然后以交互方式进入容器

bash 复制代码
docker exec -it <container_ID> /bin/bash
相关推荐
CAE虚拟与现实7 小时前
docker desktop中的build功能是要build什么
java·docker·容器
fb_123457 小时前
Docker入门-第1-2章-容器生态系统与架构详解
docker·容器·架构
allnlei9 小时前
s6-overlay - 装在 Docker 容器里的轻量级管家
java·docker·容器
一技安身14 小时前
【Docker】 镜像导出 & 导入,实验环境aarch64(arm64)Linux操作系统
linux·docker·容器
彧azz14 小时前
图的存储结构详解:邻接矩阵的原理、实现与应用
开发语言·数据结构·学习·php
IT_Octopus14 小时前
IntelliJ 本地日志路径自定义:`-DLOG_PATH=./logs` 为什么总“不听话“
java·log4j·intellij-idea
平头哥AI15 小时前
Day 22 _ 包装错误别丢链_%w、errors.Is 与 errors.As
android·服务器·学习·golang·go
一阵寒风15 小时前
CAM智能化助力PCB 智能制造-培训体系第六章.项目开发学习
学习·制造
传奇开心果编程15 小时前
【Xilem 0.4 基础语法学与练】第15课:状态管理与 memoize 性能优化
学习·rust·前端框架
长征coder15 小时前
【无标题】
java·性能优化