docker应用及远程GUI

1.安装

Get Docker Engine - Community for Ubuntu

2.在docker中运行容器

1)获取镜像:下载镜像或用dockerfile制作镜像

docker pull ubuntu:16.04       #举例,下载镜像Ubuntu16.04
docker build -t runoob/ubuntu:v1 . #讲当前目录下的dockerfile编译成镜像文件,设置标签为runoob/ubuntu:v1

2)启动容器

docker run -it {REPOSITORY:TAG}   #获取帮助docker run --help

3.Docker容器和本机之间的文件传输

docker cp 本地文件 CONTAINER:容器路径        #本地文件传输到容器中
docker cp CONTAINER:容器文件 本地路径        #容器文件传输到本地中

4.显示容器的GUI

1)将容器GUI显示到宿主机上(这种方法只能显示在运行该容器的主机上)

A.在宿主机中 
1.查看宿主机IP 
    $ ifconfig ##假设为xxx.xxx.xxx.xx 
2.查看当前显示的环境变量值 
    $ echo $DISPLAY (要在显示屏查看,其他ssh终端不行) ##假设为:0 
3.安装xserver 
    $ sudo apt install x11-xserver-utils 
4.增加许可网络连接,在 /etc/lightdm/lightdm.conf 中添加:
    [SeatDefaults] 
    xserver-allow-tcp=true 
5.重启xserver 
    $ sudo systemctl restart lightdm #此指令会关闭桌面所有程序,适用于ubuntu16.04
    $ sudo service restart lightdm #此指令会关闭桌面所有程序,适用于ubuntu14.04
6.许可所有用户都可访问xserver 
    $ xhost + 

B.在docker 容器内 
    # export DISPLAY=xxx.xxx.xxx.xx:0 
注意:环境变量设置需要每次进docker设置,可以写在:/etc/bash.bashrc 文件中,避免每次进终端时设置

2)本机通过ssh登录服务器,容器GUI显示在本机

1.在本机允许所有用户访问X11服务
    $ sudo apt-get install x11-xserver-utils
    $ xhost +  
2.检查服务器上的/etc/ssh/sshd_config文件,是否已经有『X11Forwarding yes』这样的配置,如果没有则需要加上。
3.本机通过ssh连接到服务器,注意加上-X参数
    $ ssh -X @
4.运行docker容器
    $ docker run -it \

      -v /etc/localtime:/etc/localtime:ro \

      --net=host \

      -e DISPLAY=:10.0 \

      -v $HOME/slides:/root/slides \

      -v $HOME/.Xauthority:/root/.Xauthority \

      --name {container name} \

      {REPOSITORY:TAG}
注意:将DISPLAY的值修改成服务器中DISPLAY的值

3)验证设置是否正确code snippet widget

1.Docker容器中安装时钟显示工具
    $ apt install xarclock
2.Docker容器中启动时钟显示工具,观察屏幕上是否显示
    $ xarclock

5.docker容器使用本机硬件设备

       启动容器时,添加privileged参数:

docker run --privileged=true -it --name test ros:indigo

注意:经测试,只有启动容器时还连在本机上的硬件,才会被容器识别到,启动后连接的设备不会被识别

6.将宿主机目录挂载到容器里,挂载目录会在宿主机和容器间共享

 docker run -it -v /test:/soft centos

7.IP设置

1) 使用默认网络

  Docker安装后,默认会创建下面三种网络类型:

$ docker network ls
NETWORK ID      NAME        DRIVER       SCOPE
9781b1f585ae    bridge      bridge       local        #默认选项,按容器启动顺序分配IP,因此每次启动IP都会变
1252da701e55    host        host         local        #容器网络附属到主机上,两者互通
237ea3d5cfbf    none        null         local        #不分配IP

   启动时可以指定其中一种:

docker run --network bridge/host/none -it --name test ros:indigo

2)自定义IP地址

docker network create --subnet=172.18.0.0/16 mynetwork                        #创建自定义网络
docker run -it --name test --network mynetwork --ip 172.18.0.2 ros:indigo     #启动容器时使用自定义网络,且指定IP,注意要与自定义网络处于同一网段

8.在容器中打开终端的方法

docker run -it --name test ros:indigo                #新建容器时,打开一个终端
docker start -i test                                #启动容器时,打开一个终端
docker exec -i test /bin/bash                       #运行/bin/bash程序时,打开一个终端
tmux                                                #tmux终端复用软件(常用)

其他常用命令:

docker start        #启动处于exit状态的容器,相当于开机
docker stop         #停止处于运行状态的容器,相当于关机
docker exec         #在运行状态中的容器中运行一个程序,可运行/bin/bash来启动一个新终端
docker rm           #删除容器
docker rmi          #删除镜像
docker rename       #重命名容器
docker commit       #将当前容器编译为新镜像

参考:

1.Docker相关:https://note.youdao.com/ynoteshare1/index.html?id=e75449a07b29a1387143ab5fcb52df31&type=note&from=singlemessage#/

2.Docker容器和本机之间的文件传输:https://blog.csdn.net/Leafage_M/article/details/72082011

3.Docker运行GUI软件的方法:https://www.csdn.net/article/2015-07-30/2825340

4.Docker学习总结之Run命令介绍:https://www.cnblogs.com/vikings-blog/p/4238062.html

5. https://yq.aliyun.com/articles/606756

你可能感兴趣的:(docker应用及远程GUI)