常用命令
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
命令 | 解释 |
---|---|
docker images | 列出本地主机上的镜像链接 |
docker pull ubuntu:13.10 | 获取一个镜像 |
docker search |
从 Docker Hub 网站来搜索镜像,这里找Httpd镜像 |
docker run httpd | 运行镜像 |
docker rmi hello-world | 删除使用 |
apt-get update | 容器中执行 更新镜像 |
docker commit -m=”has update” -a=”zyf” 85a53b90bee4 zyf/ubuntu:v2 | docker commit 来提交容器副本 -m: 描述 -a 指定作者 85a53b90bee4 复制容器的容器id zyf/ubuntu:v2: 指定容器名称/tag标签 |
docker build -t zyf/centos:6.7 . | docker build 构建镜像 -t: 指定创建的目标镜像名称 . : dockerfile文件所在目录也可以绝对路径 |
docker run -it zyf/centos:6.7 /bin/bash | 镜像创建容器 |
docker tag 860c279d2fec zyf/centos:dev | 设置镜像标签 docker tag <镜像id> 用户名称:镜像源/新标签名 |
构建镜像的dockerfile文件:
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
from: 定制的镜像都是基于from镜像
run: 用于执行后面跟着的命令。有以下2种格式
#shell 格式: RUN <命令行命令>
#<命令行命令>等同于,在终端操作的shell命令。
#exec 格式: RUN ["可执行文件","参数1","参数2"]
RUN ["./test.php","dev","offline"] #等价于RUN ./test.php dev offline
注意
Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:
FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
# 以上执行会创建 3 层镜像。可简化为以下格式:
FROM centos
RUN yum install wget \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
&& tar -xvf redis.tar.gz
开始构建镜像
dockerfile文件存放目录下执行
docker build -t 镜像名称:镜像标签 .
注意: . 代表本次执行的上下文路径
上下文路径: 指docker在构建镜像,有时想本机文件,docker build 命令得知这个路径,会将路径下的所有内容打包。[由于docker是c/s运行模式,本机是c,docker引擎是s,我们需要将自己的包提供给引擎]
构建指令详解
其他
[root@iZbp109ewdz83smaysp3awZ ~]# docker images
【镜像的仓库源】 【标签】 【镜像ID】 【创建时间】 【镜像大小】
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 4e2eef94cd6b 4 days ago 73.9MB
nginx latest 4bb46517cac3 10 days ago 133MB
docker hub 地址: https://hub.docker.com/
[root@iZbp109ewdz83smaysp3awZ ~]# docker search httpd
【仓库源名称】 【描述】 【点赞数】 【是否官方】 【自动构建】
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
httpd The Apache HTTP xx 3151 [OK]
centos/httpd-xx Platform forxx 36
centos/httpd 30 [OK]