我有一个从源代码下载和构建GTK的dockerfile,但以下行没有更新我的图像的环境变量:
RUN PATH="/opt/gtk/bin:$PATH"
RUN export PATH
Run Code Online (Sandbox Code Playgroud)
我读到我应该使用ENV来设置环境值,但以下指令似乎也不起作用:
ENV PATH /opt/gtk/bin:$PATH
这是我的整个Dockerfile:
FROM ubuntu
RUN apt-get update
RUN apt-get install -y golang gcc make wget git libxml2-utils libwebkit2gtk-3.0-dev libcairo2 libcairo2-dev libcairo-gobject2 shared-mime-info libgdk-pixbuf2.0-* libglib2-* libatk1.0-* libpango1.0-* xserver-xorg xvfb
# Downloading GTKcd
RUN wget http://ftp.gnome.org/pub/gnome/sources/gtk+/3.12/gtk+-3.12.2.tar.xz
RUN tar xf gtk+-3.12.2.tar.xz
RUN cd gtk+-3.12.2
# Setting environment variables before running configure
RUN CPPFLAGS="-I/opt/gtk/include"
RUN LDFLAGS="-L/opt/gtk/lib"
RUN PKG_CONFIG_PATH="/opt/gtk/lib/pkgconfig"
RUN export CPPFLAGS LDFLAGS PKG_CONFIG_PATH
RUN ./configure --prefix=/opt/gtk
RUN make
RUN make install
# running ldconfig after …Run Code Online (Sandbox Code Playgroud) 我一直在尝试通过创建自定义用户和数据库来为开发postgres实例设置容器.我正在使用官方的postgres docker图像.在文档中,它指示您在/docker-entrypoint-initdb.d/文件夹中插入一个bash脚本,以使用任何自定义参数设置数据库.
su postgres -c "createuser -w -d -r -s docker"
su postgres -c "createdb -O docker docker"
Run Code Online (Sandbox Code Playgroud)
FROM library/postgres
RUN ["mkdir", "/docker-entrypoint-initdb.d"]
ADD make_db.sh /docker-entrypoint-initdb.d/
Run Code Online (Sandbox Code Playgroud)
我从docker logs -f db(db是我的容器名称)得到的错误是:
createuser:无法连接到数据库postgres:无法连接到服务器:没有这样的文件或目录
似乎/docker-entrypoint-initdb.d/在postgres启动之前正在执行文件夹内的命令.我的问题是,如何使用官方postgres容器以编程方式设置用户/数据库?有没有办法用脚本执行此操作?
我创建了一个自定义 docker 映像并将其推送到 docker hub,但是当我在 CI/CD 中运行它时,它给了我这个错误。
exec /usr/bin/sh: exec format error
在哪里 :
Dockerfile
FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install -y software-properties-common
RUN apt-get install -y python3-pip
RUN pip3 install robotframework
Run Code Online (Sandbox Code Playgroud)
.gitlab-ci.yml
robot-framework:
image: rethkevin/rf:v1
allow_failure: true
script:
- ls
- pip3 --version
Run Code Online (Sandbox Code Playgroud)
输出
Running with gitlab-runner 15.1.0 (76984217)
on runner zgjy8gPC
Preparing the "docker" executor
Using Docker executor with image rethkevin/rf:v1 ...
Pulling docker image rethkevin/rf:v1 ...
Using docker image sha256:d2db066f04bd0c04f69db1622cd73b2fc2e78a5d95a68445618fe54b87f1d31f for rethkevin/rf:v1 with digest rethkevin/rf@sha256:58a500afcbd75ba477aa3076955967cebf66e2f69d4a5c1cca23d69f6775bf6a …Run Code Online (Sandbox Code Playgroud) 我在a中使用RUN指令Dockerfile来安装rpm
RUN yum -y install samplerpm-2.3
Run Code Online (Sandbox Code Playgroud)
但是,我想传递值"2.3"作为参数.我的RUN指令应该类似于:
RUN yum -y install samplerpm-$arg
Run Code Online (Sandbox Code Playgroud)
哪里 $arg=2.3
docker pull jaegertracing/jaeger-agent:latest
Jaeger 只是为了说明。但我的问题更笼统。上面的命令从 docker-hub 中提取docker-hublatest的版本jaeger-agent。
docker-hub 页面是:https://hub.docker.com/r/jaegertracing/jaeger-agent
我的问题是如何找到 的实际版本latest?
我查看了这里的标签,但没有太多信息: https ://hub.docker.com/r/jaegertracing/jaeger-agent/tags
我还尝试在拉取图像后进行操作inspect,但无法获得必要的详细信息。
docker image inspect jaegertracing/jaeger-agent:latest
我们可以从哪里获得这些信息?
在Docker Hub上指定自动构建时,我可以设置一些设置(Type("分支"或"标记")Name,Dockerfile Location和Docker Tag Name).但不幸的是,我没有找到任何文件.
我假设,当我选择Type'Branch'并输入a时Name,这是我正在使用的GitHub/BitBucket上的git存储库中的分支,这Docker Tag Name导致将标记分配给创建的图像.
我玩了一下,发现了一些我不清楚的事情 - 但我希望你能向我解释一下.
添加多个条目会导致只分配一个标记.我Docker Tag Name在第一个中使用了'Branch','master'和'/'以及'latest',在第二个中使用'v1'.但只有'v1'用作标签.
使用Type"标签"不会导致不同的结果.我认为如果用这个值标记git提交,这可能只会构建一个图像.这种类型是什么?
我一直在寻找能够将标签"最新"分配给最新版本的能力,并使用像v1,v2,v3等方案来进行旧版本的构建,就像我在本地构建图像时所做的那样.
泊坞中心官方网站已移到https://registry.hub.docker.com从https://hub.docker.com/.
如果我尝试docker pull从URL中的图像:docker pull registry.hub.docker.com/busybox它显示:
registry.hub.docker.com/busybox: this image was pulled from a legacy registry.
Important: This registry version will not be supported in future versions of docker.
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用docker pull registry.hub.docker.com/busybox.
它无法拉动图像.
使用时的情况相同 curl -k https://registry.hub.docker.com/v1/repositories/busybox/tags
当我将新图像推送到repo时,我希望它有两个标签,例如0.2和latest.这将允许总是通过使用latest标签和特定版本通过使用0.2标签来拉取最新图像版本.码头工具有可能吗?
有没有解决方法?我看到的唯一解决方案就是两次单独推动......
我在docker hub和docker cloud之间有一点混乱.我有Docker镜像,我需要在客户端服务器中安装并运行容器.我相信这可以使用docker hub完成,它允许在我的私有存储库中推送和拉出docker镜像.那么docker cloud的用途是什么?它是将图像存储在我自己的aws帐户中而不是存储在docker hub中吗?容器需要安装在客户端服务器中,那么我需要使用什么,docker hub或docker cloud?
作为bash脚本的一部分,我想检查docker hub上是否存在特别的docker image:tag组合.此外,它将是一个私人存储库.
即伪代码如下:
tag = something
if image:tag already exists on docker hub:
Do nothing
else
Build and push docker image with that tag
Run Code Online (Sandbox Code Playgroud) docker ×10
dockerhub ×10
bash ×2
docker-cloud ×1
dockerfile ×1
gitlab ×1
gitlab-ci ×1
postgresql ×1