我通过运行此命令为Tomcat提取了官方Docker镜像.
docker run -it --rm tomcat:8.0
Run Code Online (Sandbox Code Playgroud)
通过使用它作为基本图像,我需要在tomcat webapps文件夹中构建包含war文件的新图像.我像这样创建了Dockerfile.
From tomcat8
ADD warfile /usr/local/tomcat
Run Code Online (Sandbox Code Playgroud)
当我通过构建映像运行此Dockerfile时,我无法看到Tomcat首页.
任何人都可以告诉我如何将我的warfile添加到官方Tomcat图像webapp文件夹.
我们来举个例子吧.
以下是VOLUME该指令nginx的图像:
VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"]
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
当您启动容器时,这些目录是否会显示在我的主机上?当我停止我的容器时,目录将保留?
如果我的主机中已存在某些(或所有)这些目录,会发生什么?例如,假设图像/etc/nginx在容器目录中附带了一个默认配置文件/etc/nginx,我的主机上也有一个配置文件.当容器启动时,哪些文件将获得优先权?
-v /host/dir:container/dir和之间的关键区别是VOLUME什么?
参考文献:
我想在docker容器中运行Jenkins实例.
我希望Jenkins本身能够将docker容器作为从属设备来运行测试.
似乎最好的方法是使用
docker run -v /var/run.docker.sock:/var/run/docker.sock -p 8080:8080 -ti my-jenkins-image
Run Code Online (Sandbox Code Playgroud)
在Dockerfile我使用的是
FROM jenkins
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt
USER root
RUN apt-get update && apt-get install -y docker.io
RUN usermod -aG docker jenkins
USER jenkins
Run Code Online (Sandbox Code Playgroud)
如果我在正在运行的容器中启动一个bash会话并运行docker info我的图像,我得到了
$ docker info
FATA[0000] Get http:///var/run/docker.sock/v1.18/info: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
Run Code Online (Sandbox Code Playgroud)
如果我以root身份运行bash会话
docker exec -u 0 -ti cocky_mccarthy bash
root@5dbd0efad2b0:/# docker info
Containers: 42
Images: …Run Code Online (Sandbox Code Playgroud) 我有以下Dockerfile:
# Pull from CentOS RPM Build Image
FROM ubuntu
# Update the image
RUN apt-get update -y
RUN apt-get install lightdm -y
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是当我用这个容器构建时docker build -t dumbcontainer .,在某些时候我会得到一个用于选择键盘布局的交互式菜单:
Adding system user `lightdm' (UID 106) ...
Adding new user `lightdm' (UID 106) with group `lightdm' ...
Creating home directory `/var/lib/lightdm' ...
usermod: no changes
usermod: no changes
usermod: no changes
Adding group `nopasswdlogin' (GID 109) ...
Done.
Setting up libnih-dbus1:amd64 (1.0.3-4.3ubuntu1) ...
Setting up mountall (2.54ubuntu1) ...
Setting up …Run Code Online (Sandbox Code Playgroud) 我正试图用Nginx和PHP7在Docker上设置Magento2.
我已经按照PHP7 Docker镜像的建议添加了一个自定义的php.ini文件.我可以从phpinfo.php看到它正在加载我的php.ini文件,但我的更新都没有.

它应该是:
memory_limit = 2G
max_execution_time = 800
Run Code Online (Sandbox Code Playgroud)
我检查了PHP容器,我可以看到php.ini文件中有正确的设置,或者我认为?
$ docker exec -it mymagento2docker_php_1 /bin/bash
# cat /usr/local/etc/php/php.ini
; This file is created automatically by the docker build
memory_limit = 2G
max_execution_time = 800
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?以下是一些更多细节,提前感谢!
.
??? docker-compose.yml
??? index.php
??? magento2
? ??? [DIRECTORIES & FILES OMMITED]
?
??? nginx
? ??? Dockerfile
? ??? default.conf
? ??? nginx.conf
??? output.txt
??? php
??? Dockerfile
??? config
??? php.ini
Run Code Online (Sandbox Code Playgroud)
nginx:
build: ./nginx/
ports: …Run Code Online (Sandbox Code Playgroud) 该文档没有详细说明该主题.它说:
最小化层数
在Docker 17.05之前,甚至更多,在Docker 1.10之前,最小化图像中的层数非常重要.以下改进减轻了这种需求:
在Docker 1.10及更高版本中,只有RUN,COPY和ADD指令可以创建图层.其他指令创建临时中间图像,不再直接增加构建的大小.
Docker 17.05及更高版本增加了对多阶段构建的支持,允许您仅将所需的工件复制到最终图像中.这允许您在中间构建阶段中包含工具和调试信息,而不会增加最终图像的大小.
看起来最新的Docker版本无法解决处理多个层的问题.他们宁愿努力减少最终图像中的数量.最重要的是,文档并没有说明为什么很多层都不好.
我知道42层的AUFS限制.对于广泛使用的图像来说保持较小的层数是有意义的,因为它有助于构建在其上的其他图像符合限制.但是,还有其他存储驱动程序和图像用于其他目的.
保持图像较小也是一个明显的原因 - 它们占用磁盘空间和网络带宽.但是,我不认为链接RUN语句并因此将多个层压缩为一个有助于一般.如果不同的RUN更新文件系统的不同部分,则一层和多层的大小应该大致相同.
另一方面,许多层允许更快地使用缓存和重建图像.它们也是平行拉动的.
我在一个拥有私有Docker注册表的小团队中工作.我们永远不会满足42层限制,主要关注性能和开发速度.
如果是这样,我应该最小化泊坞窗层的数量吗?
我有一个简单的 Dockerfile:
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install -y wget && rm -rf /var/lib/apt/lists/*
RUN wget \
https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
&& mkdir /root/.conda \
&& bash Miniconda3-latest-Linux-x86_64.sh -b \
&& rm -f Miniconda3-latest-Linux-x86_64.sh \
&& echo PATH="/root/miniconda3/bin":$PATH >> .bashrc \
&& exec bash \
&& conda --version
RUN conda --version
Run Code Online (Sandbox Code Playgroud)
它不能被建造。在最后一步,我得到了/bin/sh: 1: conda: not found......
第一次出现conda --version没有引发错误,这让我想知道这是一个PATH问题吗?
我想RUN在这个 Dockerfile 中有另一个条目,我将在其中安装包conda install ...
最后我想要CMD ["bash", "test.py"]条目,以便在执行docker run此图像时它会自动运行一个简单的 …
我听说 docker 在 linux 中不需要单独的操作系统,因为它与主机操作系统共享,但是在 hyper-v Windows 中它可以运行 Windows 操作系统,因为它可以超 linux 虚拟机,因此可以在其上运行 linux 软件。
但是,我FROM对 dockerfile 中的阶段感到困惑,所有指南都这样说:
FROM ubuntu:18.04
cp . /usr/local/bin
RUN make
CMD /usr/local/bin/youapp
Run Code Online (Sandbox Code Playgroud)
我可以理解这一步,首先你需要一个操作系统,然后你部署你的应用程序;最后你运行你的应用程序或其他什么。
但是 FROM 阶段的真正含义是什么?
它总是需要操作系统吗?nginx docker 映像中是否有操作系统?
如果我想构建自己的应用程序,我会编写它、编译它、运行它;但是我自己的应用程序需要操作系统吗?如果不是,我应该在FROM阶段写什么?
我得到了这张图片,它说 docker 容器不需要 os,但使用主机 os,现在 docker build 总是需要一个 os

我正在尝试在 docker 容器中运行 typescript express.js。运行docker后,我收到以下错误:
> ts-node-dev src/app.ts
Using ts-node version 8.10.1, typescript version 3.9.2
TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
at Object.watch (fs.js:1441:11)
at add (/app/node_modules/filewatcher/index.js:74:34)
at /app/node_modules/filewatcher/index.js:93:5
at FSReqCallback.oncomplete (fs.js:176:5)
Run Code Online (Sandbox Code Playgroud)
我的 Dockerfile:
FROM node:alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm","start"]
Run Code Online (Sandbox Code Playgroud)
和 package.json 文件:
{
"name": "app-name",
"version": "1.0.0",
"description": "Init master",
"main": "src/app.ts",
"scripts": {
"build": "./node_modules/.bin/tsc",
"start": …Run Code Online (Sandbox Code Playgroud) 我是 Docker 的新手,并尝试使用纯 html 构建 docker 映像,但我收到此错误消息,说 无法使用前端 dockerfile.v0 解决:无法读取 dockerfile:open /var/lib/docker/tmp/buildkit-mount602954594 /Dockerfile: 没有那个文件或目录
我的文件夹目录是这样的
C:\Users\hailey\Desktop\GitTest
|- Dockerfile.txt
|- README.md
|- testHelloWorld.html
Run Code Online (Sandbox Code Playgroud)
在 Dockerfile 里面,我有
FROM ubuntu
WORKDIR C/Users/hailey/Desktop/GitTest
COPY testHelloWorld.html .
EXPOSE 8080
CMD ["html","testHelloWorld.html"]
Run Code Online (Sandbox Code Playgroud)
我做了我的命令 docker build 。在目录 C:\Users\hailey\Desktop\GitTest 内。然后得到
[+] Building 0.1s (2/2) FINISHED
=> [internal] load build definition from Dockerfile
=> => transferring dockerfile: 2B
=> [internal] load .dockerignore
=> => transferring context: 2B
failed to solve with frontend dockerfile.v0: failed to read dockerfile: …Run Code Online (Sandbox Code Playgroud) docker ×10
dockerfile ×10
alpine-linux ×1
anaconda ×1
apt-get ×1
boot2docker ×1
interactive ×1
jenkins ×1
layer ×1
miniconda ×1
nginx ×1
node.js ×1
optimization ×1
php ×1
php-ini ×1
python ×1
typescript ×1
ubuntu ×1