Docker的使用

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

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

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

Docker 的安装及使用

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

Docker 的安装

  • 首先确认系统内核信息,docker需要系统内核版本在3.10以上使用如下命令
$ uname -a
  • 然后操作系统默认有docker的源,安装docker。这个需要sudo权限,服务器上没有权限求助于管理员进行安装
$ sudo apt-get install -y docker.io
  • 将docker加入到开机启动项中,并启动docker服务
$ chkconfig docker on  # 加入开机启动
$ service docker start # 启动docker服务
  • 确认安装docker版本信息
$ docker version
  • 查看是否安装成功,运行hello-world,运行此命令后docker会从本地找hello-world镜像,如果找不到就会从远程pull,下载镜像
docker run hello-world

Docker的使用

  • docker 查找镜像,docker的方便之处在配一个环境之后可以生成一个镜像文件,docker可以通过镜像构建多个实例容器,每个容器互不干涉,且容器都具有相应环境配置,例如
$ docker search ubuntu

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

  • docker下载镜像,需要哪个下那个
$ docker pull [name]
  • docker 新建容器,这里需要注意选取的参数
$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
$ docker run -i -t ubuntu /bin/bash #示例
  • docker 查看容器
$ 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的强大在与他可以创建容器,在使用docker run新建容器命令的时候,不同的参数可以指定容器的网络服务,容器的X11服务等和主机的映射关系
$ 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服务的端口(命令可以不分行)

  • 之后开放X11服务给所有用户,在主机上执行命令
$ sudo apt-get install x11-xserver-utils
$ xhost+
  • 之后是我遇到的坑
    执行过xhost + 命令之后会报错,显示无法打开DISPLAY的端口,其实很简单,因为我们的DISPLAY环境变量并不是我们真正做过映射的执行x11服务的端口,打开一个没有进行服务的空的端口,就会导致报错

  • 解决方法如下:

    • 容器内部:
       $ echo $DISPLAY
    
    • 显示如下
    $ unix:13.0
    
    • 主机修改DISPLAY环境变量为:13.0,数值随容器里的变化,并开放x11服务给所有用户
    $ export DISPLAY=":13.0"
    $ xhost +
    

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

关于docker显示GUI的几点补充

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

docker run -v

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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容