想了解如何在docker容器中运行cron作业?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于dockercrontab的相关问题,此外,我们还将为您介绍关于5分钟教程:如何在Docker
想了解如何在 docker 容器中运行 cron 作业?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于docker crontab的相关问题,此外,我们还将为您介绍关于5 分钟教程:如何在 Docker 容器中运行 Nginx、Docker-如何在postgres容器中运行psql命令?、linux – 在Docker容器中运行预定的cron作业的解决方案?、linux – 如何在docker容器中运行cron作业的新知识。
本文目录一览:- 如何在 docker 容器中运行 cron 作业?(docker crontab)
- 5 分钟教程:如何在 Docker 容器中运行 Nginx
- Docker-如何在postgres容器中运行psql命令?
- linux – 在Docker容器中运行预定的cron作业的解决方案?
- linux – 如何在docker容器中运行cron作业
如何在 docker 容器中运行 cron 作业?(docker crontab)
我正在尝试在调用 shell 脚本的 docker 容器中运行 cronjob。
昨天我一直在网上搜索和堆栈溢出,但我真的找不到有效的解决方案。
我怎样才能做到这一点?
答案1
小编典典您可以将 crontab 复制到映像中,以便从所述映像启动的容器运行作业。
请参阅Julien Boulay的“使用 Docker 运行 cron
作业”
: Ekito/docker-cron
让我们创建一个名为“
hello-cron
”的新文件来描述我们的工作。
* * * * * echo "Hello world" >> /var/log/cron.log 2>&1# An empty line is required at the end of this file for a valid cron file.
如果您想知道什么是 2>&1, 解释说。
以下 Dockerfile 描述了构建映像的所有步骤
FROM ubuntu:latestMAINTAINER docker@ekito.frRUN apt-get update && apt-get -y install cron# Copy hello-cron file to the cron.d directoryCOPY hello-cron /etc/cron.d/hello-cron# Give execution rights on the cron jobRUN chmod 0644 /etc/cron.d/hello-cron# Apply cron jobRUN crontab /etc/cron.d/hello-cron# Create the log file to be able to run tailRUN touch /var/log/cron.log# Run the command on container startupCMD cron && tail -f /var/log/cron.log
正如指出的那样:
关于一个陷阱的快速说明:
如果您要添加一个脚本文件并告诉 cron 运行它,请记住 如果您忘记了 Cron 会静默失败 。RUN chmod 0744 /the_script
或者,确保您的工作本身直接重定向到 stdout/stderr
而不是日志文件,如下所述:
* * * * * root echo hello > /proc/1/fd/1 2>/proc/1/fd/2
将最后 Dockerfile 行替换为
CMD ["cron", "-f"]
构建并运行它:
sudo docker build --rm -t ekito/cron-example .sudo docker run -t -i ekito/cron-example
请耐心等待 2 分钟,您的命令行应该会显示:
Hello worldHello world
补道:
请注意,
tail
如果在映像构建期间创建文件,可能不会显示正确的文件。
如果是这种情况,您需要在容器运行时创建或触摸文件,以便 tail 获取正确的文件。
AnalogJ/docker-cron
请参阅基于以下内容的
Jason 的图像:
Dockerfile 安装
cronie
/crond
,取决于发行版。一个入口点初始化
/etc/environment
然后调用cron -f -l 2
5 分钟教程:如何在 Docker 容器中运行 Nginx
在本教程中,您将学习如何将 Nginx 作为 Docker 容器运行,并将其公开给您的本地网络。此外,您将学习如何创建 Docker 数据卷以在容器和主机文件系统之间共享信息。
Nginx 是一种流行的开源软件,用于 Web 服务、反向代理、缓存、负载平衡等。它非常流行并在当今许多高流量网站上使用。Docker 最常见的工作负载之一是使用它来容器化 Web 服务器。我们将向您展示如何使用 Nginx 进行设置。因此,让我们带您完成整个过程。
Docker 是一个容器化平台,用于将您的应用程序打包成一个易于管理的容器映像。
先决条件
您必须满足以下要求才能完成本教程:
Docker 应该已安装并在您的系统上本地运行。
您需要一个 root 帐户,或者用户可以运行 sudo 命令。
在 Docker 中设置 Nginx
拉取镜像
首先,我们将拉取官方的 Nginx 镜像。在您的 docker 主机上,在终端上运行以下 Docker pull 命令以从 Docker hub 下载 Nginx 最新镜像。
linuxmi@linuxmi:~/www.linuxmi.com$ sudo docker pull nginx
输出如下:
Using default tag: latest
latest: Pulling from library/nginx
e1acddbe380c: Pull complete
e21006f71c6f: Pull complete
f3341cc17e58: Pull complete
2a53fa598ee2: Pull complete
12455f71a9b5: Pull complete
b86f2ba62d17: Pull complete
Digest: sha256:4d4d96ac750af48c6a551d757c1cbfc071692309b491b70b2b8976e102dd3fef
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
运行 Nginx Docker 容器
现在,我们已准备好运行 Nginx Docker 容器并将其端口公开给您的本地网络。为此,我们使用以下命令运行镜像:
linuxmi@linuxmi:~/www.linuxmi.com$ docker run -d -p 80:80 --name my-nginx-server nginx
输出如下:
f204ea685629dbc1d09b4a2d5f6fb64f5ef84be7d58a1b7449cc144c65c90c92
docker: Error response from daemon: driver failed programming external connectivity on endpoint my-nginx-server (27d91a249b151ea87841c46775647d7af43d12c3e753061531173f05016e485b): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.
-d – 以分离模式启动容器(容器在后台运行)。
-p – 将一个端口从容器绑定到主机(将主机流量端口 80 路由到容器端口 80)。
-name – 我们的 Docker 容器的名称。
最后一个参数 “nginx” 告诉 Docker 容器使用哪个镜像。
现在打开浏览器访问 http://localhost,您应该会看到一个 Nginx Web 服务器提供其默认网页。
就是这样。你有一个 NGINX 的工作实例,通过 Docker 容器。
列出 Docker 容器
要列出所有正在运行的 Docker 容器,请执行以下命令:
linuxmi@linuxmi:~/www.linuxmi.com$ sudo docker container ls -all
根据上面的输出,我们可以使用以下两种方法的其中一种停止我们的 Nginx Docker 容器:
linuxmi@linuxmi:~/www.linuxmi.com$ docker stop f204ea685629
f204ea685629
linuxmi@linuxmi:~/www.linuxmi.com$ docker stop my-nginx-server
my-nginx-server
要查看所有容器,甚至那些未运行的容器,您需要添加 -a 标志。
linuxmi@linuxmi:~/www.linuxmi.com$ sudo docker container ls -a
在 Nginx Docker 容器和主机之间共享数据
Docker 容器是短暂的。默认情况下,在容器内创建的任何数据仅在容器内且仅在容器运行时可用。
因此,让我们向您展示如何在主机上访问容器内部的数据。我们的目标是创建一个简单的 HTML 文件,将其托管在容器中,并使用 Nginx Docker 容器将其提供给外部。此设置允许我们拥有在容器外部托管的持久网站内容。
为了实现这个功能,我们将使用 Docker 中的绑定挂载功能。使用绑定挂载时,主机上的文件或目录会挂载到容器中。
因此,让我们首先在主目录中为您的网站内容创建一个新目录。
linuxmi@linuxmi:~/www.linuxmi.com$ mkdir ~/www
现在让我们创建一个简单的 HTML 文件并在您的索引页面上放置一些文本。
linuxmi@linuxmi:~/www.linuxmi.com$ vim ~/www/index.html
编写 HTML 代码片段到里面。保存文件并退出 Vim。
接下来,我们将在容器上运行带有附加卷的 Nginx Docker 容器 /usr/share/nginx/html 到当前保存文件的主机 www 目录上 index.html。
linuxmi@linuxmi:~/www.linuxmi.com$ docker run -d -p 80:80 -v ~/www:/usr/share/nginx/html/ --name my-nginx-server nginx
Nginx 容器默认设置为在 /usr/share/nginx/html/. 在上面的命令中,该 - v 选项设置了一个绑定挂载卷,它将 Nginx Docker 容器内部的目录链接 到 主机上的目录。/usr/share/nginx/html/~/www
Docker 使用 a : 将主机路径与容器路径分开。主机路径始终排在第一位。
现在,如果您浏览 http://localhost,您将在显示窗口上看到下面给出的输出。
就这样。您现在有一个正在运行的 Nginx Docker 容器,它为自定义网页提供服务。
结论
Nginx 和 Docker 可以很好地协同工作。在本教程中,我们演示了如何设置和使用 Nginx Docker 容器。现在,您还知道如何在容器和主机文件系统之间共享信息。
如有疑问,请留下您的意见。
Docker-如何在postgres容器中运行psql命令?
我想在postgres映像中使用psql以便在数据库上运行一些查询。但是不幸的是,当我连接到postgres容器时,出现了该错误,找不到psql命令…
对我来说,如何在容器中运行postgre sql查询或命令是一个谜。
如何在postgres容器中运行psql命令?(我是Docker世界中的新手)
我使用Ubuntu作为主机,但没有在主机上安装postgres,而是使用postgres容器。
docker-compose ps Name Command State Ports ---------------------------------------------------------------------------------------------yiialkalmi_app_1 /bin/bash Exit 0 yiialkalmi_nginx_1 nginx -g daemon off; Up 443/tcp, 0.0.0.0:80->80/tcp yiialkalmi_php_1 php-fpm Up 9000/tcp yiialkalmi_postgres_1 /docker-entrypoint.sh postgres Up 5432/tcp yiialkalmi_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
这里的容器:
docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES315567db2dff yiialkalmi_nginx "nginx -g ''daemon off" 18 hours ago Up 3 hours 0.0.0.0:80->80/tcp, 443/tcp yiialkalmi_nginx_153577722df71 yiialkalmi_php "php-fpm" 18 hours ago Up 3 hours 9000/tcp yiialkalmi_php_140e39bd0329a postgres:latest "/docker-entrypoint.s" 18 hours ago Up 3 hours 5432/tcp yiialkalmi_postgres_15cc47477b72d redis:latest "docker-entrypoint.sh" 19 hours ago Up 3 hours 6379/tcp yiialkalmi_redis_1
这是我的docker-compose.yml:
app:image: ubuntu:16.04volumes: - .:/var/www/htmlnginx: build: ./docker/nginx/ ports: - 80:80 links: - php volumes_from: - app volumes: - ./docker/nginx/conf.d:/etc/nginx/conf.dphp: build: ./docker/php/ expose: - 9000 links: - postgres - redis volumes_from: - apppostgres: image: postgres:latest volumes: - /var/lib/postgres environment: POSTGRES_DB: project POSTGRES_USER: project POSTGRES_PASSWORD: projectredis: image: redis:latest expose: - 6379
答案1
小编典典docker exec -it yiialkalmi_postgres_1 psql -U project -W project project
一些解释
docker exec -it
用于对正在运行的容器运行命令的命令。这些it
标志打开一个交互式tty。基本上它将导致连接到终端。如果您想打开bash终端,可以执行此操作
docker exec -it yiialkalmi_postgres_1 bash
yiialkalmi_postgres_1
容器名称(您可以改用容器ID,在您的情况下为40e39bd0329a
)psql -U project -W project
对正在运行的容器执行的命令U
用户W
密码project
您要连接的数据库。
这些是您在这里指定的
environment: POSTGRES_DB: project POSTGRES_USER: project POSTGRES_PASSWORD: project
linux – 在Docker容器中运行预定的cron作业的解决方案?
我有一个Docker容器,我安装了我的Python工具,包括我的luigi管道接口.我想运行一个shell脚本,它使用cron每周启动我的luigi管道.
我尝试过高低,让cron在Docker容器中工作.在我的生活中,我不能让我的crontab -e文件运行.
在我的档案中,我有:
0 0 * * Sun /data/myscript.sh
接着是一条新线. Cron正在后台运行 – ps aux | grep cron显示/usr/sbin / cron正在运行.此外,在我的/ var / log / syslog文件中,我有:
/ USR / SBIN / CRON [2037]
linux – 如何在docker容器中运行cron作业
我试图在docker容器中运行一个cron作业
但没有什么对我有用
我的容器只有cron.daily和cron.weekly文件
crontab,cron.d,cron.hourly ……在我的容器中不存在
crontab -e也无法正常工作
我的容器用/ bin / bash运行
解决方法:
这是我如何运行我的一个cron容器.
Dockerfile:
FROM alpine:3.3
ADD crontab.txt /crontab.txt
ADD script.sh /script.sh
copY entry.sh /entry.sh
RUN chmod 755 /script.sh /entry.sh
RUN /usr/bin/crontab /crontab.txt
CMD ["/entry.sh"]
crontab.txt
*/30 * * * * /script.sh >> /var/log/script.log
entry.sh
#!/bin/sh
# start cron
/usr/sbin/crond -f -l 8
script.sh
#!/bin/sh
# code goes here.
echo "This is a script, run by cron!"
像这样构建
docker build -t mycron .
像这样跑
docker run -d mycron
添加自己的脚本并编辑crontab.txt,然后构建映像并运行.由于它是基于高山,因此图像非常小.
关于如何在 docker 容器中运行 cron 作业?和docker crontab的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于5 分钟教程:如何在 Docker 容器中运行 Nginx、Docker-如何在postgres容器中运行psql命令?、linux – 在Docker容器中运行预定的cron作业的解决方案?、linux – 如何在docker容器中运行cron作业的相关知识,请在本站寻找。
本文标签: