Docker的使用

2018-03-16  本文已影响0人  卖西瓜的西瓜皮

进入组后需要使用到docker,作为一个对docker一无所知的人,将陆续使用到一些docker的一些功能,先将之前使用到的一些东西写在这里,后续遇到再陆续更新。

docker中文社区:http://www.docker.org.cn

这个中文社区有一些入门的东西,但是我刚开始使用的时候并没有怎么看懂😂,原谅我的智商,因为我最开始只是纠结怎么装docker,后来装好之后随着开始使用,才可以在中文社区找到对应的东西,进入到半懂状态。下面先从安装开始介绍。

Docker 的安装及使用

docker 是一个类似虚拟机却又不同于虚拟机的东西,它比虚拟机来说占用系统资源要少得多,此外我们在配一些软件环境的时候,如果不想影响到主系统,或者配环境遇到问题可以使用docker,docker可以创建容器,容器内可以理解为一个小的实例系统,当然这个只是为了能够对docker又一个初步概念而简单的描述。。docker功能更多,描述的可能不太对,只是给一个初步的印象。

Docker 的安装

$ uname -a
$ sudo apt-get install -y docker.io
$ chkconfig docker on  # 加入开机启动
$ service docker start # 启动docker服务
$ docker version
docker run hello-world

Docker的使用

$ docker search ubuntu

我们就可找到许多ubuntu镜像的列表

$ docker pull [name]
$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
$ docker run -i -t ubuntu /bin/bash #示例
$ docker ps # 列出当前所有正在运行的container
$ docker ps -l # 列出最近一次启动的container
$ docker ps -a # 列出所有的container(包含历史,即运行过的container)
$ docker ps -q # 列出最近一次运行的container ID
$ docker ps -a # 查看容器列表
$ docker start [NAME] # 启动容器
$ docker attach [NAME] # 进入容器
$ docker -v # 查看容器列表

高级

如何在docker容器中启动GUI程序,通过docker的前期使用我们知道docker一般在新建一个可交互容器后返回的是一个可以用的shell,但是容器往往没有图形化界面,尤其是当我们需要跑一些有GUI操作程序的时候,比如Autoware这个可视化操作平台,这就需要我们进行一些必要的配置。

之前我提到过如何使用xing+putty 或者ssh -X命令访问远程Linux服务器的那篇文章,其实基本思想一样,目前Unix/Linux比较主流的图形界面服务是X11,而X11服务的图形显示方式实际上是一种Client/Server模式,在服务端和客户端之间,X11通过『DISPLAY』环境变量来指定将图形显示到何处。如下面的流程所示,请注意服务端与客户端的位置,服务端是用于提供显示信息的。
对于docker来说,本机就是服务端,容器是客户端,本机提供显示服务。下面是具体步骤

Linux本机 + docker

因为我是登陆的远程服务器,如果采用ssh登陆的话,要想访问远程服务器的docker容器的GUI界面,因为数据走向不同,配置也不同,当前的配置是我用远程桌面的方式登陆的Linux服务器。因此,配置和本机加docker是一样的,具体步骤如下所示:

$ docker run -i -t \

  -v /etc/localtime:/etc/localtime:ro \。# 既然涉及时间,感觉不能删除,没试验过

  -v /tmp/.X11-unix:/tmp/.X11-unix \。# 不能删除

  -e DISPLAY=unix$DISPLAY \

  -v $HOME/slides:/root/slides \   # -v挂载文件夹用,可以根据需要删除修改

  -e GDK_SCALE \

  -e GDK_DPI_SCALE \

  --name test \

  mirror

如上命令我们建立了一个可交互式的名字为test,使用镜像为mirror的容器,这个容器指定了DISPLAY为主机的执行X11服务的端口前面加上unix,这个组成了容器的监听X11服务的端口(命令可以不分行)

$ sudo apt-get install x11-xserver-utils
$ xhost+

之后容器内的GUI应用完美运行。。。

关于docker显示GUI的几点补充

因为有其他事情,有一段时间没有去管docker的autoware容器,时隔接近一个月打开原来的容器,发现GUI界面无法显示,非常坑爹,我按照我上面的教程新建容器,发现了几个坑,首先上述新建容器的一大串命令,容器的DISPLAY和主机一样就好

docker run -v

这个命令是用来做挂载文件用的,后面的路径我自己计算机并不存在,所以我给删掉了,大家可以根据自己需要去设置自己的,就像虚拟机的共享文件夹一样,更加详细的教程参见

我重新新建容器,按原来写的教程没有弹出GUI界面,但是命令行也没有报错,我不太清楚是步骤有误还是我本机的某些服务有问题,毕竟在公共服务器,虽然是私人账号,会不会有的东西影响到也不好说

调了很多东西,包括重启了很多服务,最后还删了这一行“挂载文件夹”没有意义的参数,然后就成功了,我感觉应该还在DISPLAY和其涉及的服务身上,实在不行多试几次,大体步骤无误。

其他的具体细节比如远程ssh连接运行服务器的docker容器的GUI程序
将在后续补充……

上一篇 下一篇

猜你喜欢

热点阅读