Tag: docker

如何处理docker中的永久性存储(例如数据库)

人们如何处理docker集装箱的持久存储? 我目前正在使用这种方法:build立图像,例如Postgres,然后启动容器 docker run –volumes-from c0dbc34fd631 -d app_name/postgres 恕我直言,这有缺点,我不能(无意)删除容器“c0dbc34fd631”。 另一个想法是将主机卷“-v”装载到容器中,但容器内的用户标识不一定与用户标识与主机相匹配,然后权限可能会混乱。 注意:除了–volumes-from 'cryptic_id'您还可以使用–volumes-from my-data-container ,其中my-data-container是您分配给数据专用容器的名称,例如docker run –name my-data-container … (查看接受的答案)

Docker与普通虚拟机有什么不同?

我不断重读Docker文档 ,试图理解Docker和完整虚拟机之间的区别。 它如何设法提供一个完整的文件系统,隔离的networking环境等,而不是一样重? 为什么将软件部署到docker图像(如果这是正确的话)比简单地部署到一致的生产环境更容易?

从Docker容器内部,如何连接到本机的本地主机?

所以我有一个在Docker容器中运行的Nginx,我有一个在localhost上运行的mysql,我想从我的Nginx中连接到MySql。 MySql是在本地主机上运行的,而不是向外界暴露一个端口,所以它绑定在本地主机上,不绑定在机器的IP地址上。 有没有办法从这个docker集装箱连接到这个MySql或本地主机上的任何其他程序?

码头集装箱和主机之间的同步文件

情况是; 我有一个static文件夹,它包含一个名为sample_old.txt文件,并使用docker-compose.yml static文件安装到容器中。 然后,我使用docker-compose up启动我的docker服务。 然后调用一个函数在static文件夹内创建一个名为sample_new.txt的新文件。结果,它在静态内生成了新文件(通过使用sudo docker exec -it container_id bash进入容器进行验证)但是问题是,新生成的文件只在不在主机操作系统中的容器中可用。 我怎样才能提供容器内新生成的文件主机? 我可以一直同步目录吗? 我不知道是否可能。 如果可能请提供解决方案。 泊坞窗,compose.yml version: "3" services: web: build: context: . dockerfile: Dockerfile command: "python my_celery.py" ports: – "8000:8000" networks: – webnet volumes: – .:/celery_sample – /static:/celery_sample/static networks: webnet: 目录结构 – 主机操作系统 . ├── docker-compose.yml ├── Dockerfile ├── __init__.py ├── my_celery.py ├── README.md […]

为以下应用程序结构编写docker的正确方法是什么?

我在nodejs上运行了3个nodejs微服务。 其中一个运行在一个单独的子域中,另外两个基于路径进行路由。 我的Docker文件如下 FROM node:latest RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app/ RUN npm install COPY . /usr/src/app EXPOSE 9000 CMD [ "npm", "start" ] 每个图像的端口是不同的。 在此之后,我有一个nginx运行裸机服务器上的所有配置反向代理服务器。 我知道这不是最好的方式。 我怎样才能有3个单独的实例运行,并在同一端口上侦听? 另外对于我正在使用的数据库链接 – 链接标志,但显示为在文档中折旧,什么是正确的方式来解决这个问题?

无法将dockerized spring boot应用程序连接到dockerized postgre sql

我有一个docker-compose.yml有两个服务: version: '2' services: stuffer: container_name: stuffer_container build: . ports: – "8080:8080" environment: – spring.profiles.active=dev depends_on: – postgreDB postgreDB: container_name: postgreDB_container image: "postgres:9.6.2" ports: – "5432:5432" expose: – "5432" environment: – POSTGRES_DB=stuffer – POSTGRES_USER=postgres – POSTGRES_PASSWORD=root123 volumes: – /home/iwaneez/postgreData:/var/lib/postgresql/data 我的应用程序有application-dev.properties: ## Datasource config spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.url=jdbc:postgresql://postgreDB:5432/stuffer spring.datasource.username=postgres spring.datasource.password=root123 当我运行他们都使用 码头工人组成 我得到连接拒绝异常: stuffer_container | Caused by: org.springframework.jdbc.datasource.init.UncategorizedScriptException: […]

使用Docker –net = host并通过主机名连接到其他容器

我想设置一个Nginx的反向代理,工作正常,但如果我设置network_mode: "host"它停止工作,因为它无法找到其他码头集装箱的主机名。 我有一个web容器和一个nginx容器。 我得到以下错误: reverseproxy_1 | nginx: [emerg] host not found in upstream "web:80" in /etc/nginx/nginx.conf:10 reverseproxy_1 | nginx: [emerg] host not found in upstream "web:80" in /etc/nginx/nginx.conf:10 我的Nginx conf文件是: worker_processes 1; events { worker_connections 1024; } http { sendfile on; upstream docker-web { server web:80; } server { listen 8080; location / { proxy_pass […]

由R包调用的Fortran代码仅在Linux上导致段错误崩溃

我正在尝试使用smwrQW R软件包。 我可以让它在Windows机器上工作( example("censReg", "smwrQW") )。 但是,在Linux机器上运行相同的代码会导致我立即发生段错误。 我相信我已经跟踪到以下行的错误。 您应该能够使用Docker和以下命令重现此行为: docker pull rocker/tidyverse docker run -it rocker/tidyverse /bin/bash sudo apt-get install ed Rscript -e "devtools::install_github('USGS-R/smwrBase')" Rscript -e "devtools::install_github('USGS-R/smwrGraphs')" Rscript -e "devtools::install_github('USGS-R/smwrStats')" Rscript -e "devtools::install_github('USGS-R/smwrQW')" Rscript -e "example('censReg', package = 'smwrQW')" Docker版本的gfortran(6.3.0)与RTools版本之间不匹配是否导致问题? 见http://www.thecoatlessprofessor.com/programming/rcpp-rcpparmadillo-and-os-x-mavericks-lgfortran-and-lquadmath-error/#the-solution 我遇到了两个令人费解的怪癖。 首先,如果我在上面链接的那一行之前设置了一个断点( browser() ),那么就没有错误。 其次,Travis的构建似乎已经过去了。

RHEL上的Docker CE – 需要:container-selinux> = 2.9

我正在尝试使用此链接在RHEL上安装Docker CE 。 这是我的RHEL版本: Red Hat Enterprise Linux Server release 7.3 (Maipo) 当我执行这个: sudo yum -y install docker-ce 我得到这个错误: Error: Package: docker-ce-17.06.0.ce-1.el7.centos.x86_64 (docker-ce-stable) Requires: container-selinux >= 2.9 You could try using –skip-broken to work around the problem You could try running: rpm -Va –nofiles –nodigest 我试着用–skip-broken和rpm -Va –nofiles –nodigest但是又一次得到相同的错误。 请让我知道如何解决这个问题,并在RHEL 7.3中安装Docker CE。

我如何限制从docker容器中运行的python-script调用的ffmpeg的资源?

我部署了一个服务,定期在我的服务器上进行视频编码; 而且每次做的时候,所有其他的服务都会显着减慢。 编码隐藏在多层抽象下。 限制任何这些图层都可以。 (例如,限制docker-container的作用就像限制ffmpeg-sub进程一样。) 我的堆栈: VPS(ubuntu:zesty) 泊坞窗,撰写 docker-container(ubuntu:zesty) 蟒蛇 ffmpeg(通过Python中的subprocess.check_call()) 我想限制的是: CPU:单核心 RAM:最大2 GB 硬盘:最大4 GB 如果需要,可以重新编译ffmpeg。 什么地方可以限制这个堆栈?