Tag: Linux容器

如何在Docker容器中生成与主机用户具有相同所有者的文件

我使用docker容器在git仓库中完成一些开发任务。 我使用的容器是专门为每个项目构build的,每个贡献者只需要docker CLI即可完成任务。 糟糕的一面是容器以root身份运行,一旦容器停止,生成的文件就被root所拥有,这很糟糕。 在退出之前,我不能更改容器中的所有者,因为容器/ etc / passwd文件中没有所需的用户。 我会在编译docker镜像之前在容器中创build一个用户,但是这个容器不会是通用的(对于我的所有开发团队来说)。 最好的做法是什么?

Docker容器作为虚拟桌面克隆

我发现许多人已经用Guacamole或其他工具设置了Docker容器,允许它们远程访问GUI,就好像容器是远程Linux桌面一样。 我的一位朋友与一位教授交谈,他告诉他,他们通过ubuntu / rdp docker容器为学生设置了Ubuntu桌面访问。 对于有效打包的克隆桌面,这是一个有吸引力的概念,因为您不需要客户操作系统的50个副本,但是如果没有像VDI解决scheme那样的连接代理或像KVM设置那样的hypervizer控制台,您将如何pipe理这样的群集? 您是否简单地使用标准docker(或swarm)pipe理工具来pipe理容器本身,然后使用一些单独的远程客户端来进行实际的远程控制连接? 我目前正在阅读Docker,但不清楚:如果每个桌面都是一样的,那么说Firefox,LibreOffice等。有没有什么办法通过共享这些资源来获得效率呢? 例如,是否有一个容器与其他人都连接到的资源…或者像OS一样共享在较低的级别上? 寻找任何方式来获得效率,降低服务器上所有组合机器的整体CPU,RAM等。 真的在寻找除了在每个容器中的同一事物的单独副本以外的任何东西。 我看到有像Hatchway这样的容器共享持久性存储的解决scheme。 是否还有其他问题造成的容器无状态,这不解决? 另外,我还看到了一些方法,人们已经拼凑了docker集装箱的互联网连接(如每个集装箱的IP),但是大多数较旧的post都让人感到沮丧。 现在有没有一种标准的或者喜欢的方式来做这样的事情? 或者,如果docker / containers是build立最有效的Linux远程桌面克隆的绝对错误的方法,我想知道哪个部分不能工作,所以我可以find正确的方法。

使用Docker时定制Guacamolelogin屏幕

注意:我不是一个Linux专家,所以你可能需要解释如何做的事情来帮助我解决这个问题。 我有一个新的安装Ubuntu 16.04 我使用本指南安装了Docker: https : //www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04 接下来,我使用本指南将鳄梨酱安装为Docker容器: https : //www.cb-net.co.uk/linux/running-guacamole-from-a-docker-container-on-ubuntu-16-04-lts- 16-10 / 鳄梨酱工作正常,一切都很好,但是我试图做一些自定义login屏幕,我似乎无法弄清楚如何。 我知道我需要在GUACAMOLE_HOME / extensions文件夹中放置一个包含我的guac-manifest.json定制(我已经拥有)的jar文件,通常情况下,它位于/ usr / share / tomcat8中。 但是这个文件夹(或任何tomcat文件夹)在我的系统上不存在。 据我所知,tomcat conf文件夹位于docker容器的INSIDE中。 我不完全确定如何在容器内部进行所需的更改,但是如果容器已更新/销毁,我希望自定义设置保持不变。 任何帮助我如何才能实现这一目标将不胜感激。

在非特权容器中挂载文件系统

我正在探索Linux内核。 在学习的时候我发现在super_block结构中增加了新的字段s_user_ns。 我知道这个字段被添加来保持新用户名空间的kuid和kgid,这将有助于挂载和其他文件系统操作。 要在用户名空间或非特权容器中挂载文件系统,我们可以使用bind挂载。 所以我的问题是什么是使用s_user_ns在用户命名空间或非特权容器中挂载文件系统的用例?

Docker错误在构buildDocker镜像时返回了非零代码:1

当我尝试构builddocker时,出现“/ bin / sh -c返回非零代码:1”的错误。 这是我创build的dockerfile FROM tomcat:7.0.82-jre8 WORKDIR /usr/local/tomcat COPY /app.war /usr/local/tomcat/webapps/app.war RUN apt-get update && apt-get -y upgrade && apt-get install -y dos2unix RUN unzip /usr/local/tomcat/webapps/app.war -d /usr/local/tomcat/webapps/app EXPOSE 8080 COPY tomcat-users.xml /usr/local/tomcat/conf/ COPY test1.xml /usr/local/tomcat/webapps/app/conf/services/ COPY doc.properties /usr/local/tomcat/webapps/app/conf/services/properties/ COPY springConfig.xml /usr/local/tomcat/webapps/app/conf/quartz/ COPY test.properties /usr/local/tomcat/webapps/app/conf ENV JAVA_OPTS="-Xms2G -Xmx2G" # Copy Entrypoint script in […]

两个容器之间的通信使用另一个容器

我正在运行连接到server_routernetworking(桥networking驱动程序)和连接到client_routernetworking(桥networking驱动程序)的docker客户端容器的docker服务器容器。 路由器容器连接到server_router和client_routernetworking。 我需要这种networking拓扑,其中服务器和客户端属于不同的dockernetworking,路由器能够连接服务器和客户端容器(可以路由服务器和客户端stream量的实际路由器)。 这是networking模拟所需要的,我在Docker容器而不是实际的计算机上运行模拟。 (正在使用的networking模拟器是使用Python控制的TCP实验自动化(TEACUP))。 用于创build设置的命令: docker network create server_router docker network create client_router docker run -itd –net client_router –name client ubuntu:14.04 docker run -itd –net server_router –name server ubuntu:14.04 docker run -itd –net server_router –name router ubuntu:14.04 docker network connect client_router router docker network inspect client_router docker network inspect server_router networking拓扑的表示 我能够ping路由器容器的客户端容器,反之亦然,也能够ping服务器容器从路由器容器,反之亦然(因为他们属于同一networking)。 但是我无法从客户端容器ping服务器容器,反之亦然。 ping命令不显示任何结果。 […]

密码:chsh:PAM:authentication失败

试图运行 RUN chsh -s /bin/bash www-data (dockerfile)我试图将其更改为/ bin / zsh,但仍然无法正常工作。 Docker文件太长,有文件https://hub.docker.com/r/alexcheng/magento2/~/dockerfile/ 结果: Password: chsh: PAM: Authentication failure The command '/bin/sh -c chsh -s /bin/bash www-data' returned a non-zero code: 1 / etc / passwd文件 / etc / passwd文件 root:x:0:0:root:/root:/bin/zsh daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/bin/zsh backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin […]

-su:/ dev / tty:没有这样的设备或地址

可以请有人向我解释为什么会发生这种情况? # su – someone -s /bin/bash -c "ls -la /dev/tty" crw-rw-rw- 1 nobody nogroup 5, 0 Dec 7 20:53 /dev/tty # BUT: # su – someone -s /bin/bash -c "echo hello > /dev/tty" -su: /dev/tty: No such device or address 我正在build立一个docker集装箱,里面有两个服务。 这些服务由Shell-Script开始: CMD ["./starter.sh"] 使用Dockerfile我已经将日志redirect到/dev/stderr或/dev/tty # None of the following works: RUN ln -sf […]

CronJob无法启动docker集装箱

我正在尝试使用cronjob运行容器,但是我的cron无法运行容器。 我有一个cron任务来调用启动一个容器的orchestrate.sh crontab -l 27 22 08 * * /tmp/compose/orchestrate.sh >> /var/log/composeerr.log #have a newline orchestrate.sh #!/bin/bash -v /usr/bin/docker run -d hello/helloworld:latest >> /somerror.log somerror.log有一个容器ID,但是主机上的docker ps没有显示它。 如果我在主机上运行命令/usr/bin/docker run -d hello/helloworld:latest >> /somerror.log ,它将容器启动。 我错过了什么?

无法在MAC主机上修改容器上的samba共享文件

我正在运行docker集装箱。 拱桥Linux在那里运行。 在容器内部,我有一些文件夹/文件,我想从我的MAC访问。 我正在使用samba共享将文件从容器共享到我的MAC。 到目前为止,它的工作,以便我可以看到的文件,浏览并打开它们。 问题是我无法修改它们,每次我尝试这样做,我都会被拒绝。 看到的权限说,我有我已经共享的文件夹的rwx ,但该文件夹内的文件只有r –权限。 (从容器内部查看) 在创build共享之前,我还创build了一个名为User1的新用户,并在使用mount_smbfs进行挂载时使用该用户 。 我的smb.conf有以下设置: [myshare] comment = development path = /tmp valid users = User1 browseable = yes writeable = yes guest ok = no create mask = 0775 directory mask = 0775 force user = User1