docker构建与使用

安装

#安装
wget -qO- https://get.docker.com/ | sh
#后台启动
sudo service docker start
#运行测试
docker run hello-world

修改国内源/etc/default/docker

DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io"

重新启动

service docker restart

使用

docker run ubuntu:15.10 /bin/echo "Hello world"

ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo "Hello world": 在启动的容器里执行的命令

交互式容器

-i -t参数

runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash
root@dc0050c79503:/#

-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。

启动容器

runoob@runoob:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

看到一串字符,是容器id
查看容器

docker ps

查看容器输出

docker logs 2b1b7a428627
docker logs trusting_bardeen

停止容器

docker stop 2b1b7a428627
docker stop trusting_bardeen

容器使用

docker查看命令

docker 命令 --help查看具体命令的帮助

运行一个web应用

docker run -d -P training/webapp python app.py
## -d:让容器在后台运行。
## -P:将容器内部使用的网络端口映射到我们使用的主机上。

查看 WEB 应用容器docker ps
多出了端口信息

0.0.0.0:32769->5000/tcp

这里docker开放了5000端口,映射到主机的32769端口
可以使用-p绑定端口

docker run -d -p 5000:5000 training/webapp python app.py

这样容器内部的 5000 端口映射到我们本地主机的 5000 端口上

查看端口映射

docker port 7a38a1ad55c6

查看web日志

docker logs -f 7a38a1ad55c6

-f就像tail一样获取标准输出
查看web应用程序内部的进程

docker top determined_swanson

检查docker底层信息
返回一个 JSON 文件记录着 Docker 容器的配置和状态信息

runoob@runoob:~$ docker inspect determined_swanson

停止WEB应用容器

docker stop determined_swanson

重启WEB应用容器

docker restart determined_swanson

查看正在运行的容器

docker ps -l

移除容器,需要保证移除时容器是停止状态,否则会报错

docker rm determined_swanson

镜像的使用

列出本地镜像docker images如下

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
hello-world         latest              690ed74de00f        6 months ago        960 B
training/webapp     latest              6fae60ef3446        11 months ago       348.8 MB

REPOSTITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一个仓库源可以有多个tag,代表不同的版本
获取一个镜像

docker pull ubuntu:13.10

查找镜像,可以从https://hub.docker.com 或者如下命令

docker search httpd

NAME:镜像仓库源的名称
DESCRIPTION:镜像的描述
OFFICIAL:是否docker官方发布

拖取镜像 docker pull

创建

## 运行
docker run -t -i ubuntu:15.10 /bin/bash

## 更新
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
# -m:提交的描述信息
# -a:指定镜像作者
# e218edb10161:容器ID
# runoob/ubuntu:v2:指定要创建的目标镜像名

构建对象
首先创建一个Dockerfile

FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的
第一条FROM,指定使用哪个镜像源
RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
然后使用Dockerfile,构建

runoob@runoob:~$ docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
 ---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
 ---> Using cache
 ---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> Using cache
 ---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
......

-t :指定要创建的目标镜像名
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec
可以使用新的镜像创建容器

docker run -t -i runoob/centos:6.7  /bin/bash

设置镜像标签

docker tag 860c279d2fec runoob/centos:dev
posted @ 2017-02-13 20:05  zhangshihai1232  阅读(155)  评论(0)    收藏  举报