如何用docker 运行容器 命令容器运行一款游戏

如何在Docker容器中运行GUI程序_服务器应用_Linux公社-Linux系统门户网站
你好,游客
如何在Docker容器中运行GUI程序
来源:Linux中国&
作者:Linux
各位,今天我们将学习如何在之中运行GUI程序。我们可以轻易地在Docker容器中运行大多数GUI程序且不出错。Docker是一个开源项目,提供了一个打包、分发和运行任意程序的轻量级容器的开放平台。它没有语言支持、框架或者打包系统的限制,并可以运行在任何地方、任何时候,从小型的家用电脑到高端的服务器都可以运行。这让人们可以打包不同的包用于部署和扩展网络应用,数据库和后端服务而不必依赖于特定的栈或者提供商。
下面是我们该如何在Docker容器中运行GUI程序的简单步骤。本教程中,我们会用Firefox作为例子。
1. 安装 Docker
在开始前,我们首先得确保在Linux主机中已经安装了Docker。这里,我运行的是 7 主机,我们将运行yum管理器和下面的命令来安装Docker。
# yum install docker
# systemctl restart docker.service
2. 创建 Dockerfile
现在,Docker守护进程已经在运行中了,我们现在准备创建自己的Firefox Docker容器。我们要创建一个Dockerfile,在其中我们要输入需要的配置来创建一个可以工作的Firefox容器。为了运行 Docker 镜像我们需要使用最新版本的CentOS。要创建 Docker 镜像,我们需要用文本编辑器创建一个名为Dockerfile的文件。
# nano Dockerfile
接着,在Dockerfile中添加下面的行并保存。
#!/bin/bash
FROM centos:7
RUN yum install -y firefox
# 用你自己的 uid /gid 替换下面的0
RUN export uid=0 gid=0
RUN mkdir -p /home/developer
RUN echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash"&&/etc/passwd
RUN echo "developer:x:${uid}:"&&/etc/group
RUN echo "developer ALL=(ALL) NOPASSWD: ALL"&&/etc/sudoers
RUN chmod 0440/etc/sudoers
RUN chown ${uid}:${gid}-R /home/developer
USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox
注意:在第四行的配置中,用你自己的用户和组id来替换0。 我们可以用下面的命令在shell或者终端中得到uid和gid。
# id $USER
3. 构造Docker容器
下面我们就要根据上面的Dockerfile构建一个容器。它会安装firefox浏览器和它需要的包。它接着会设置用户权限并让它可以工作。这里镜像名是firefox,你可以根据你的需要命名。
# docker build --rm -t firefox .
4. 运行Docker容器
现在,如果一切顺利,我们现在可以在运行在CentOS 7镜像中的Docker容器里面运行我们的GUI程序也就是Firefox浏览器了。
# docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix firefox
在Docker容器中运行GUI程序是一次很棒的体验,它对你的主机文件系统没有任何的伤害。它完全依赖你的Docker容器。本教程中,我尝试了CentOS 7 Docker中的Firefox。我们可以用这个技术尝试更多的GUI程序。如果你有任何问题、建议、反馈请在下面的评论栏中写下来,这样我们可以提升或更新我们的内容。谢谢!
CentOS 6/7系列安装Docker &
Docker的搭建Gitlab CI 全过程详解 &
Docker安装应用(CentOS 6.5_x64) &
在 Docker 中使用 MySQL
在 Trusty 14.04 (LTS) (64-bit)安装Docker &
Docker安装应用(CentOS 6.5_x64) &
Ubuntu 14.04安装Docker& &
阿里云CentOS 6.5 模板上安装 Docker &
Docker 的详细介绍:Docker 的下载地址:
本文永久更新链接地址:
相关资讯 & & &
& (08月01日)
& (04月05日)
& (09月06日)
& (05月10日)
& (03月10日)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款docker容器,怎么使用?- 百度派
{{ mainData.uname }}
:{{ mainData.content }}
{{ prevData.uname }}
:{{ prevData.content }}
{{ mainData.uname }}
:{{ mainData.content }}
0 || contentType !== 1" class="separate-line">
:{{ item.content }}
获取百度派权限,参与更多问答互动
3">等{{ uList.length }}人邀请你回答
docker容器,怎么使用?
具体介绍一下怎么使用
问题说明(可选):
扫一扫分享到微信
{{ log.sign }}
可能对你的问题感兴趣
暂无相关用户
,才能邀请用户
,才能邀请用户
你已邀请15人,不可再邀请
,Java攻城狮,公众号:javatiku
环境配置检查curl包有没有安装which curl
如果curl没有安装的话,则先更新apt源,并安装curl包apt-get update
apt-get install curl
apt-get update
wget -qO- / | sh
设置当前用户为docker用户组 (解决执行Docker时,每次...
环境配置检查curl包有没有安装which curl
如果curl没有安装的话,则先更新apt源,并安装curl包apt-get update
apt-get install curl
apt-get update
wget -qO- / | sh
设置当前用户为docker用户组 (解决执行Docker时,每次都要输入sudo,同时输入密码)# 添加一个新的docker用户组
groupadd docker
# 添加当前用户到docker用户组里,注意这里的xxoo为ubuntu server登录用户名
gpasswd -a xxoo docker
# 重启Docker后台监护进程
service docker restart
# 重启之后,尝试一下,是否生效
docker version
#若还未生效,则系统重启,则生效
启动docker服务service docker start
常见命令运行测试docker run hello-world
显示本地镜像docker images
获取镜像docker pull ubuntu:12.04
创建一个容器,让其运行bashdocker run -t -i ubuntu:12.04 /bin/sh
说明:-i:表示以“交互模式”运行容器 -t:表示容器启动后会进入其命令行
利用DocFile来创建镜像mkdir sinatra
cd sinatra/
touch Dockerfile
vim Dockerfile
docker build -t=&ouruser/sinatra:v2& .
运行容器docker start [stop| restart] xxx
导出容器docker ps -a
docker save -o ubuntu.tar.gz ubuntu:14.04
*(保存的是所有这个镜像的版本记录,包括一些历史数据.)*
docker export pid & ./ubuntu.tar.gz
*(导出的是容器当前所用的镜像内容)*
导入容器docker load & /tmp/mynewimage.tar *(docker save 的逆操作)*
cat ubuntu.tar | docker import - test/ubuntu:v1.0 *( export 的逆操作)*
删除容器docker stop xxx
docker rm xxx
docker 的文件是放在 /var/lib/docker/containers/ 中的。
保存镜像docker commit xxx abc
这里保存成一个名叫 abc 的镜像,镜像名称中只允许出现小写字母和数字。
删除镜像docker rmi abc
获取镜像历史docker history abc
docker images --tree
*(查看所有镜像的历史过程)*
只能对本地存在的 docker 镜像执行这个命令
docker killdocker kill container
杀死一个或多个指定容器进程。-s “KILL” 自定义发送至容器的信号。
docker topdocker top container
查看一个正在运行容器进程,支持 ps 命令参数
docker pausedocker pause container
暂停某一容器的所有进程。
docker unpausedocker unpause container
恢复某一容器的所有进程
docker tag image name
标记本地镜像,将其归入某一仓库。-f 覆盖已有标记。
docker logsdocker logs container
获取容器运行时的输出日志。
docker attachdocker run -itd ubuntu:14.04 /bin/bash
docker attach 44fc0f0582d9
docker attach可以attach到一个已经运行的容器的stdin,然后进行命令执行的动作。但是需要注意的是,如果从这个stdin中exit,会导致容器的停止。
docker execdocker exec -i name /bin/bash
只用-i时,由于没有分配伪终端,看起来像pipe执行一样。但是执行结果、命令返回值都可以正确获取。
docker exec -it name /bin/bash
使用-it时,则和我们平常操作console界面类似。而且也不会像attach方式因为退出,导致整个容器退出。
docker exec -t name /bin/bash
如果只使用-t参数,则可以看到一个console窗口,但是执行命令会发现由于没有获得stdin的输出,无法看到命令执行情况。
docker exec -d name /bin/sh a.sh
在后台执行一个进程。可以看出,如果一个命令需要长时间进程,使用-d参数会很快返回。程序在后台运行。
docker inspectdocker inspect 465c60612e5c
可以分层级显示一个镜像或容器的信息
安装常见容器dockeruidocker run -d -p
--privileged -v /var/run/docker.sock:/var/run/docker.sock dockerui/dockerui
gitlib/r/sameersbn/gitlab/
/articles/bYbi2mJ
mysqldocker search mysql
docker pull mysql
docker run --name xmysql-db -e MYSQL_ROOT_PASSWORD=root -d -p
-v /data/mysql_data/:/var/lib/mysql mysql
mongodbdocker pull mongo
docker run --name xmongo-db -p
-v /data/mongo_data:/data/db -d mongo
cp -rf entrypoint.sh /data/db
#将文件拷贝到宿主机的~/data目录下
vim entrypoint.sh
#宿主机上修改该文件
在exec gosu mongodb &$@&之前加一行
set -- &$@& & --auth&
cp -rf /data/db/entrypoint.sh .
#将修改完的entrypoint.sh文件覆盖根目录下的entrypoint.sh文件
#进入mongo操作数据库
#使用admin数据库
var schema = db.system.version.findOne({&_id& : &authSchema&})
#找出mongo认证的版本
schema.currentVersion = 3
#设置版本为3(默认为5)
db.system.version.save(schema)
#如果不设置这一段,在登录的时候会报错:/questions//mongodb-cr-authentication-failed
db.createUser({user:&admin&,pwd:&admin&,roles: [{role: &root&,db: &admin&}]});#创建一个管理员账户
db.auth('admin','admin')
#测试认证,如果返回1,代表认证成功
#退出mongo客户端
#退出mongodb容器
jenkinsdocker pull jenkins
chown 1000 /data/jenkins_data/
docker run --name xjenkins -d -p
-v /data/jenkins_data:/var/jenkins_home --env JAVA_OPTS=&-Duser.timezone=Asia/Shanghai -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=1024m& -d jenkins
docker pull elasticsearch
docker run --name xelastic-search -d -p
-v /data/esdata:/usr/share/elasticsearch/data elasticsearch
tomcatdocker pull tomcat
docker run --name xtomcat -d -v /data/tomcat/webapps/:/usr/local/tomcat/webapps/ -p
常见问题mac下,docker images存放在什么位置呢/Users/{YourUserName}/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
怎么判断虚拟云终端是不是容器呢cat /proc/1/environ
cat /proc/1/cgroup
扫一扫分享到微信
docker容器,怎么使用?
,才能进行回答
一个问题只能回答一次,请&nbsp点击此处&nbsp查看你的答案
3人关注了此问题转载请注明出处
我们运行docker容器的时候,使用了-d参数,把容器在后台运行后。
这个时候,我们使用docker ps命令,我们就可以知道哪些程序在后台运行。
我们要怎么进入到docker容器呢?
1:使用docker attach命令
docker attach db3 或者 docker attach d48b21a7e439
db3是后台容器的NAMES,d48b21a7e439是容器的进程ID &CONTAINER ID
然后就进去了这个容器的ssh界面。
但是它有一个缺点,只要这个连接终止,或者使用了exit命令,容器就会退出后台运行
2:使用docker exec命令
这个命令使用exit命令后,不会退出后台,一般使用这个命令,使用方法如下
docker exec -it db3 /bin/sh 或者 docker exec -it d48b21a7e439 /bin/sh
db3是后台容器的NAMES,d48b21a7e439是容器的进程ID &CONTAINER ID
&/bin/sh 是固定写法
它也能进入这个容器
阅读(...) 评论()}

我要回帖

更多关于 docker进入运行的容器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信