分类 阿里云 下的文章

今年就翻到这里了,
odoo10.0还剩688条未翻译,11还是老样子,odoo12.0就要破4K,
老唐说,若干年后,他会回忆起当年一起整odoo官方翻译这事儿,
专注干一件事情,想想也蛮不错的————是为记。杜哥@1028年09月26日 23:42
adfg.png

参考自简书的大作:http://www.jianshu.com/p/a2798b1ac8a4
仅供自己备忘。

基于ubuntu 16 64bit
winscp+putty登陆ecs后,

1. 安装 Docker 与 Compose
1.1. 配置 Docker 镜像源
1.2. 部署 NextCloud(阿里云ECS单核单1G内存1MB带宽耗时约
2. 配置 NextCloud
2.1. 客户端安装与使用

正面开始:
说明:Nextcloud 和 Owncloud 的界面非常相似,Owncloud并没有停止开发,而是由原来的德国团队接手了。

  1. 安装 Docker 与 Compose

安装 Docker

curl -sSL https://get.docker.com/ | sh

安装 Compose

curl -L https://github.com/docker/compose/releases/download/1.10.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

以上搭好了基础软件环境。

1.1. 配置 Docker 镜像源
接下来我们会拉取几个镜像,默认的镜像仓库在海外,速度不理想,所以我们使用国内的镜像源,这里以中科大的为例:
首先编辑文件 /etc/docker/daemon.json,在该配置文件中加入下面内容(没有该文件的话建一个):

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

保存之后最好重启一下 Docker 服务,这样就可以使用国内镜像源拉取镜像了:

service docker restart

1.2. 部署 NextCloud

首先为Nextcloud建立一个独立的容器网络:

docker network create nextcloud

接下来在当前目前下新建一个文件夹cloud,然后在cloud文件夹里面新建一个文件Caddyfile,在文件Caddyfile写入以下内容(您自己的域名example.com和IP233.233.233.233和端口2333自己改一下哦):

example.com {
  proxy / 233.233.233.233:2333 {
      proxy_header Host {host}
      proxy_header X-Real-IP {remote}
      proxy_header X-Forwarded-Proto {scheme}
  }
  log /var/log/caddy.log
  gzip
}

接下来再在当前目录cloud下新建一个文件,名为docker-compose.yml,文件的内容如下,注意修改以下内容中的MYSQL_ROOT_PASSWORD行的密码为您自己的MYSQL数据库密码:

version: '2'
services:
  db:
    container_name: cloud_db
    image: mysql
    volumes:
      - "./data/cloud/mysql:/var/lib/mysql"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 这里填写你的密码
      MYSQL_DATABASE: nextcloud
  app:
    container_name: cloud_app
    depends_on:
      - db
    image: nextcloud
    volumes:
      - ./data/cloud/config:/var/www/html/config
      - ./data/cloud/data:/var/www/html/data
      - ./data/cloud/apps:/var/www/html/apps
    links:
      - db
    ports:
      - "2333:80"
    restart: always
  cron:
    container_name: cloud_cron
    image: nextcloud
    links:
      - db
    volumes_from:
      - app
    user: www-data
    entrypoint: |
      bash -c 'bash -s <<EOF
      trap "break;exit" SIGHUP SIGINT SIGTERM
      while /bin/true; do
        /usr/local/bin/php /var/www/html/cron.php
        sleep 900
      done
      EOF'
    restart: always
  web:
    container_name: cloud_web
    image: abiosoft/caddy
    volumes:
      - ./Caddyfile:/etc/Caddyfile
      - ~/.caddy:/root/.caddy
    ports:
      - 80:80
      - 443:443
    restart: always
networks:
  default:
    external:
      name: nextcloud

保存后在当前目录cloud下输入以下命令:

docker-compose up -d

然后就是漫长的等待(视ECS配置高低和带宽大小而定等待时长)~~~
最后打开上边配置文件中的域名example.com(您自己的域名自己改一下哦)即可看到NextCloud安装界面了,跟其他web系统没什么两样的。数据库的选择您随意就好。mysql或sqlite都随意了。

你的用户名就是 root,数据库地址是 db,不是 localhost。

  1. 配置 NextCloud

安装完成还要做两件事,当然不是必须的,但是为了安全起见,最好再折腾一下。

2.1. 配置两步验证

两步验证可以防暴力入侵什么的,建议使用。首先在后台启用两步验证,然后手机安装下面的应用:
https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2
登录时需要手机上的离线验证码验证,安全有了多一层保障。

2.2. 客户端安装与使用

首先客户端几乎是全平台的,地址在下面:
https://nextcloud.com/install/#install-clients
因为开启了二步验证,在客户端直接使用帐号密码肯定无法登录了,所以需要在后台设置应用密码,地址格式:
http://你的地址/index.php/settings/personal#apppasswords
在设置中设置应用一次性密码,使用随机密码登录客户端即可。

作者:左蓝
链接:http://www.jianshu.com/p/a2798b1ac8a4
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

OS:ubuntu 14.04 server+desktop
nginx官网下载http://nginx.org/en/download.html,解压后./configure报错:
1、提示缺少pcre然后官网下载回来后./configure --prefix=/usr/local/pcre然后make -j4&& make install安装到默认的/usr/local/;
2、提示缺少zlib同样官网下载回来后./configure --prefix=/usr/local/zlib然后make -j4&& make install安装到默认的/usr/local/;
3、提示缺少openssl同样官网下载回来后./config --prefix=/usr/local/openssl然后make -j16&& make install安装到默认的/usr/local/;

4、用sudo su进入root超级管理员权限后:

a)

  ./configure --with-pcre=/usr/local/pcre --with-zlib=/usr/local/zlib --with-openssl=/usr/local/openssl

b)

  make -j4&& make install

安装成功提示:

  Configuration summary
    + using PCRE library: /usr/local/
    + using OpenSSL library: /usr/local/
    + using zlib library: /usr/local/

    nginx path prefix: "/usr/local/nginx"
    nginx binary file: "/usr/local/nginx/sbin/nginx"
    nginx modules path: "/usr/local/nginx/modules"
    nginx configuration prefix: "/usr/local/nginx/conf"
    nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
    nginx pid file: "/usr/local/nginx/logs/nginx.pid"
    nginx error log file: "/usr/local/nginx/logs/error.log"
    nginx http access log file: "/usr/local/nginx/logs/access.log"
    nginx http client request body temporary files: "client_body_temp"
    nginx http proxy temporary files: "proxy_temp"
    nginx http fastcgi temporary files: "fastcgi_temp"
    nginx http uwsgi temporary files: "uwsgi_temp"
    nginx http scgi temporary files: "scgi_temp"

最后,使用pgrep检验是否成功:pgrep nginx返回行号进程ID即可。
完毕!

阿里云部署Docker(9)----Dockerfile脚本定制镜像
时间:2014-11-22 来源:服务器之家 投稿:root

阿里云部署Docker系列文章目录:
阿里云部署Docker(1)----阿里云Ubuntu环境搭建Docker服务
阿里云部署Docker(2)
阿里云部署Docker(3)----指令学习
阿里云部署Docker(4)----容器的使用
阿里云部署Docker(5)----管理和发布您的镜像
阿里云部署Docker(6)----解决删除<none>镜像问题
阿里云部署Docker(7)----将容器连接起来
阿里云部署Docker(8)----安装和使用redmine
阿里云部署Docker(9)----Dockerfile脚本定制镜像

技术爱好者都是比较懒的。而docker又是开发者支持起来的。所以,它肯定是有比较懒的方式供我们定制自己需要的东西。
docker build

docker 用build指令来执行dockerfile脚本。

具体的用法:

sudo docker build .
小心后面那个点,表示当前目录。当前目录有一个Dockerfile的文件。

当然,你可以指定你建立的镜像的名字。

sudo docker build -t shykes/myapp .

然后你就可以看到执行过程,或许,会非常的漫长,取决于要下的东西的大小和你的网速。

sudo docker build -t SvenDowideit/ambassador .

Uploading context 10.24 kB

Uploading context

Step 1 : FROM docker-ut

---> cbba202fe96b

Step 2 : MAINTAINER SvenDowideit@home.org.au

---> Using cache

---> 51182097be13

Step 3 : CMD env | grep _TCP= | sed 's/.PORT([0-9])_TCP=tcp://(.):(.)/socat TCP4-LISTEN:1,fork,reuseaddr TCP4:2:3 &/' | sh && top

---> Using cache

---> 1a5ffc17324d

Successfully built 1a5ffc17324d
当你下完之后,你可以用:
你会发现多了你下载的镜像。

好接下来我们讲讲Dockerfile本身如何编写。
格式:

Comment

INSTRUCTION arguments
命令是大写的。 FROM

所有的镜像都应该是基于某一个现有的镜像。

所以,就有了FROM 指令
或者,更加具体点说明它的Tag。

FROM语句必须是第一句“非注释”语句,在Dockerfile中。
我们总是会想在一个脚本里面添加些注释,来说明一些想说的话。 注释

那就是注释:#开头的行。

但是#在行中,则却表示是一个参数。
维护

接下来,需要说明维护人。
填上你的NICK NAME。表示你做的。 RUN指令

RUN指令应该是用的最多的指令。

RUN <command> (the command is run in a shell - /bin/sh -c - shell form)

另一种方式是:

RUN ["executable", "param1", "param2"] (exec form)

RUN语句会在当前镜像的基础上执行该条指令,同时执行完就成了一个新的镜像一样,即数据和影响都是会保存的,然后用这个新的镜像去执行下一条指令,这样上一条的结果镜像是下一条指令的基础,如此不断推进。

CMD指令

格式:

CMD ["executable","param1","param2"] (exec form, this is the preferred form)

CMD ["param1","param2"] (as default parameters to ENTRYPOINT)

CMD command param1 param2 (shell form)

有三种形式。

CMD在DOckerfile里面只能用一次,如果你写了很多条,那么只有最后一条是有效的。

CMD有什么用呢,可以理解为Main函数一样吧,作为一个入口。具体见英文

The main purpose of a CMD is to provide defaults for an executing container. These defaults can include an executable, or they can omit the executable, in which case you must specify an ENTRYPOINT instruction as well.
EXPOSE 这个单词的中文叫什么,暴露。对,他就是暴露镜像的某个接口出来。例如,我的镜像是用来做http服务的,那么我就理应暴露我镜像的80端口。然后-p 主机端口:80 ,还记得吧。端口映射。

EXPOSE <port> [<port>...]
ENV 环境变量的设置
环境变量一旦设定,对整个Dockerfile都是有效的。

当然,key = value这样直接说,其实效果是一样的。
ADD指令

有点像拷贝指令,至少它就是完成文件的拷贝工作的。

ADD hom* /mydir/ # adds all files starting with "hom"

ADD hom?.txt /mydir/ # ? is replaced with any single character

COPY指令

和ADD一样,是拷贝
ENTRYPOINT 入口点

真正的MAIN函数

ENTRYPOINT ["executable", "param1", "param2"] (exec form, the preferred form)

ENTRYPOINT command param1 param2 (shell form)
CMD和这个指令的区别,是应用的场景不一样。

这里,我给大家贴原文会比较好。

An ENTRYPOINT helps you to configure a container that you can run as an executable. That is, when you specify an ENTRYPOINT, then the whole container runs as if it was just that executable.

Unlike the behavior of the CMD instruction, The ENTRYPOINT instruction adds an entry command that will not be overwritten when arguments are passed to docker run. This allows arguments to be passed to the entry point, i.e. docker run <image> -d will pass the -d argument to the entry point.

You can specify parameters either in the ENTRYPOINT JSON array (as in "like an exec" above), or by using a CMD instruction. Parameters in the ENTRYPOINT instruction will not be overridden by the docker run arguments, but parameters specified via a CMD instruction will be overridden by docker run arguments.

Like a CMD, you can specify a plain string for the ENTRYPOINT and it will execute in /bin/sh -c:

FROM ubuntu
ENTRYPOINT ls -l
For example, that Dockerfile's image will always take a directory as an input and return a directory listing. If you wanted to make this optional but default, you could use a CMD instruction:

FROM ubuntu
CMD ["-l"]
ENTRYPOINT ["ls"]
WORKDIR 工作目录

RUN ENTERPOINT带的指令在哪里执行的设置。

此外,还有一些指令,例如

USER ,ONBUILD,等就不想说了。
最后给出一个示例

Nginx

VERSION 0.0.1

FROM ubuntu

MAINTAINER Victor Vieux <victor@docker.com>

RUN apt-get update && apt-get install -y inotify-tools nginx apache2 openssh-server

Firefox over VNC

VERSION 0.3

FROM ubuntu

Install vnc, xvfb in order to create a 'fake' display and firefox

RUN apt-get update && apt-get install -y x11vnc xvfb firefox

RUN mkdir /.vnc

Setup a password

RUN x11vnc -storepasswd 1234 ~/.vnc/passwd

Autostart firefox (might not be the best way, but it does the trick)

RUN bash -c 'echo "firefox" >> /.bashrc'

EXPOSE 5900

CMD ["x11vnc", "-forever", "-usepw", "-create"]

Multiple images example

VERSION 0.1

FROM ubuntu

RUN echo foo > bar

Will output something like ===> 907ad6c2736f

FROM ubuntu

RUN echo moo > oink

Will output something like ===> 695d7793cbe4

Youll now have two images, 907ad6c2736f with /bar, and 695d7793cbe4 with

/oink.

转载请注明原文地址:http://www.server110.com/docker/201411/11143.html

阿里云部署Docker(8)----安装和使用redmine
时间:2014-11-22 来源:服务器之家 投稿:root

阿里云部署Docker系列文章目录:
阿里云部署Docker(1)----阿里云Ubuntu环境搭建Docker服务
阿里云部署Docker(2)
阿里云部署Docker(3)----指令学习
阿里云部署Docker(4)----容器的使用
阿里云部署Docker(5)----管理和发布您的镜像
阿里云部署Docker(6)----解决删除<none>镜像问题
阿里云部署Docker(7)----将容器连接起来
阿里云部署Docker(8)----安装和使用redmine
阿里云部署Docker(9)----Dockerfile脚本定制镜像

安装redmine对过程进行管理。

需要说明的是:当你在docker images的时候,会说没连接到xxxx的时候,而且会提示用“docker -d",其实这只是把docker作为一个后台进程,但是当你的SecureCRT退出的时候,这个后台进程也是会被退出的。所以下次你又要。而且,数据很容易丢失。

正确的做法是。 service docker start。记住咯。

好,redmine的安装和使用教程

https://registry.hub.docker.com/u/sameersbn/redmine/

注意数据的保存。我有一种简单的方法,就是尽量不重启docker,也不stopredmine,如果非得停止了,记得docker ps -l 然后找出你刚刚运行的redmine 容器,然后docker commit 容器为 镜像,然后下次用它。不断的这么迭代。数据也是可以保存下来的。

下列是我主导开发的一个Android移动端产品的项目,用Redmine跟踪的。因为目前人员少,却是“很敏捷”,废话,你拿两个人来开发,能不敏捷么,当然,后续等团队步入正轨后,会多起来的。

转载请注明原文地址:http://www.server110.com/docker/201411/11142.html

阿里云部署Docker(6)----解决删除<none>镜像问题
时间:2014-11-22 来源:服务器之家 投稿:root

阿里云部署Docker系列文章目录:
阿里云部署Docker(1)----阿里云Ubuntu环境搭建Docker服务
阿里云部署Docker(2)
阿里云部署Docker(3)----指令学习
阿里云部署Docker(4)----容器的使用
阿里云部署Docker(5)----管理和发布您的镜像
阿里云部署Docker(6)----解决删除<none>镜像问题
阿里云部署Docker(7)----将容器连接起来
阿里云部署Docker(8)----安装和使用redmine
阿里云部署Docker(9)----Dockerfile脚本定制镜像

在Docker使用中,经常会碰到删除镜像不成功,反而让镜像变成了<none > <none>即,没名字,没Tag的镜像。

root@iZ28ikebrg6Z:/var/run# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> def2e0b08cbc About an hour ago 1.37 GB
sameersbn/redmine latest f0bec095f291 2 hours ago 614.6 MB
sameersbn/gitlab latest bf5c375d9057 3 days ago 635.1 MB
<none> <none> 9cbaf023786c 3 days ago 192.8 MB
sameersbn/postgresql latest 24a6064fa4cd 10 days ago 142.1 MB
<none> <none> 48648094d099 5 weeks ago 997.9 MB
<none> <none> 195fa62e92a8 6 weeks ago 496.4 MB
training/webapp latest 31fa814ba25a 4 months ago 278.8 MB
sameersbn/redmine 2.4.2 b95b8046d47c 8 months ago 1.327 GB

好多,删又删不了。这主要是一些container使用了该image导致的,不仅仅是说现在运行的容器,之前运行的也会。
docker ps -a

可以查历史记录,然后将container commit成镜像。

我们需要删除这些依赖Image的container,当使用到该镜像的所有container都删除了,就可以直接用IMAGE_ID来删除该镜像。

root@iZ28ikebrg6Z:/var/run# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d6373cb79e6 224b40d4b89f "/bin/sh -c 'apt-get 25 hours ago Exited (0) 25 hours ago distracted_blackwell
aa47ba8e71c8 training/webapp:latest "python app.py" 28 hours ago Exited (-1) 27 hours ago suspicious_ardinghelli
09792841c0b4 training/webapp:latest "python app.py" 29 hours ago Exited (-1) 27 hours ago compassionate_torvalds
d8eca9742031 9cbaf023786c "/bin/sh -c 'while t 31 hours ago Exited (-1) 30 hours ago mad_jones
95d20e5442f9 9cbaf023786c "/bin/bash" 31 hours ago Exited (0) 31 hours ago stupefied_torvalds
9d40292642e6 9cbaf023786c "/bin/echo 'hello wo 31 hours ago Exited (0) 31 hours ago stoic_mclean
1078d5bd868e 9cbaf023786c "/bin/echo 'hello wo 31 hours ago Exited (0) 31 hours ago high_leakey
e88cad8893f5 9cbaf023786c "/bin/echo hello" 31 hours ago Exited (0) 31 hours ago compassionate_mclean
0949d7b6148d 9cbaf023786c "/bin/echo 'hello wo 31 hours ago Exited (0) 31 hours ago romantic_carson
e5ab0f35322f 9cbaf023786c "/bin/bash" 31 hours ago Exited (0) 31 hours ago romantic_elion
9fbad8b573d3 9cbaf023786c "/bin/bash" 32 hours ago Exited (0) 31 hours ago thirsty_davinci
9ce1789ee43d 9cbaf023786c "/bin/echo hello" 32 hours ago Exited (0) 32 hours ago insane_colden

一个个的删除
root@iZ28ikebrg6Z:/var/run# docker rm 5d63
5d63
root@iZ28ikebrg6Z:/var/run# docker rm aa47
aa47
root@iZ28ikebrg6Z:/var/run# docker rm 0979
0979
root@iZ28ikebrg6Z:/var/run# docker rm d8ec
d8ec
root@iZ28ikebrg6Z:/var/run# docker rm 95d
95d
root@iZ28ikebrg6Z:/var/run# docker rm 9d4
9d4
root@iZ28ikebrg6Z:/var/run# docker rm 1078
1078
root@iZ28ikebrg6Z:/var/run# docker rm e88c
e88c
root@iZ28ikebrg6Z:/var/run# docker rm 0949
0949
root@iZ28ikebrg6Z:/var/run# docker rm e5ab
e5ab
root@iZ28ikebrg6Z:/var/run# docker rm 9fba
9fba
root@iZ28ikebrg6Z:/var/run# docker rm 9ce1
9ce1
root@iZ28ikebrg6Z:/var/run# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

root@iZ28ikebrg6Z:/var/run# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
sameersbn/redmine latest f0bec095f291 3 hours ago 614.6 MB
sameersbn/gitlab latest bf5c375d9057 3 days ago 635.1 MB
sameersbn/postgresql latest 24a6064fa4cd 10 days ago 142.1 MB
<none> <none> 48648094d099 5 weeks ago 997.9 MB
<none> <none> 195fa62e92a8 6 weeks ago 496.4 MB
training/webapp latest 31fa814ba25a 4 months ago 278.8 MB
sameersbn/redmine 2.4.2 b95b8046d47c 8 months ago 1.327 GB
root@iZ28ikebrg6Z:/var/run# docker rmi 4864
Deleted: 48648094d099bf7c38c5687f4cde3f2b7d27e8a1dc45c30d8fdf8e5f42c2473e
Deleted: 4b1b0cd0c62c3e86701bf4bc4736ca403e3ddd264101d69110bd1924bf05ec2d
Deleted: cd2308a31b296d77f1ef1562432d3908582528ed13d838a3ab6702e7d19ce604
Deleted: 212c2526444a6cefedf9d985f2727bef4b50b84062400a8f1d98b19f779baf3d
Deleted: ac89032e1c4548eaf6f6bf817850431b9180a5b7f06b29e6d7f73b4b8878fe10
Deleted: dcd2c451d11f4896c31b0178c41bf764a87625004ff0048863e627474147c413
Deleted: 7eac533353c28beeab8fd4abb5a6663abc99f0cf24d3650963352f3a41ce8e29
Deleted: 11ed21fa7166f4dee1cfe406885d889f07222a458e706c9d30c28aa9e4cfc398
Deleted: cf6daa523a25b1b947138ad883d18f8501d210ae110487066a9b4ccd8fbd9c70
Deleted: 830bf73bda66fe5ac8bf9262b5be7f4cfacec7a2dd28b7d8cb61c505e68fb787
Deleted: 41176d2b465f4072fa46897aef5f4e35a1941d73a20687bb704c2bfd789a5ae3
Deleted: fa078497ab6f0be3ce013f336ff052af7eaa96cbe2e14e3e6f6352c00544ede0
Deleted: 4477fcbe8e773d2699bf50a6a24b265fbede90ab95793e9cd36f1627348424ed
Deleted: 314c98eff22790bf333b9f98ff39576d9cfbeb3f380fe839ca74ef641b30d1f6
Deleted: 01fb8a54ae0821edb5d6d30280b56c47934efa05b158b67ad3a4a4bb9a82928b
Deleted: 533b41917c87f1479dd6cc852cf8ad11ccd9ef93d5b42978b66bbb1bb30dd476
Deleted: b9c0b9efe68d7fe7caa1c9dcfd61a0aa4a3fb4e2629b7d10c9140a495a438855
Deleted: a91d7692121d15b5399bfb0b4096aa7d696d9e0e0b44269479e5666ea3b39dd9
Deleted: 37d36b47338de2dca6f957a520016d9e7ca4db1e57d6eb38824c9ba267b29db7
Deleted: c4ff7513909dedf4ddf3a450aea68cd817c42e698ebccf54755973576525c416
Deleted: cc58e55aa5a53b572f3b9009eb07e50989553b95a1545a27dcec830939892dba
Deleted: 0ea0d582fd9027540c1f50c7f0149b237ed483d2b95ac8d107f9db5a912b4240
Deleted: d92c3c92fa73ba974eb409217bb86d8317b0727f42b73ef5a05153b729aaf96b
Deleted: 9942dd43ff211ba917d03637006a83934e847c003bef900e4808be8021dca7bd
Deleted: 1c9383292a8ff4c4196ff4ffa36e5ff24cb217606a8d1f471f4ad27c4690e290
root@iZ28ikebrg6Z:/var/run# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
sameersbn/redmine latest f0bec095f291 3 hours ago 614.6 MB
sameersbn/gitlab latest bf5c375d9057 3 days ago 635.1 MB
sameersbn/postgresql latest 24a6064fa4cd 10 days ago 142.1 MB
<none> <none> 195fa62e92a8 6 weeks ago 496.4 MB
training/webapp latest 31fa814ba25a 4 months ago 278.8 MB
sameersbn/redmine 2.4.2 b95b8046d47c 8 months ago 1.327 GB
root@iZ28ikebrg6Z:/var/run# docker rmi 195f
Error response from daemon: No such image: 762df2d4d7bb52a46148cf3e5ab423b30aafd58ca8f758ea78ea2cbd1b1753b6
2014/10/17 17:26:04 Error: failed to remove one or more images
root@iZ28ikebrg6Z:/var/run# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
sameersbn/redmine latest f0bec095f291 3 hours ago 614.6 MB
sameersbn/gitlab latest bf5c375d9057 3 days ago 635.1 MB
sameersbn/postgresql latest 24a6064fa4cd 10 days ago 142.1 MB
training/webapp latest 31fa814ba25a 4 months ago 278.8 MB
sameersbn/redmine 2.4.2 b95b8046d47c 8 months ago 1.327 GB
root@iZ28ikebrg6Z:/var/run#

好,删除干净了。还我们一个干净的工作区间。

docker的删除有两种,一个是rm 删除容器,一个是rmi删除镜像。

rm Remove one or more containers

rmi Remove one or more images

这里有两个不同的单词,images和container。其中images很好理解,跟平常使用的虚拟机的镜像一个意思,相当于一个模版,而container则是images运行时的的状态。docker对于运行过的image都保留一个状态(container),可以使用命令docker ps来查看正在运行的container,对于已经退出的container,则可以使用docker ps -a来查看。 如果你退出了一个container而忘记保存其中的数据,你可以使用docker ps -a来找到对应的运行过的container使用docker commit命令将其保存为image然后运行。

回到之前的问题,由于image被某个container引用(拿来运行),如果不将这个引用的container销毁(删除),那image肯定是不能被删除。

所以想要删除运行过的images必须首先删除它的container。继续来看刚才的例子,

[yaxin@ubox ~] "hljs-variable">$docker ps "hljs-operator">-a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ade696 ed9c93747fe1 /bin/sh -c /usr/sbin hours ago Up hours 0.0.0.0:->/tcp test_sshd

可以看出ed9c93747fe1的image被117843ade696的container使用着,所以必须首先删除该container

[yaxin@ubox ~] "hljs-variable">$docker rm ade696
Error: container_delete: Impossible to remove a running container, please stop it first
// :: Error: failed to remove one or more containers

出现错误,这是因为该container正在运行中(运行docker ps查看),先将其关闭

[yaxin@ubox ~] "hljs-variable">$docker stop ade696
ade696

[yaxin@ubox ~] "hljs-variable">$docker rm ade696
ade696
[yaxin@ubox ~] "hljs-variable">$docker rmi ed9c93747fe1
Deleted: ed9c93747fe16627be822ad3f7feeb8b4468200e5357877d3046aa83cc44c6af
Deleted: c8a0c19429daf73074040a14e527ad5734e70363c644f18c6815388b63eedc9b
Deleted: dba4c468f0e53e5f1e5d76b8581d6740aab9f59141f783f8e263ccd7cf2a8e
Deleted: c25dc743e40af6858c34375d450851bd606a70ace5d04e231a7fcc6d2ea23cc1
Deleted: f5714a5ce764845119399ef75e652e23135cd5c54265ff8218b61ccbd33
Deleted: c8af1dc23af7a7aea0c25ba9b28bdee68caa8866f056e4f2aa2a5fa1bcb12693
Deleted: fdb2c5432e08ec6121f8dbb17e1fde17d5db4c1f149a9b702785dbf7b0f3be
Deleted: ca14274c80ac1df1333b89b2a41c0e0e3b91cd1b267b31bef852ceab3b2044
[yaxin@ubox ~]$docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
CentOS65 latest e55a74a32125 days ago 360.6 MB

可以看出,image已经被删除

转载请注明原文地址:http://www.server110.com/docker/201411/11140.html