我正在尝试将主机目录挂载到Docker容器中,以便在主机上完成的任何更新都会反映到Docker容器中.谷歌搜索和阅读Docker音量链接后,我无法成功.
我在哪里做错了什么.这是我做的:
kishore$ cat Dockerfile
FROM ubuntu:trusty
RUN apt-get update
RUN apt-get -y install git curl vim
CMD ["/bin/bash"]
WORKDIR /test_container
VOLUME ["/test_container"]
Run Code Online (Sandbox Code Playgroud)
kishore$ tree
.
??? Dockerfile
??? main_folder
??? tfile1.txt
??? tfile2.txt
??? tfile3.txt
??? tfile4.txt
1 directory, 5 files
kishore$ pwd
/Users/kishore/tdock
Run Code Online (Sandbox Code Playgroud)kishore$ docker build --tag=k3_s3:latest .
Uploading context 7.168 kB
Uploading context
Step 0 : FROM ubuntu:trusty
---> 99ec81b80c55
Step 1 : RUN apt-get update
---> Using cache
---> 1c7282005040
Step 2 : RUN apt-get -y …
Run Code Online (Sandbox Code Playgroud)Run Code Online (Sandbox Code Playgroud) 我从dockerfile构建了一个docker镜像.我看到图像已成功构建,但我该怎么做呢?它不应该作为容器运行吗?
码头工人的新手可能是对我的误解,任何帮助都会很棒.
我正在尝试更改图像的存储库名称:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
server latest d583c3ac45fd 26 minutes ago 685.5 MB
Run Code Online (Sandbox Code Playgroud)
因此,我想将名称更改server为类似myname/server:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
myname/server latest d583c3ac45fd 26 minutes ago 685.5 MB
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个在前台运行Apache服务的容器.我希望能够从另一个shell访问容器,以便在其中"查找"并检查文件.目前,如果我附加到容器,我只是看着Apache守护进程,无法运行任何命令.
是否可以将另一个tty附加到正在运行的容器上?可能,我可以利用Docker实际上只是环绕LXC容器这一事实?我试过sudo lxc-console -n [container-id] -t [1-4]但似乎只有一个tty可用,那就是运行apache守护进程的tty.也许有一种方法可以在构建期间启用多个lxc控制台?
如果可能的话,我宁愿不使用openssh服务配置和构建容器.
假设我已经取消了正式的mysql:5.6.21图像.
我通过创建几个docker容器来部署此映像.
这些容器已运行一段时间,直到MySQL 5.6.22发布.mysql的官方形象:5.6使用新版本更新,但我的容器仍然运行5.6.21.
如何将图像中的更改(即升级MySQL发行版)传播到我现有的所有容器?Docker的正确方法是什么?
我想全面了解Docker容器的运行时性能开销.我发现网络的参考传闻速度慢了~100μs.
我还发现运行时成本的参考值"可以忽略不计"和"接近于零",但我想更准确地了解这些成本是多少.理想情况下,我想知道Docker正在以性能成本和抽象的东西进行抽象而没有性能成本.网络,CPU,内存等
此外,如果存在抽象成本,是否有办法绕过抽象成本.例如,也许我可以在Docker中直接安装磁盘.
我使用成功炮击了Docker容器
docker exec -i -t 69f1711a205e bash
Run Code Online (Sandbox Code Playgroud)
现在我需要编辑文件,里面没有任何编辑器:
root@69f1711a205e:/# nano
bash: nano: command not found
root@69f1711a205e:/# pico
bash: pico: command not found
root@69f1711a205e:/# vi
bash: vi: command not found
root@69f1711a205e:/# vim
bash: vim: command not found
root@69f1711a205e:/# emacs
bash: emacs: command not found
root@69f1711a205e:/#
Run Code Online (Sandbox Code Playgroud)
如何编辑文件?
我正在尝试使用Dockerfiles,我想我理解大部分逻辑.但是,我没有看到在这种情况下"暴露"和"发布"端口之间的区别.
我首先看到的所有教程都包含EXPOSEDockerfile中的命令:
...
EXPOSE 8080
...
Run Code Online (Sandbox Code Playgroud)
然后他们从这个Dockerfile构建一个图像:
$ docker build -t an_image - < Dockerfile
Run Code Online (Sandbox Code Playgroud)
然后在运行映像时发布与上面相同的端口:
$ docker run -d -p 8080 an_image
Run Code Online (Sandbox Code Playgroud)
或使用发布所有端口
$ docker run -d -P an_image
Run Code Online (Sandbox Code Playgroud)
暴露Dockerfile中的端口有什么意义,如果它仍然会被发布?是否需要首先公开一个端口,而不是稍后发布它?实际上,我想在创建映像时指定我将在Dockerfile中使用的所有端口,然后再不打扰它们,只需运行它们:
$ docker run -d an_image
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我创建了一个容器,-d因此它不是交互式的.
docker run -d shykes/pybuilder bin/bash
Run Code Online (Sandbox Code Playgroud)
我看到容器已退出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6c45e8cc5f0 shykes/pybuilder:latest "bin/bash" 41 minutes ago Exited (0) 2 seconds ago clever_bardeen
Run Code Online (Sandbox Code Playgroud)
现在我想在机器上运行偶尔的命令并退出.只是为了得到答复.
我试着启动机器.我试着附上.我以为我可以run用容器打电话,但似乎不允许这样做.使用start似乎只是运行然后快速存在.
退出后我想回到交互模式.
我试过了:
docker attach d6c45e8cc5f0
Run Code Online (Sandbox Code Playgroud)
但我得到:
2014/10/01 22:33:34 You cannot attach to a stopped container, start it first
Run Code Online (Sandbox Code Playgroud)
但是,如果我开始它,它无论如何都会退出.抓住22.我无法获胜.
我将Docker版本更新为后0.8.0,输入时收到错误消息sudo docker version:
Client version: 0.8.0
Go version (client): go1.2
Git commit (client): cc3a8c8
2014/02/19 12:54:16 Can't connect to docker daemon. Is 'docker -d' running on this host?
Run Code Online (Sandbox Code Playgroud)
我按照指示操作并输入命令sudo docker -d,我得到了这个:
[/var/lib/docker|2462000b] +job initserver()
[/var/lib/docker|2462000b.initserver()] Creating server
open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory[/var/lib/docker|2462000b] -job initserver() = ERR (1)
2014/02/19 12:55:57 initserver: open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?