如何在docker容器中运行一个程序

如何在docker容器中运行一个程序,第1张

1. 安装 Docker

在开始前,我们首先得确保在Linux主机中已经安装了Docker。这里,我运行的是CentOS 7 主机,我们将运行yum管理器和下面的命令来安装Docker。

# yum install docker

# systemctl restart docker.service

2. 创建 Dockerfile

现在,Docker守护进程已经在运行陵扒中了,我们现在准备创建自己的Firefox Docker容器。我们要创建一个Dockerfile,在其中我们要输入需要的配置来创建一个可以工作的Firefox容器。为了运行 Docker 镜像我们宴蚂需要使用最新版本的CentOS。要创建 Docker 镜像,我们需要用文本编辑器创建一个名为Dockerfile的文件。

# nano Dockerfile

接着,在Dockerfile中添加下面的行并保存。

#!/bin/bashFROM centos:7RUN yum install -y firefox# 用你自己的 uid /gid 替换下面的0RUN export uid=0 gid=0RUN mkdir -p /home/developerRUN echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >>/etc/passwdRUN echo "developer:x:${uid}:" >>/etc/groupRUN echo "developer ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoersRUN chmod 0440 /etc/sudoersRUN chown ${uid}:${gid} -R /home/developerUSER developerENV HOME /home/developerCMD /usr/bin/firefox

注意:在第四行的配置中,用你自晌汪埋己的用户和组id来替换0。 我们可以用下面的命令在shell或者终端中得到uid和gid。

因为Docker技术的火热,因此在工作中我们经常会以容器的方式来运行一个应用。每当容器无法成功运行或者想要对容器中的应用参数、应用配置以及应用启动进行深入研究时,当然希望能够像在宿主机上调试程序一样在容器中调试应用。容器的本质包括应用与应用运行所依赖的环境, 因此首先需要创建一个空壳容器(没有运行应用的应用容器),然后进入容乱改晌器中调试应用。此处的空壳容器提供了应用运行所需的环境,进而可方便的在其中调试应用。实践环境:Centos7.2+Docker1.12.6。

比较规范的镜像的Dockerfile中通常会有ENTRYPOINT与CMD的定义(Docker官方推荐这样做)。因此容器的启动命令则为ENTRYPOINT所对应的脚本或可执行程序加上CMD中定义的内容。比如elasticsearch的Dockerfile定义的ENTRYPOINT与CMD分别为:ENTRYPOINT ["/docker-entrypoint.sh"] CMD ["elasticsearch"],则创建的容器的启动命令为: /docker-entrypoint.sh elasticsearch ;mysql的Dockerfile:ENTRYPOINT ["docker-entrypoint.sh"] CMD ["mysqld"],则创建的容器的启动命令为: /docker-entrypoint.sh mysqld 。所以想要知道一个容器的启动命令需要首先了解其镜像的Dockerfile中ENTRYPOINT与CMD的定义。如何查看一个镜像的ENTRYPONT与CMD的值呢?一般采用如下两种方式:

上述第一种方式适用于比较规范的镜像,这类镜像通常会提供清晰、具体的Dockerfile。第二种歼让方式适用于各种镜像,尽管是不规范的镜像。通过history、inspect两个命令的任一个均可快速、方便的查看镜像的ENTRYPOINT与CMD的值。

若要调试容器中的应用程序,则需额外的设置实现。docker run命令提供的--entrypoint参数能够覆盖Dockerfile中默认定义的ENTRYPOINT;docker run [OPTIONS] IMAGE [COMMAND] [ARG...]的COMMAND能够替换Dockerfile中定义的CMD。通过上面的示例可以发现,有的镜像的Dockerfile中ENTRYPOINT值为:/docker-entrypoint.sh,CMD为应用的可执行程序;有的镜像的Dockerfile中ENTRYPOINT值为应用的可执行程序,CMD为可执行程序的参数。因此针对不同的镜像想要创建空壳容器其方式是不同的。

容器哗锋其实是应用与应用运行所依赖的环境,创建空壳容器即提供了应用所需要的环境,进入此环境中可以调试应用,可以验证应用的各个参数,同样更可以像在宿主机中运行程序一样在此环境中运行应用,区别仅是容器与宿主机的两个环境。上面是对如何在容器中调试应用程序做的一些记录,希望与大家一起讨论、交流,一起学习。

步骤一:首先你得安装了 docker

步骤二:找到你的项目路径 在终端输入 cd +项目路径

步骤三:找到docker安装相关插件 

到docker目录下执行命令:docker-compose up scrapyd 创建项目爬虫环境及运行docker镜像

第四步:进入docker

命令:docker-compose exec scrapy bash(郑告差执行bash程序)

第五步:找到要执行喊皮文件的目录

命令:cd  spider (进入spider) 

命令:scrapy crawl + 文件名

报错与升级:

镜像需要升级:

拓展:

中止爬取快捷友氏键:control+cc   选中即复制 control+w 删除一个单词

(mac电脑,window请自行百度 哈哈)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8226669.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存