前言
本文基于Docker开发和使用项目的经验,编写了Docker简明使用教程,给出Docker常用的十几条指令,让开发人员快速掌握Docker的使用。并讲解了Docker的可视化工具——Portainer的安装和使用,以及开启多终端的工具——tmux的使用。最后本人将以Docker安装Ubuntu18.04为例进行讲解。
(一)Docker常用命令
本人仅将最常用的docker命令加入到本文中来,对于其他命令请读者自行查阅。
1)查看docker 版本号信息
docker version
docker info
2)docker 帮助命令
docker --help
3)查看自己服务器中docker 镜像列表
docker images
4)搜索镜像
docker search [镜像名]
5)拉取镜像
不加tag(版本号) 即拉取docker仓库中该镜像的最新版本latest,加:tag 则是拉取指定版本
docker pull [镜像名]
docker pull [镜像名]:tag
6)创建实例并运行
docker run 镜像名
docker run 镜像名:Tag
#完整格式
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
一般我们使用如下格式(以交互式的方式创建并运行容器):
docker run -it --name [自己取的容器名] [镜像名]:tag bash
例如:
sudo docker run -it --name=ubuntu ecpe4s/ubuntu18.04-spack /bin/bash
7)删除镜像 ------当前镜像没有被任何容器使用才可以删除
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
8)强制删除镜像
docker image rm 镜像名称/镜像ID
9)保存镜像
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
10)查看所有容器 -----包含正在运行和已停止的
docker ps -a
11)启动容器
docker start [容器名or容器ID]
12)关闭容器
docker stop [容器名or容器ID]
13)进入容器-----以交互式的方式进入容器
docker exec -it [容器名or容器ID] bash
(二)Docker可视化工具——Portainer
1.搜索potainer镜像
在终端中,输入如下指令:
docker search portainer
2.拉取portainer镜像
docker pull portainer/portainer-ce
由于本人已经下载了portainer,在此不再进行安装,读者只需要在终端输入上面的指令即可。
3.启动portainer镜像
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /dockerData/portainer:/data --restart=always --name portainer portainer/portainer-ce:latest
下面是该指令的参数解释:
- - p: 指定宿主机端口和容器端口 portainer默认端口是9000
- - v: 目录映射,将/var/run/docker.sock映射到容器中,用于访问Docker的守护进程,控制Docker。/dockerData/portainer保存Portainer的配置信息。
- –restart=always: 代表在容器退出时总是重启容器,还有其他几种重启策略:no、on-failure、on-failuer:n、unless-stopped
4.进入docker可视化界面
我们启动完成后,访问http://ip:9000,其中ip为读者电脑对应的ip地址
不知道ip地址,可以在终端中输入查看本机的ip地址
ifconfig #需要安装好net-tools,若没有安装可以先输入sudo apt install net-tools
然后在浏览器中输入http://ip:9000即可打开docker的可视化界面了
首次登录,需要你创建管理员admin的密码,设置后登录
第一次会弹出安装界面,配置账号密码、选择是本地Docker还是远程Docker,一般我们选择本地Docker,也就是local,可以查看宿主机配置信息、查看容器、镜像、网络、卷等相关信息。
点击左边的条目,就可以看到我们远程服务器或本地docker容器的可视化界面啦~
portainer使用小结
(1)关于portainer
portainer也是一个docker镜像,然后我们在镜像中创建并运行了一个docker容器实例
因此对于portainer的管理和对其他镜像以及镜像上容器的管理是一样的
使用docker images 能查看到portainer的镜像
使用docker ps -a 能查看到有portainer镜像上的容器
(2)注意事项
安装完成之后,关于portainer使用需要注意下面几点
输入 docker stop portainer 将容器暂停,这样就不能访问了
输入 docker start portainer 将容器打开,这样又能继续访问,实现docker的可视化
(三)Docker启动多个终端——tmux
在终端输入如下指令安装tmux,然后读者就能打开多个终端(窗格)了:
sudo apt install tmux
在终端输入tmux进入,打开一个窗口,然后运行一个程序,如果该窗口被占用,我们只需先按住
ctrl+b,松开,然后在按d,即可打开一个新的窗口,非常的方便
- tmux 打开一个窗格
- 快捷键 ctrl+b 松开 +d 打开新的窗口
- tmux tmux ls 可以查看所有的窗口
- tmux kill-server 可以关闭所有的窗口
详细的tmux使用教程参考如下博客:
(四)实例:Ubuntu18.04(Docker版本)安装ROS
在创建容器实例之前,先在终端输入如下指令
xhost +
## 进入
Contanier
之前需要先在该terminal
内执行xhost +
命令,否则无法挂载可视化
然后还需要增加一些配置:
sudo docker run -it -v /home/xxx/Projects/slam:/home/xxx/Projects/slam --device=/dev/dri --volume=/tmp/.X11-unix:/tmp/.X11-unix --env="DISPLAY=$DISPLAY" --name=slam-display 626a /bin/bash
## 使用如下命令挂载显示及本地代码仓库,自行修改xxx
地址## --name 名字可以进行修改
创建后默认会直接进入Contanier
,如果没有,可通过以下命令启动并进入
sudo docker start slam-display
sudo docker exec -it slam-display /bin/bash
对于搭建Ubuntu18.04,本人之前尝试使用docker安装之后,然后安装机器人操作系统ros,但是会出现无法打开rviz的情况,原因是无法使用本机的资源。
1.具体步骤
1)由于docker安装的Ubuntu18.04几乎是什么包都没有,是极其轻量级的一个操作系统,因此需要自己手动安装。
2)我们终端输入 apt update 更新一下系统
3)下载lsb-release,终端输入apt install lsb-release
4)根据下面的博客进行安装即可
1.2.6 资料:其他ROS版本安装 · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程
2.相关问题
但是在该版本下安装完成ros之后,运行rviz等可视化工具的时候,会出现无法打开的问题,因为docker中安装的系统,并不能使用本机的显卡等资源,因此需要借助X协议进行操作。
3.解决办法
在/etc/profile末尾增加两句
我们在终端中输入vim /etc/profile,如果不能使用vim还需要安装vim(apt install vim)
export XDG_RUNTIME_DIR=/usr/lib/
export RUNLEVEL=3
然后刷新全局变量
source /etc/profile
警告:对Linux不熟悉的人慎重使用,为保险起见,你最好选择docker下的容器linux系统开发!
大家可以尝试去使用一下rviz,看看能否使用。
总结
本文主要介绍了Docker的常用指令,以及相关工具如可视化工具和开启多终端工具,最后以在Docker下创建并允许Ubuntu18.04的容器实例,并在容器中安装ROS,运行ROS的可视化rviz,其中需要注意的是Docker和载体可以理解为虚拟机和电脑的关系,要运行可视化需要借用电脑主机的资源,这对于服务器中使用图形界面是类似的,感兴趣的读者也可以试着在将服务器的项目用电脑的图形界面显示出来。