$ sudo docker search centos |more
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 542 [OK]
tianon/centos CentOS 5 and 6, created using rinse instea... 28
ansible/centos7-ansible Ansible on Centos7 13 [OK]
saltstack/centos-6-minimal 7 [OK]
blalor/centos Bare-bones base CentOS 6.5 image 7 [OK]
steeef/graphite-centos CentOS 6.x with Graphite and Carbon via ng... 6 [OK]
ariya/centos6-teamcity-server TeamCity Server 8.1 on CentOS 6 6 [OK]
tutum/centos Centos image with SSH access. For the root... 5 [OK]
tutum/centos-6.4 DEPRECATED. Use tutum/centos:6.4 instead. ... 5 [OK]
可以使用 docker pull 命令来从官网仓库获取所需要的镜像。
$ sudo docker pull ubuntu:14.04
等同于
$ sudo docker pull registry.hub.docker.com/ubuntu:14.04
获得所有版本镜像
$ sudo docker pull ubuntu
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu utopic 277eb4304907 3 days ago 215.6 MB
ubuntu 14.10 277eb4304907 3 days ago 215.6 MB
ubuntu 14.04 5506de2b643b 3 days ago 197.8 MB
ubuntu trusty 5506de2b643b 3 days ago 197.8 MB
ubuntu latest 5506de2b643b 3 days ago 197.8 MB
ubuntu 14.04.1 5506de2b643b 3 days ago 197.8 MB
ubuntu precise 0b310e6bf058 3 days ago 116.1 MB
ubuntu 12.04.5 0b310e6bf058 3 days ago 116.1 MB
ubuntu 12.04 0b310e6bf058 3 days ago 116.1 MB
ubuntu 12.10 c5881f11ded9 4 months ago 172.1 MB
ubuntu quantal c5881f11ded9 4 months ago 172.1 MB
ubuntu 13.04 463ff6be4238 4 months ago 169.4 MB
ubuntu raring 463ff6be4238 4 months ago 169.4 MB
ubuntu 13.10 195eb90b5349 4 months ago 184.6 MB
ubuntu saucy 195eb90b5349 4 months ago 184.6 MB
ubuntu 10.04 3db9c44f4520 6 months ago 183 MB
ubuntu lucid 3db9c44f4520 6 months ago 183 MB
从其他服务器获得镜像
$ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04
完成后,即可随时使用该镜像了,例如创建一个容器,让其中运行 bash 应用。
$ sudo docker run -t -i ubuntu:14.10 /bin/bash
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.10 277eb4304907 3 days ago 215.6 MB
ubuntu latest 5506de2b643b 3 days ago 197.8 MB
保存镜像
$sudo docker save -o ubuntu_14.10.tar ubuntu:14.10
载入镜像
$ sudo docker load --input ubuntu_14.10.tar
或
$ sudo docker load < ubuntu_14.10.tar
$ sudo docker rmi ubuntu:12.04
Untagged: ubuntu:12.04
166.2.6. 基于 Dockerfile 创建镜像
$ docker build -f /path/to/a/Dockerfile .
为什么要自己创建镜像呢? 因为官方提供的镜像无法满足我们的需求,例如 nginx 镜像你会发现 ps, top 等等很多命令缺失。
166.2.6.1. 创建 Dockerfile 文件
需求基于centos7镜像创建nginx stable最新版本镜像
############################################################
# Dockerfile to build Nginx container
# Based on centos7
############################################################
FROM centos:latest
MAINTAINER Netkiller <netkiller@msn.com>
# Install EPEL
RUN yum install -y epel-release && yum clean all
# Update RPM Packages
RUN yum -y update
# Install Nginx
RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum install -y nginx
RUN yum clean all
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log
RUN ln -sf /dev/stderr /var/log/nginx/error.log
# be backwards compatible with pre-official images
#RUN ln -sf ../share/nginx /usr/local/nginx
# prepare container
# add startup script
#ADD startup.sh /startup.sh
#RUN chmod 755 /startup.sh
VOLUME ["/etc/nginx"]
VOLUME ["/usr/share/nginx/html"]
VOLUME ["/var/www"]
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]
# docker build -t "centos:nginx" .
Sending build context to Docker daemon 3.072 kB
Step 1/14 : FROM centos:latest
---> 3bee3060bfc8
Step 2/14 : MAINTAINER Netkiller <netkiller@msn.com>
---> Using cache
---> 8f351964d568
Step 3/14 : RUN yum install -y epel-release && yum clean all
---> Using cache
---> bf86eff77ff3
Step 4/14 : RUN yum -y update
---> Using cache
---> 4915172ac4f3
Step 5/14 : RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
---> Using cache
---> 4a919bd141c9
Step 6/14 : RUN yum install -y nginx
---> Using cache
---> 2718221eab8c
Step 7/14 : RUN yum clean all
---> Using cache
---> 62231a5f1d76
Step 8/14 : RUN ln -sf /dev/stdout /var/log/nginx/access.log
---> Using cache
---> 38be8f0cc782
Step 9/14 : RUN ln -sf /dev/stderr /var/log/nginx/error.log
---> Using cache
---> bbf3a468d24f
Step 10/14 : VOLUME /etc/nginx
---> Using cache
---> 919292c7ce04
Step 11/14 : VOLUME /usr/share/nginx/html
---> Using cache
---> c2aeb8ed3c1c
Step 12/14 : VOLUME /var/www
---> Using cache
---> 31849cb8a9d0
Step 13/14 : EXPOSE 80 443
---> Using cache
---> 0e3d3b4a215b
Step 14/14 : CMD nginx -g daemon off;
---> Using cache
---> d5f21e409690
Successfully built d5f21e409690
查看镜像
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos nginx d5f21e409690 4 minutes ago 364 MB
centos latest 3bee3060bfc8 2 days ago 193 MB
nginx latest 958a7ae9e569 8 days ago 109 MB
redis latest a858478874d1 2 weeks ago 184 MB
# docker run --name my-centos-nginx -d centos:nginx
ecf342ddd66d1d5f3d28c583ec852c05903ef4813fcb75295c907a6b578dea3d
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ecf342ddd66d centos:nginx "nginx -g 'daemon ..." 23 seconds ago Up 23 seconds 80/tcp, 443/tcp my-centos-nginx
0df3b275bb03 nginx "nginx -g 'daemon ..." 6 hours ago Up 6 hours 80/tcp my-nginx
1c4540d8617f redis "docker-entrypoint..." 2 days ago Up 2 days 0.0.0.0:6379->6379/tcp my-redis
[root@netkiller]~/docker/nginx# docker exec -it my-centos-nginx /bin/bash
[root@netkiller-docker /]# ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 nginx: master process nginx -g daemon off;
7 ? S 0:00 nginx: worker process
8 ? Ss 0:00 /bin/bash
22 ? R+ 0:00 ps ax
[root@netkiller-docker /]# curl http://localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
# docker commit my-centos-nginx netkiller/centos:nginx
sha256:9ea1851b1c9f04aa3168977f666337223d09e20983f7a2c2328e15132a03d224
# docker push netkiller/centos:nginx
The push refers to a repository [docker.io/netkiller/centos]
16916856eaaa: Pushed
6172d61b45f1: Pushed
db323af550f0: Pushed
232df2cfd38f: Pushed
c247a550215b: Pushed
3b5451d7989c: Pushed
e3a6f1af6a7a: Pushed
9e3cea652b37: Pushed
dc1e2dcdc7b6: Mounted from library/centos
nginx: digest: sha256:ad9bd1ae3a3e17dac70f32afc14baf90932949d3eaa8bebbe907726aca3ea336 size: 2205
原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。