Questions tagged «docker»

Docker是构建和运行容器的工具。接受有关Dockerfile,操作和架构的问题。有关在生产环境中运行docker的问题可能会在ServerFault(https://serverfault.com/)上找到更好的响应。docker标签很少单独使用,通常与docker-compose和kubernetes等其他标签搭配使用。

3
Dockerignore:忽略文件和Dockerfile之外的所有内容
因此,主要目的是将胖子罐应用程序码头化并放入Elasticbeanstalk中。问题在于上下文。如果实际上我只需要一个jar文件,那么将大量上下文添加到Docker中有点愚蠢。 我一直在玩.dockerignore文件,但是迷路了。我试图使用gitignore否定,但它不起作用。 * !Dockerfile */ !target/ target/* !target/*.jar 正则表达式中也存在该问题,但似乎不支持复杂的正则表达式。 ^((?!Dockerfile).)*$ 我也尝试过在stackoverflow中搜索,而这两个都是我发现的: .dockerignore中的异常 有没有一种方法可以否定.dockerignore中的模式? 这个问题可能与第二个问题类似,但是我认为这略有不同,因为在这里,我只想在上下文中包含一个文件。 任何帮助将不胜感激。
89 docker 

4
在Docker中将数据添加到现有命名卷的正确方法是什么?
我以旧的方式使用Docker和卷容器: docker run -d --name jenkins-data jenkins:tag echo "data-only container for Jenkins" 但是现在我通过创建命名卷更改为新方法: docker volume create --name my-jenkins-volume 我将此新卷绑定到新的Jenkins容器。我只剩下一个文件夹,其中有/var/jenkins_home我以前的jenkins容器的文件夹。(通过使用docker cp)现在,我要用该文件夹的内容填充新的命名卷。 我可以复制该文件夹的内容到/var/lib/jenkins/volume/my-jenkins-volume/_data吗?
88 docker 

13
Docker-容器未运行
我完全是Docker的新手。我试图像下面那样启动一个退出的容器, 我使用列出了所有可用的容器docker ps -a。它列出了以下内容: 我输入了以下命令来启动处于退出阶段的容器,然后进入该图像的终端。 docker start 79b3fa70b51d docker exec -it 79b3fa70b51d /bin/sh 它抛出以下错误。 FATA[0000] Error response from daemon: Container 79b3fa70b51d is not running 但是当我使用启动容器时docker start 79b3fa70b51d。如果一切正常,它将容器ID作为输出输出。我不确定是什么原因导致此错误。关于原因的任何想法和建议对我将大有帮助。提前致谢。

7
从linux样式路径转换时,Docker装入的卷在Windows路径的末尾添加; C
尝试在Windows上安装Docker映像时,我发现了一些有趣的怪异现象。 我创建了一个.sh脚本,该脚本会装载项目文件夹以运行我们的开发人员环境映像。我希望每个开发人员都可以运行一个脚本,而不管他们的计算机如何。它所做的只是在当前项目文件夹下运行docker。 #!/usr/bin/env bash docker run -it --rm -v D:\my\project\folder:/wkDir $IMAGE_TAG yarn dev 运行正常。现在的计划是从中调用此脚本npm,因此我希望相对于当前文件夹可以工作。让我们尝试另一个版本。 docker run -it --rm -v $PWD:/wkDir $IMAGE_TAG yarn dev 失败: C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Mount denied: The source path "D:/my/project/folder;C" doesn't exist and is not known to Docker. 笏。有什么;C和它是在哪里来的呢? 所以我这样做echo $PWD给了我/d/my/project/folder。 有趣的是,所以$PWD将其解析为linux路径格式的正确路径,并且似乎docker试图将其转换为正确的Windows路径,除非这个;C出现在任何地方。而且\是/... 这到底是怎么回事? 我在VSCode的终端git …
88 docker 

5
Docker在上下文之外遵循符号链接
另一个Docker符号链接问题。我有一堆文件要复制到我的所有Docker构建中。我的目录结构是: parent_dir - common_files - file.txt - dir1 - Dockerfile - symlink -> ../common_files 在上面的示例中,当我在dir1中进行docker构建时,我希望将file.txt复制过来。但是我不想维护file.txt的多个副本。每此链接,作为搬运工版本0.10,码头工人的作品必须 按照容器根目录内的符号链接获取ADD构建说明。 但是当我在Dockerfile中使用以下任一行进行构建时,我没有得到这样的文件或目录: ADD symlink /path/dirname 要么 ADD symlink/file.txt /path/file.txt 安装选项不会为我解决(跨平台...)。我尝试tar -czh . | docker build -t没有成功。 有没有一种方法可以使Docker遵循符号链接并将common_files / file.txt复制到已构建的容器中?

8
无法建立特定的Dockerfile
我能够构建一个像 docker build -t deepak/ruby . 但是对于未命名的Dockerfile Dockerfile # DOCKER-VERSION 0.4.8 FROM deepak/ruby MAINTAINER Deepak Kannan "deepak@example.com" RUN ./bin/rails s 让我们说这是Dockerfile.app 我们建立的 docker build -t deepak/app Dockerfile.app 然后我得到了错误 Uploading context 0 bytes Error build: EOF EOF
88 docker 

9
使用带有CI的docker-compose-如何处理退出代码和守护程序链接的容器?
现在,我们的Jenkins代理为我们的每个Rails项目生成一个docker-compose.yml,然后运行docker-compose。docker-compose.yml具有一个主要的“ Web”容器,其中包含rbenv和我们所有其他的Rails依赖项。它链接到包含测试Postgres DB的数据库容器。 问题出在我们需要实际运行测试并生成退出代码时。仅当测试脚本返回exit 0时,我们的CI服务器才会部署,但是docker-compose始终返回0,即使其中一个容器命令失败。 另一个问题是,即使Web容器完成了运行测试之后,DB容器也会无限期地运行,因此docker-compose up永远不会返回。 有什么方法可以在此过程中使用docker-compose吗?我们将需要能够运行容器,但是在Web容器完成后退出并返回其退出代码。现在,我们使用docker手动启动数据库容器,并使用--link选项运行Web容器。

6
如何从主机外部(同一网络)连接到Docker容器[Windows]
我已经创建了我的第一个Docker容器,它使用Go运行服务器,但是无法从主机外部访问它。我刚刚开始使用docker,所以我在这里有点迷路了。 因此,我有一个非常简单的Go代码来启动服务器,我已经构建了Docker映像,该映像安装了Go并在Linux基本映像中构建了代码。我在端口8080上运行服务器,因此我将该端口公开给运行容器的主机,如下所示: docker run -p 8080:8080 dockertest 那行得通,我可以通过Docker的机器IP(启动时出现在Docker Quickstart Terminal上的机器IP)访问服务器,问题是我无法从主机外部访问我托管的网站,所以如果我尝试在手机上打开相同的IP地址,只会给我一个错误:该网页不可用(ERR_CONNECTION_TIMED_OUT)。 我也尝试过这样指定IP: docker run -p 192.168.0.157:8080:8080 dockertest 但是当我这样做时,我既不能通过docker机器的IP也不能通过上面的命令行中的指定IP来访问网站。我也不确定我应该使用该计算机的IP在该命令中写入哪个IP,我也尝试了127.0.0.1(localhost),但结果却是相同的:无法通过任何方式访问该网站知识产权。 我已经搜索了这个问题,发现了许多StackOverflow问题,但都没有帮助我解决问题,大多数问题都针对Linux或Mac,因此该解决方案不适用于我的情况。 另外,我可以在计算机上运行Go代码,并通过计算机的IP从同一网络中的另一台设备访问网站。我不明白为什么在docker机器上运行它时无法访问它,我想到它可能与IP转发有关,但我是网络领域的一个完全菜鸟。我主要是一名Web开发人员,几乎没有本地经验。

12
导入data.sql MySQL Docker容器
如果我有一个data.sql,如何将数据库导入到我的mysql docker容器中?如何导入数据库数据。在码头工人化的世界中,这增加了一层复杂性。请一些方法。 这是我的docker-compose.yml: nginx: build: ./nginx/ container_name: nginx-container ports: - 80:80 links: - php volumes_from: - app-data php: build: ./php/ container_name: php-container expose: - 9000 links: - mysql volumes_from: - app-data app-data: image: php:7.0-fpm container_name: app-data-container volumes: - ./www/html/:/var/www/html/ command: "true" mysql: image: mysql:latest container_name: mysql-container ports: - 3306:3306 volumes_from: …
87 mysql  docker 

4
docker容器SSL证书
是否有任何优雅的方法将ssl证书添加到来自docker pull的映像中? 我正在寻找一种将文件添加到/ etc / ssl / certs并运行update-ca-certificates的简单且可复制的方式。(这应该涵盖ubuntu和debian映像)。 我在CoreOS上使用docker,而coreos机器信任所需的ssl证书,但docker容器显然仅具有默认值。 我尝试过使用docker run --entrypoint=/bin/bash,然后添加cert并运行update-ca-certificates,但这似乎会永久覆盖入口点。 我现在也想知道,/etc/ssl/certs从主机副本安装到容器上是否会更优雅?这样做将隐式允许容器信任与主机相同的事物。 我正在使用一个烦人的代理程序,该代理程序会放弃所有的:(。这会破坏SSL并使容器有点奇怪。

2
在Docker-Compose中禁用一个容器的日志记录
我有一个使用Docker compose启动的Web应用程序,我想禁用所有日志记录(或者至少将其打印到syslog而不是文件中)。 当我的Web应用程序运行时,它可以在启动时快速生成一个11GB的日志文件,因此这会非常快地耗尽我的磁盘空间。 我知道普通docker的run命令都有日志选项,但是在Docker Compose中,我使用 Docker组成 在应用程序文件夹中启动我的应用程序。我该如何启用此功能?我看不到在线上任何地方的特定案例。


18
无法为COPY创建docker镜像失败:stat / var / lib / docker / tmp / docker-builder错误
我想创建一个码头工人形象。这是我的工作目录:Dockerfile.in test.json test.py 这是我的Dockerfile: COPY ./test.json /home/test.json COPY ./test.py /home/test.py RUN python test.py 当我启动此命令时: docker build -f Dockerfile.in -t 637268723/test:1.0 . 它给了我这个错误: `Step 1/5 : COPY ./test.json /home/test.json ---> Using cache ---> 6774cd225d60 Step 2/5 : COPY ./test.py /home/test.py COPY failed: stat /var/lib/docker/tmp/docker-builder428014112/test.py: no such file or directory` 谁能帮我?

11
码头工人错误:/var/run/docker.sock:没有这样的文件或目录
我是Docker的新手。我有一个将数据加载到impala中的shell脚本,并且我想要运行的docker文件构建映像并运行容器。我在Mac上,安装了boot2docker并DOCKER_HOST设置了环境。 bash-3.2$ docker info Containers: 0 Images: 0 Storage Driver: aufs Root Dir: /mnt/sda1/var/lib/docker/aufs Dirs: 0 Execution Driver: native-0.2 Kernel Version: 3.15.3-tinycore64 Debug mode (server): true Debug mode (client): false Fds: 10 Goroutines: 10 EventsListeners: 0 Init Path: /usr/local/bin/docker Sockets: [unix:///var/run/docker.sock tcp://0.0.0.0:2375] 我正在尝试使用以下方法安装预构建的映像: sudo docker pull busybox 我收到此错误: sudo docker …

6
如何配置Docker端口映射以将Nginx用作上游代理?
更新二 现在是2015年7月16日,情况又发生了变化。我从Jason Wilder找到了这个自动魔术容器: https://github.com/jwilder/nginx-proxy它可以解决这个问题,只要将它带到docker run容器中即可。现在这是我用来解决此问题的解决方案。 更新资料 现在是2015年7月,关于联网Docker容器的情况已经发生了巨大变化。现在有许多不同的产品(以多种方式)解决了这个问题。 您应该使用这篇文章对docker --link服务发现的方法有一个基本的了解,它几乎是最基本的,运作良好,并且实际上比大多数其他解决方案需要更少的花式跳舞。它的局限性在于,很难在任何给定群集中的单独主机上联网容器,并且一旦联网就无法重新启动容器,但是确实提供了一种快速且相对容易的方式来在同一主机上联网容器。这是了解您可能要使用的软件实际上是在做什么的一种好方法。 此外,您可能还需要查看Docker的新生network,Hashicorp的consul,Weaveworks weave,Jeff Lindsay的progrium/consul&gliderlabs/registrator和Google的Kubernetes。 另外还有CoreOS利用的产品etcd,fleet和flannel。 如果您真的想开个聚会,可以启动一个集群来运行Mesosphere或Deis或Flynn。 如果您是网络新手(像我一样),那么您应该拿起老花镜,在Wi-Hi-Fi上弹出“用星星画天空-最好的Enya”,然后喝点啤酒-这将是过一会儿,您才真正了解要执行的操作。提示:你试图实现一个Service Discovery Layer在你的Cluster Control Plane。这是度过一个星期六晚上的好方法。 这很有趣,但是我希望我能花点时间在开始潜水之前花一些时间来更好地学习网络方面的知识。我最终从仁慈的《数字海洋教程》中找到了几篇文章:Introduction to Networking Terminology和Understanding ... Networking。我建议在潜水之前先阅读几次。 玩得开心! 原始帖子 我似乎无法掌握Docker容器的端口映射。具体来说,如何将请求从Nginx传递到另一个容器,侦听同一服务器上的另一个端口。 我有一个Nginx容器的Dockerfile像这样: FROM ubuntu:14.04 MAINTAINER Me <me@myapp.com> RUN apt-get update && apt-get install -y htop git nginx ADD sites-enabled/api.myapp.com /etc/nginx/sites-enabled/api.myapp.com ADD sites-enabled/app.myapp.com /etc/nginx/sites-enabled/app.myapp.com …
86 nginx  docker 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.