我可以写
docker images --filter "dangling=true"
Run Code Online (Sandbox Code Playgroud)
我可以使用哪些其他过滤器?
我可以用这样的东西吗?
docker images --filter "running=false"
Run Code Online (Sandbox Code Playgroud) docker-compose支持mem_limit?我该怎么测试呢?
我有一个以下docker-compose.yml
repository:
image: myregistry/my_nginx_image
mem_limit: 60m
volumes:
- /etc/localtime:/etc/localtime
ports:
- "80:80"
Run Code Online (Sandbox Code Playgroud)
如何证明容器实际上不超过60 mb的RAM?
我在用:
无论如何要为docker-machine创建的docker's deamon 配置--allow-insecure-ssl.
命令:
docker-machine create --driver virtualbox dev
eval "$(docker-machine env dev)"
docker run myregistry:5000/busybox:latest echo 'hello world'
Run Code Online (Sandbox Code Playgroud)
输出:
Unable to find image 'myregistry:5000/busybox:latest' locally
2015/06/04 16:54:17 Error: v1 ping attempt failed with error: Get
https://myregistry:5000/v1/_ping: EOF. If this private
registry supports only HTTP or HTTPS with an unknown CA certificate,
please add `--insecure-registry myregistry:5000` to the
daemon's arguments. In the case of HTTPS, if you have access to the
registry's CA certificate, no need for the …
Run Code Online (Sandbox Code Playgroud) 当我用docker-machine创建节点时
docker-machine create -d virtualbox node1
Run Code Online (Sandbox Code Playgroud)
它是在为docker deamon启用tls验证的情况下创建的,这使得事情比swarm更麻烦.
我想创建一个带有docker-machine的节点,而不需要进行tls验证以进行测试.
我尝试过:
docker-machine create -d virtualbox --engine-tls false node1
Run Code Online (Sandbox Code Playgroud)
和
docker-machine create -d virtualbox --engine-tls-verify false node1
Run Code Online (Sandbox Code Playgroud)
和
docker-machine create -d virtualbox --engine-opt-tls false node1
Run Code Online (Sandbox Code Playgroud) 我需要在CI服务器构建映像中使用checkout项目重用docker cache.
结帐时,Docker ADD不使用缓存相同的文件.
我在git分支A执行docker build -t somename .
它正常使用docker缓存,但如果我通过分支Bgit checkout B
,什么都不做,去分支A通过git checkout A
并再次运行docker build -t somename .
docker缓存仅在第一个ADD之前使用.
这里的例子:
Dockerfile
# DOCKER-VERSION 0.10.0
FROM myregistry:5000/ruby:2.1.2-1
MAINTAINER ME
# Gem sources
RUN gem source -r https://rubygems.org/
RUN gem source -a http://gems.mydomain
# Never install a ruby gem docs
RUN echo "gem: --no-rdoc --no-ri" >> ~/.gemrc
# gems install
RUN mkdir /foo
WORKDIR /foo
RUN gem install bundler
ADD Gemfile …
Run Code Online (Sandbox Code Playgroud) 我正在尝试提高 CI/CD 的速度。步骤之一是构建我的 docker 映像。构建镜像后,我将其推送到注册表,以便稍后在下一次 CI/CD 迭代中进行拉取||循环||在开始构建过程之前运行,以便重用 docker 构建镜像层缓存。预计此步骤需要一些时间,但是,如果之前已经构建了以前的图像,则可以减少时间。如果之前的行没有改变,docker 不应该重复(或者至少这是我所期望的)同一层(Dockerfile 行)。
下面是真实的例子:
我有这个目录
ls
Dockerfile
somefile.txt
Run Code Online (Sandbox Code Playgroud)
Dockerfile 内容:
cat Dockerfile
FROM ruby:2.7.4-slim
ENTRYPOINT irb
Run Code Online (Sandbox Code Playgroud)
当我第一次构建时:
docker build -t my-registry/my-docker-cache .
Sending build context to Docker daemon 2.56kB
Step 1/2 : FROM ruby:2.7.4-slim
---> db4073acbaac
Step 2/2 : ENTRYPOINT irb
---> Running in 14055ed3e5d1
Removing intermediate container 14055ed3e5d1
---> f4f317dde34d
Successfully built f4f317dde34d
Successfully tagged my-registry/my-docker-cache:latest
Run Code Online (Sandbox Code Playgroud)
一切都像预期的那样,没有缓存,每一步都被执行。如果我重复该命令:
docker build -t my-registry/my-docker-cache .
Sending build context to Docker daemon 2.56kB
Step 1/2 …
Run Code Online (Sandbox Code Playgroud) 我有一个模型 Address 和一个模块 Addressable,为包含此模块 Addressable 的 AR 类注入 *belongs_to :address* 关系。
我想测试包含此模块的类是否具有这种关系。
班级地址:
class Address < ActiveRecord::Base
attr_accessible :street, :zip
end
Run Code Online (Sandbox Code Playgroud)
模块可寻址
module Addressable
def self.included(base)
base.class_eval <<-CLASS_METHODS
belongs_to :address
validates :address, presence: true
CLASS_METHODS
end
end
Run Code Online (Sandbox Code Playgroud)
测试代码:
require 'spec_helper'
describe 'Addressable' do
subject do
class OtherModel < ActiveRecord::Base
include Addressable
end
end
before(:all) do
connection = ActiveRecord::Base.connection
connection.create_table :othermodels do |t|
t.references :address
end
end
after(:all) do
connection.drop_table :othermodels
end
it "should validate presence of address"do
should validate_presence_of(:address)
end …
Run Code Online (Sandbox Code Playgroud) 我尝试使用不同的ssh_options在同一阶段运行capistrano v.3任务.
我的production.rb说:
set :stage, :production
set :user, 'deploy'
set :ssh_options, { user: 'deploy' }
Run Code Online (Sandbox Code Playgroud)
通过这种配置,capistrano与用户部署连接,这对于其余的用户来说是正确的.但是我需要将一个特定任务与一个在服务器中配置良好的an_other_user连接起来.然后我的食谱说:
...
tasks with original user
...
task :my_task_with_an_other_user do
set :user, 'an_other_user'
set :ssh_options, { user: 'an_other_user' }
on roles(:all) do |host|
execute :mkdir, '-p', 'mydir'
end
end
...
other tasks with original user
...
Run Code Online (Sandbox Code Playgroud)
执行时:
cap production namespace:my_task_with_an_other_user
capistrano使ssh conexion与original:user"deploy"(在production.rb中声明的用户).
如何在任务中更改用户和/或ssh_options?
在一种场景中,我的 IT 团队通过 docker 部署了许多应用程序。我们有自己的 docker 镜像,其他镜像来自互联网注册中心。
一个(基本)映像可能是操作系统映像,而另一个可能是运行时框架(用于 java、ruby 等),另一个可能是某些特定工具(例如 git、一些库)。然后,最后,我们有我们的应用程序的图像。
这意味着我们的容器层次结构看起来像:
FROM
工具和(ADD . /app)
FROM
框架FROM
操作系统每个容器都有自己的 Dockerfile。
然后如果我们需要创建另一个app2
,我们可以重新使用我们的框架容器。好的。
但是,如果app3
出现时,使用类似frameworks2与差异较小的容器框架,然后我们与其它图像最终framework2。
这使得使用版本图像及其基础来控制应用程序的版本变得非常困难。
最后,我只选择了一个 Dockerfile。来自 OS 的 APP,它创造了一切,Dockerfile 使用 app 进行版本控制。
有人有其他想法吗?
我有rails app 3.2.17,部署在登台环境中,独角兽4.6.3由bluepill 0.0.66使用mongid 3.1.5监控
当我为staging环境进行部署时,所有工作都会找到包括active_record在内的mongoid查询,其结果包含以下错误:
Error during failsafe response:
Problem:
No configuration could be found for a session named 'default'.
Summary:
When attempting to create the new session, Mongoid could not find a session configuration for the name: 'default'. This is necessary in order to know the host, port, and options needed to connect.
Resolution:
Double check your mongoid.yml to make sure under the sessions key that a configuration exists for 'default'. If you have set the …
Run Code Online (Sandbox Code Playgroud) 我有一个用于发射N码头工人容器(app,redis,mongo,postgre等等)的无花果配置
当我运行fig up
一切都没问题.
Name Command State Ports
--------------------------------------------------------------------------
my_mongodb_1 /usr/local/bin/run Up 28017/tcp, 27017/tcp
my_redis_1 /usr/local/bin/run Up 6379/tcp
my_pg_1 /usr/local/bin/run Up 5432/tcp
my_app_1 ... Up 443->443/tcp, 80->80/tcp
Run Code Online (Sandbox Code Playgroud)
但是,由于一个不重要的原因,可以关闭其中一个容器.
Name Command State Ports
--------------------------------------------------------------------------
my_mongodb_1 /usr/local/bin/run Up 28017/tcp, 27017/tcp
my_redis_1 /usr/local/bin/run Exit 6379/tcp
my_pg_1 /usr/local/bin/run Up 5432/tcp
my_app_1 ... Up 443->443/tcp, 80->80/tcp
Run Code Online (Sandbox Code Playgroud)
可以配置监控以监控所有容器并启动已关闭的容器
我有ansible-playbook成功安装rvm.但现在我必须更改默认的ruby版本.我尝试过:
- name: Install Bundler
command: bash -lc "rvm use 2.1.2-p95"
Run Code Online (Sandbox Code Playgroud)
要么
- name: use 2.1
shell: /usr/bin/env bash -lc "rvm use 2.1.2-p95"
Run Code Online (Sandbox Code Playgroud)
要么
- name: use 2.1
shell: rvm use 2.1.2-p95
Run Code Online (Sandbox Code Playgroud)
但是没有任何ansible看起来一切正常,但是当我使用相同的用户登录ssh时使用ansible并运行rvm current
ruby版本是一样的.
我怀疑从ssh和bash登录shell但我可以看到解决方案.
我想改变source.list.
主机有一个用户deploy
密码deploy
,我可以连接ssh并使用source.list进行任何操作sudo
.然而ansible似乎并没有真正对这个用户做sudo.这种行为发生在所有需要sudo的任务和角色上.
库存:
machine ansible_ssh_host=172.23.0.43 ansible_connection=ssh ansible_ssh_user=deploy ansible_ssh_pass=deploy
Run Code Online (Sandbox Code Playgroud)
角色/公寓来源/任务/ main.yml
- name: Copy source list
copy: src=sources.list dest=/etc/apt/sources.list
Run Code Online (Sandbox Code Playgroud)
playbook.yml
---
- name: apt and base system
hosts: machine
sudo_user: deploy
sudo: True
roles:
- apt-sources
Run Code Online (Sandbox Code Playgroud)
安排输出
failed: [machine] => {"failed": true, "md5sum": "74b6936296cdd0c94ef9b1f848bf2dab"}
msg: Destination /etc/apt not writable
FATAL: all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
to retry, use: --limit @/home/montells/provision.retry
machine : ok=1 changed=0 unreachable=0 failed=1
Run Code Online (Sandbox Code Playgroud)
运用
ansible:v1.6.6
主机操作系统:Ubuntu 14.04
docker ×8
deployment ×3
ansible ×2
ruby ×2
activerecord ×1
bash ×1
capistrano ×1
capistrano3 ×1
dockerfile ×1
fig ×1
git ×1
mongodb ×1
mongoid ×1
rspec ×1
rvm ×1
rvmrc ×1
sudo ×1
supervisord ×1
testing ×1
unicorn ×1