docker常用命令
命令 | 功能 |
---|---|
docker version | 查看docker的版本 |
docker info | 查看docker的详细信息 |
docker images | 查看本地所有镜像 |
docker pull 镜像名 | 拉取镜像 |
docker push 镜像名 | 推送镜像 |
docker images nginx | 查看本地与nginx的相关的镜像 |
docker ps -a | 查看当前所有容器的状态(包括没有运行的) |
docker ps | 查看当前正在运行的容器的状态 |
docker network ls | 列出当前有哪些网络类型 |
docker container ls | 查看正在运行的容器 |
docker build -t image . | 用当前目录下Dockerfile创建镜像image |
docker run -it —name vm1 image | 使用镜像image创建容器vm1,并运行,并进入交互界面 |
docker run -it —rm image | 用image镜像创建容器,并运行,运行完成之后,立即删除 |
docker inspect container | 查看容器container的详情 |
docker inspect image | 查看镜像image的详情 |
docker search 镜像名的一部分 | 查找镜像 |
docker rmi image | 删除镜像image |
docker rm container | 删除容器container |
docker stop vm1 | 停止容器vm1(容器vm1存在,并运行) |
docker start vm1 | 启动容器vm1(容器vm1存在,但没有运行) |
docker kill vm1 | 强制干掉容器vm1(容器vm1存在,并运行) |
docker top vm1 | 查看容器vm1的进程 |
运行docker run image-name
命令后,docker会先从本地查找这个image,如果没有,就会从Docker Hub查找,有则下载然后运行,如果没有就会报错返回。
由于Hyper-V,docker与VMWare不兼容,不能同时开启
编译docker image
1 | FROM ros:kinetic-ros-base |
命令只有两行,FROM一行表示引入的基础镜像,这个是Docker Hub上已有的,第二行是镜像中运行的命令,从网上下载几个kinetic的官方package
编译image: docker build --tag ros:ros-tutorials .
,现在image中有ros-tutorials
这个package了
创建虚拟网络
使用命令docker network create foo
创建网络foo
运行roscore
1 | docker run -it --rm --net foo --name master ros:ros-tutorials roscore |
结果是这样的,ROS_MASTER_URI
实际是镜像ID,重启镜像后就变了。不过没关系,其他节点不必每次都用这个ID,用master这个名称就行
执行rostopic
运行了roscore之后,执行命令docker exec -it master bash
,进入了ROS环境,master是上面—name的参数。进入ROS后,执行命令source /ros_entrypoint.sh
或者source /opt/ros/kienetic/setup.bash
现在可以使用ROS命令了,rostopic list
会显示所有话题
执行Publisher
1 | docker run -it --rm --net foo --name talker --env ROS_HOSTNAME=talker --env ROS_MASTER_URI=http://master:11311 ros:ros-tutorials rosrun roscpp_tutorials talker |
执行Subscriber
1 | docker run -it --rm --net foo --name listener --env ROS_HOSTNAME=listener --env ROS_MASTER_URI=http://master:11311 ros:ros-tutorials rosrun roscpp_tutorials listener |