Docker 是一种容器化平台,它将应用程序及其所有依赖项打包到一个称为容器的标准化单元中,具有隔离性、安全性、灵活性和可扩展性等优点,在自动驾驶中被广泛应用。
Docker的定义这里不再赘述,相信大家日常经常使用,我这里总结记录下docker的常用指令
需要注意的是,以下指令在未开通权限之前是需要加sudo的,可以将当前账户加入权限以避免后面每次使用docker都需要加sudo并输入密码,这个方法在我的另一篇博客中记录:
https://blog.youkuaiyun.com/Skyrim0107/article/details/137512397?spm=1001.2014.3001.5501
1. 拉取镜像
在Docker中,镜像(Image)是一个只读的模板,其中包含了用于运行容器的应用程序的代码、运行时环境、系统库和依赖项。简单来说,镜像就是一个包含了应用程序运行所需的一切的文件集合
(1) 首先登陆镜像仓
docker login <镜像仓网址>
(2) 输入账号密码成功登陆后,拉取镜像
docker pull <镜像名>
2. 查看镜像
docker images
3. 打包本地镜像
将本地的镜像打包成tar包,方便转移
docker save -o <要保存成的文件名.tar> <镜像名>
这里会在终端输入指令的对应路径生成tar包
4. 加载镜像
转移tar包后,解压tar包在本地生成镜像
docker load -i <XXX.tar>
需要注意的是,在终端的路径tar包存在
5. 删除镜像
下载好的镜像一般储存在ubuntu系统的/var/lib/docker下,比较占用系统primary分区的空间,因此对于暂时用不到的镜像,可以删除
docker rmi <镜像名>
需要注意的是,需要先删除镜像对应的容器,确认没有容器使用这个镜像后,才能删除
6. 通过镜像建立容器
(1) 建立一个容器
docker run -it <镜像名>
(2) 以host身份建立容器
docker run -it --net=host <镜像名>
(3) 将本地的文件挂载到建立的容器中
docker run -it --net=host <本地文件路径>:<容器挂载路径> <镜像名> bash
(4) 更复杂的挂载指令
docker run -it --net=host -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/.Xauthority:/root/.Xauthority -e DISPLAY=$DISPLAY --privileged --name <容器名> <本地文件路径>:<容器挂载路径> <镜像名> bash
-v /tmp/.X11-unix:/tmp/.X11-unix:将本地 X11 UNIX 套接字(用于显示图形界面)挂载到容器中,以便容器内的应用程序能够与本地的 X 服务器进行通信
-v $HOME/.Xauthority:/root/.Xauthority
: 将本地 X 认证信息文件(用于授权 X 服务器的访问)挂载到容器中,以便容器内的应用程序能够访问本地 X 服务器
-e DISPLAY=$DISPLAY
: 设置环境变量 DISPLAY,将本地 X 服务器的显示设置传递给容器中的应用程序
--privileged
: 赋予容器特权,允许容器内的进程访问主机的硬件设备
--name <容器名>:指定容器名
这个指令可以实现本地文件与容器文件共享的前提下,进行图形通信
7. 提交在容器中的更改
docker commit -a "你的提交注释” <containerID> <镜像名>
8. 本地和容器之间的文件相互拷贝
采用docker cp指令,后接;两个路径,第一个为被拷贝文件,第二个为拷贝的目标路径
(1) 本地文件拷贝到容器
docker cp <本地文件路径> <容器名:容器内路径>
(2) 容器文件拷贝到本地
docker cp <容器名:容器内路径> <本地文件路径>
9. 查看容器
(1) 查看全部容器
docker ps -a
(2) 查看正在运行的容器
docker ps
10. 删除容器
docker rm <容器名>
注意:docker rmi 为删除镜像;docker rm为删除容器
11. 启动/停止、进入容器
(1) 启动容器:
docker start <容器名>
(2) 停止容器:
docker stop <容器名>
(3) 进入容器
两种方法,第一种:
docker attach <容器名>
docker attach
命令用于连接到正在运行的容器的标准输入、输出和错误,这个命令不会启动一个新的 shell 进程,如果容器中的主进程退出,docker attach
命令也会退出
通俗地说,这个命令可以进入到容器正在进行的进程里,监控当前的输入输出
第二种:
docker exec -it <容器名> bash
docker exec -it
命令用于在运行的容器中启动一个新的shell进程,相当于创建一个新的进程在容器内执行,即使容器中的主进程退出,启动的进程仍然可以继续运行
这种方法适合进入已经开启的容器进行主进程外的操作
12. 查看容器的cpu占用、储存占用等
docker stats <容器名>
13. 查看容器的挂载路径
(1) 只看挂载路径
docker inspect -f "{{.Mounts}}" <容器名>
(2) 除挂载路径外,查看Docker 对象(包括容器、镜像、网络等)的详细信息
docker inspect <容器名>