docker上运行python容器与本机carla交互

docker上运行python容器与本机carla交互

安装docker

参考docker官方文档

开始安装

由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:

$ sudo apt-get remove docker docker-engine docker-ce docker.io

更新apt包索引:

$ sudo apt-get update

安装以下包以使apt可以通过HTTPS使用存储库(repository):

$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

添加Docker官方的GPG密钥:
#这里官方文档没有加sudo,一开始一直没成功。

$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

使用下面的命令来设置stable存储库:

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

再更新一下apt包索引:

$ sudo apt-get update

安装最新版本的Docker CE:

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

Ubuntu18.04可以直接安装最新版,Ubuntu16.04在这里依赖出现了问题

下列软件包有未满足的依赖关系:
 containerd.io : 依赖: libseccomp2 (>= 2.4.0) 但是 2.2.3-3ubuntu3 正要被安装
 docker-ce : 依赖: libseccomp2 (>= 2.3.0) 但是 2.2.3-3ubuntu3 正要被安装
             推荐: aufs-tools 但是它将不会被安装
             推荐: cgroupfs-mount 但是它将不会被安装 或
                     cgroup-lite 但是它将不会被安装
             推荐: pigz 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

可以选择指定低版本:

sudo apt install docker-ce=17.03.2~ce-0~ubuntu-xenial 

如果你是当安装libltdl7报错如下:

Depends: libseccomp2 (>= 2.3.0) but 2.2.3-3ubuntu3 is to be installed
             Recommends: aufs-tools but it is not going to be installed

只需要:

apt-get install -y libltdl7 libseccomp2

安装完成,验证docker
通过运行hello-world映像来验证Docker Engine是否已正确安装:

$ sudo docker run hello-world

出现Hello from Docker!,安装成功。
在这里插入图片描述
配置docker

sudo usermod -aG docker 用户名   //获得权限

配置完重启docker服务:

sudo service docker restart

创建python镜像并运行容器

通过Dockerfile创建docker镜像,新建一个docker-file文件夹并创建Dockerfile文件,requirements.txt文件,将gym-carla文件夹打包放入文件夹。
在这里插入图片描述
在Dockerfile文件写入以下内容:

FROM python:3.6

MAINTAINER wangpeng

WORKDIR /app
COPY . /app

RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
  

CMD ["/bin/bash"]

requirements.txt文件写入:

gym==0.12.5
pygame==1.9.6
scikit-image==0.16.2

在docker-file文件夹打开终端并创建镜像,镜像名为gym-docker:0.1,注意后面有一个.与镜像名之间有空格。

wang@wang-m920t:~/docker-file$ docker build -t gym-docker:0.1 .

在这里插入图片描述
成功!
运行容器:

docker run -it gym-docker:0.1

在这里插入图片描述
解压gym.tar.gz得到gym-carla文件夹。

 tar -xzvf gym.tar.gz 

https://github.com/cjy1992/gym-carla按照gym-carla配置一下环境,python包已经安装好了。

pip install -e .

gym-carla要用carla里的carla-0.9.6-py3.5-linux-x86_64.egg文件,现在打开另一个终端将这个文件上传给docker容器。79c04e667618是现在运行的容器名。将该文件复制到了79c04e667618的/app目录下。

docker cp /home/wang/CARLA_0.9.6/PythonAPI/carla/dist/carla-0.9.6-py3.5-linux-x86_64.egg 79c04e667618:/app

写入python环境变量并source ~/.bashrc使生效。

echo export PYTHONPATH=$PYTHONPATH:/app/carla-0.9.6-py3.5-linux-x86_64.egg >> ~/.bashrc 

运行gym-carla中的test.py,有一个错误:
在这里插入图片描述
缺少库文件。
下载该文件:

wget https://jpegclub.org/support/files/jpegsrc.v8d1.tar.gz

解压:

tar -xzvf jpegsrc.v8d1.tar.gz 

进入该文件夹编译安装:

./configure
 make
 make install
 make test

写入环境变量:

echo export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib >> ~/.bashrc
source ~/.bashrc

再次运行test.py
在这里插入图片描述
默认连接本地carla服务,找不到。查看docker ip:
在这里插入图片描述
修改代码:
vim gym-carla/gym_carla/envs/carla_env.py
在这里插入图片描述
将第88行里的localhost改为172.17.0.1。保存退出。
没有vim,使用apt安装,apt update,apt install vim。
在本机运行carla文件,./CarlaUE4.sh
运行容器test.py
在这里插入图片描述
连接成功!
exit退出docker保存为新镜像,版本号为0.1.1。

docker commit 79c04e667618 gym-carla:0.1.1
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值