安装docker-制作Ubuntu16容器-安装ROSkinetic
安装docker
Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业
版,强调安全,付费使用,支持周期 24 个月。
Docker CE 分为 stable,test 和 nightly 三个更新频道。每六个月发布一个 stable 版
本(18.09,19.03,19.09,……)。
Docker.com: https://docs.docker.com/install/linux/docker-ce/ubuntu/
我们主要讲解在 Ubuntu 16.04 上使用 apt 方式安装 Docker CE v18.09 的方法。
Step 1. 卸载旧版本
Ubuntu 官方库里的 Docker 版本比较旧,我们需要先卸载它。旧版本的 Docker 称为
docker、docker-engine、docker.io 等,使用以下命令卸载旧版本:
$ sudo apt remove docker docker-engine docker.io containerd runc
Step 2. 更新 apt 包索引
$ sudo apt update
Step 3. 安装依赖包
由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使
用 HTTPS 传输的软件包以及 CA 证书。
$ sudo apt install
apt-transport-https
ca-certificates
curl
software-properties-common
Step 4. 添加官方 GPG 密钥
为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo aptkey add -
Step 5. 添加 Docker 软件源
我们的 PC 一般是 x86_64/amd64 架构,可以使用以下的命令添加 Docker 软件源。
$ sudo add-apt-repository
“deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable”
Step 6. 安装 Docker CE
更新了软件源后需要更新包索引再执行安装。
$ sudo apt update
$ sudo apt install docker-ce
Step 7. 验证安装
$ sudo docker -v
查看 docker-ce 的版本,如果输出与下面类似的文本,则表明软件已经安装成功。
Docker version 19.03.8, build afacb8b7f0
Step 8. 配置免sudo运行docker命令
add dockergroup
$ sudo groupadd docker
add user to docker group
$ sudo gpasswd -a ${USER} docker
reboot docker service
$ sudo service docker restart
change current user to new group
$ newgrp docker
ensure docker can run normally without sudo
$ docker ps
拉取image制作容器container
Step 1. 配置镜像加速器
docker官方源里的 Docker 版本比较旧,我们需要配置一个国内源https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,阿里的或者中科大的都可以。
使用以下命令创建/修改配置文件:
$ sudo vim /etc/docker/daemon.json
输入内容
{
"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]
}
Step 2. 拉取镜像
配置镜像源后,执行下面命令一般就不会连接超时了:
$ docker search ubuntu
$ docker pull ubuntu:16.04
docker pull 命令说明
$ docker pull [options] name[:tag|@digest]
成功后可以查看下载的镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 4e2eef94cd6b 2 weeks ago 73.9MB
Step 3. 镜像生成容器,进入容器
生成容器,重复执行docker run [IMAGE ID]命令可以生成多个容器:
$ docker run -it --name=[container name] --hostname=[host name] -v [/宿主机目录]:[/容器内目录] -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY [IMAGE ID]
docker run命令OPTIONS 说明*
$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
--attach, -a:连接 STDIN,STDOUT 和 STDERR
--detatch, -d:后台运行容器,并返回容器 ID
--env-file:从文件读取环境变量
--expose:开放一个或一组端口
--hostname , -h:容器的主机名 , --hostname=[host name]
--interactive , -i: 以交互模式运行容器,通常与 -t 同时使用;
--mount:将宿主计算机的文件系统连接到容器
--name:设定容器的名字 , --name=[container name]
--network:将容器连接到网络
--publish , -p: 端口映射,格式为:宿主计算机端口:容器端口
--rm:退出容器后自动删除
--tty, -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--volume , -v [/宿主机目录]:[/容器内目录] 挂载卷 , 在启动 Docker 时,需要使用-v 选项挂载 X11 Server 的 socket 目录,并使用-e 选项设定 DISPLAY 环境变量。/tmp/.X11-unix:/tmp/.X11-unix:将宿主系统的/tmp/.X11-unix 目录挂载到Docker 系统的/tmp/.X11-unix 目录下
--env, -e:设定环境变量 , DISPLAY=$DISPLAY:将 Docker 系统的 DISPLAY 变量设置为宿主系统的 DISPLAY
变量
查看容器(正在运行的):
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
debec71f8286 4e2eef94cd6b "/bin/bash" 13 minutes ago Up 13 minutes ubuntu16
查看容器(所有已生成的,无论是否运行):
$ docker container ls -a
命令 | 描述 |
---|---|
docker container attach | 附加到正在运行的容器 |
docker container commit | 从容器的更改创建一个新的映像 |
docker container cp | 在容器和本地文件系统之间复制文件/文件夹 |
docker container create | 创建一个新的容器 |
docker container diff | 检查容器文件系统上文件或目录的更改 |
docker container exec | 在运行容器中运行命令 |
docker container export | 将容器的文件系统导出为tar存档 |
docker container inspect | 显示一个或多个容器的详细信息 |
docker container kill | 杀死一个或多个运行容器 |
docker container logs | 获取容器的日志 |
docker container ls | 列出容器 |
docker container pause | 暂停一个或多个容器内的所有进程 |
docker container port | 列出端口映射或容器的特定映射 |
docker container prune | 取出所有停止的容器 |
docker container rename | 重命名容器 |
docker container restart | 重新启动一个或多个容器 |
docker container rm | 删除(移除)一个或多个容器 |
docker container run | 在新容器中运行命令 |
docker container start | 启动一个或多个停止的容器 |
docker container stats | 显示容器的实时流资源使用统计信息 |
docker container stop | 停止一个或多个运行容器 |
docker container top | 显示容器的正在运行的进程 |
docker container unpause | 取消暂停一个或多个容器内的所有流程 |
docker container update | 更新一个或多个容器的配置 |
docker container wait | 阻止一个或多个容器停止,然后打印退出代码 |
进入容器:
只能开启一个终端,多终端同步
$ docker container attach [CONTAINER ID/NAME]
可以开启多个终端,互不干扰
$ docker exec -it [CONTAINER ID/NAME] /bin/bash
docker容器中查看容器linux版本
正确的姿势:
$ cat /etc/issue
错误的姿势,这样查到的是宿主机的系统:
$ cat /proc/version
$ uname -a
在Ubuntu16.04上安装ROSkinetic
Step 1. 设置sources.list
$ apt update
$ apt install sudo
$ sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list’
(lsb_release -sc)报错,Ubuntu-core中不包含lsb_release,通过$ cat /etc/lsb-release查看DISTRIB_CODENAME,确定是xenial,填进上面命令中:
$ sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu xenial main” > /etc/apt/sources.list.d/ros-latest.list’
Step 2. 设置key
$ sudo apt-key adv --keyserver ‘hkp://keyserver.ubuntu.com:80’ --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
Step 3. 更新package
$ sudo apt update
Step 4. 安装ROS kinetic完整版
$ sudo apt install ros-kinetic-desktop-full
Ubuntu dpkg:处理 xxx (–configure)时出错解决办法
*https://blog.csdn.net/gu362418124/article/details/8186744
Step 5. 初始化rosdep
在使用ROS之前需要初始化rosdep
$ sudo rosdep init
$ rosdep update
Step 6. 配置ROS环境
$ echo “source /opt/ros/kinetic/setup.bash” >> ~/.bashrc
$ source ~/.bashrc
Step 7. 安装依赖项
$ sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
Step 8. 测试ROS是否安装成功
打开一个终端,输入以下命令,显示有ROS的版本,还有一些节点、端号:
$ roscore
再打开一个终端,输入以下命令,弹出一个小乌龟窗口:
$ rosrun turtlesim turtlesim_node
出现一个小乌龟的LOGO后,再打开一个终端,输入以下命令:
$ rosrun turtlesim turtle_teleop_key
再打开一个终端,输入以下命令,可以查看ROS节点信息:
$ rosrun rqt_graph rqt_graph