如果你看一下Docker的功能,其中大部分已经由LXC提供.
那么Docker添加了什么?为什么我会使用Docker而不是简单的LXC?
我不确定我是否在这里误解了一些东西,但似乎只能通过从图像创建一个新容器来设置端口映射.有没有办法将端口映射分配给现有的Docker容器?
我已经搜索了一段时间,但找不到分析Docker容器/卷的磁盘使用情况的方法.
我可以看到Docker需要12GB的文件系统:
2.7G /var/lib/docker/vfs/dir
2.7G /var/lib/docker/vfs
2.8G /var/lib/docker/devicemapper/mnt
6.3G /var/lib/docker/devicemapper/devicemapper
9.1G /var/lib/docker/devicemapper
12G /var/lib/docker
Run Code Online (Sandbox Code Playgroud)
但是,我怎么知道这是如何分布在容器上的呢?
我尝试通过运行附加到容器(新的v1.3命令)
docker exec -it <container_name> bash
Run Code Online (Sandbox Code Playgroud)
然后运行'df -h'来分析磁盘使用情况.它似乎有效,但不适用于使用'volume-from'的容器.
例如,我使用MongoDB的仅数据容器,称为"mongo-data".
当我运行docker run -it --volumes-from mongo-data busybox,然后df -h在容器内部,它说安装在/data/db(我的'mongo-data'仅数据容器)上的文件系统使用11.3G,但是当我这样做时du -h /data/db,它说它只使用2.1G.
那么,我如何分析容器/卷磁盘的使用情况呢?或者,在我的情况下,我如何找出'mongo-data'容器大小?
非常感谢,
在昨天有关Shocker的消息之后,似乎Docker容器中的应用程序不应该以root身份运行.我试图更新我Dockerfile创建一个应用程序用户,但是更改应用程序文件的权限(虽然仍然是root)似乎不起作用.我猜这是因为某些LXC权限未被授予root用户可能吗?
这是我的Dockerfile:
# Node.js app Docker file
FROM dockerfile/nodejs
MAINTAINER Thom Nichols "thom@thomnichols.org"
RUN useradd -ms /bin/bash node
ADD . /data
# This next line doesn't seem to have any effect:
RUN chown -R node /data
ENV HOME /home/node
USER node
RUN cd /data && npm install
EXPOSE 8888
WORKDIR /data
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)
非常简单,但是当我ls -l仍然拥有root时:
[ node@ed7ae33e76e1:/data {docker-nonroot-user} ]$ ls -l /data
total 64K
-rw-r--r-- 1 root root 383 Jun 18 20:32 Dockerfile …Run Code Online (Sandbox Code Playgroud) 我正在一个由Node提供支持的网站上工作.所以我创建了一个简单的Dockerfile,将我的站点文件添加到容器的FS,安装Node并在运行容器时运行应用程序,暴露私有端口80.
但是,如果我想更改该应用程序的文件,我已重建容器映像并重新运行它.这需要几秒钟.
是否有一种简单的方法来实现某种"实时同步",例如NFS,让我的主机系统的应用程序文件与正在运行的容器中的应用程序文件保持同步?
这样我只需重新启动它就可以应用更改,甚至更好,如果我使用类似的东西supervisor,它将自动完成.
基于Docker基于LXC的事实,我的建议是Docker容器从其主机操作系统共享各种资源.我担心的是CPU内核.这是一个场景:
a)因此,如果我在该主机上运行所有docker容器,它们是否会根据需要消耗CPU /内核,就像它们是作为主机操作系统上的正常安装的应用程序一样运行?
b)docker容器是否会使用自己的进程,并且其中包含的所有处理都将粘贴到该父进程的CPU核心?
c)如何指定一个docker容器来使用多个内核(例如4个).我看到有一个-C标志可以指向核心ID,但似乎没有选项指定容器随机选择N个核心.
KVM和Linux容器(LXC)有什么区别?对我来说,如果我们同时使用内核的"命名空间"和"控制组"功能,那么LXC也是在同一内核中创建多个虚拟机的一种方式.
我正在使用docker v1.2并且在启动容器时遇到了一些问题.容器在"docker run"之后退出.解决此类问题的最佳方法是什么?在AUFS和BTRFS下运行容器也有很大差异吗?
我正在尝试从LXC rootfs创建deb包,在创建它之后我想在任何计算机上安装该包.到目前为止,我实现了打包和安装deb软件包,但是在安装LXC软件包之后,我不能成为lxc的超级用户.当我使用"sudo"命令时,我收到此错误 .
sudo:有效的uid不是0,sudo是否安装了setuid root?
提前致谢.