参考文档: http://www.runoob.com/docker/docker-command-manual.html
Docker 内部
要理解 Docker 内部构建,需要理解以下三种部件:
Docker 镜像 - Docker images
Docker 仓库 - Docker registeries
Docker 容器 - Docker containersDocker
镜像Docker
镜像是 Docker 容器运行时的只读模板,每一个镜像由一系列的层 (layers) 组成。
Docker 使用 UnionFS 来将这些层联合到单独的镜像中。UnionFS 允许独立文件系统中的文件和文件夹(称之为分支)被透明覆盖,形成一个单独连贯的文件系统。正因为有了这些层的存在,Docker 是如此的轻量。当你改变了一个 Docker 镜像,比如升级到某个程序到新的版本,一个新的层会被创建。因此,不用替换整个原先的镜像或者重新建立(在使用虚拟机的时候你可能会这么做),只是一个新 的层被添加或升级了。现在你不用重新发布整个镜像,只需要升级,层使得分发 Docker 镜像变得简单和快速。
Docker 仓库
Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。同样的,Docker 仓库也有公有和私有的概念。公有的 Docker 仓库名字是 Docker Hub。Docker Hub 提供了庞大的镜像集合供使用。这些镜像可以是自己创建,或者在别人的镜像基础上创建。Docker 仓库是 Docker 的分发部分。
Docker 容器
Docker 容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境。每一个 Docker 容器都是从 Docker 镜像创建的。Docker 容器可以运行、开始、停止、移动和删除。每一个 Docker 容器都是独立和安全的应用平台,Docker 容器是 Docker 的运行部分。
Docker常用命
1:镜像仓库
login 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hubdocker
logout 退出
pull 拉取镜像 docker pull java : 从Docker Hub下载java最新版镜像。
push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
search: 从Docker Hub查找镜像
--automated :只列出 automated build类型的镜像;
--no-trunc :显示完整的镜像描述;
-s :列出收藏数不小于指定值的镜像。
docker search -s 10 java ---->从Docker Hub查找所有镜像名包含java,并且收藏数大于10的镜像
2:本地镜像管理
docker build: 使用Dockerfile创建镜像。
docker images : 列出本地镜像。
docker history : 查看指定镜像的创建历史。
docker history runoob/ubuntu:v3---->查看本地镜像runoob/ubuntu:v3的创建历史。
docker save : 将指定镜像保存成 tar 归档文件。
docker import : 从归档文件中创建镜像。
3:容器
docker run :创建一个新的容器并运行一个命令-d: 后台运行容器,并返回容器ID;
--name="nginx-lb": 为容器指定一个名称;
docker run --name mynginx -d nginx:latest 使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker start :启动一个或多少已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器
docker rm :删除一个或多少容器
docker kill :杀掉一个运行中的容器。
docker create :创建一个新的容器但不启动它
docker exec :在运行的容器中执行命令
docker ps : 列出容器-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
docker top :查看容器中运行的进程信息,支持 ps 命令参数。
docker top mymysql--->查看容器mymysql的进程信息。
docker attach :连接到正在运行中的容器。
docker logs : 获取容器的日志
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志
docker logs --since="2016-07-01" --tail=10 mynginx --->查看容器mynginx从2016年7月1日后的最新10条日志。
docker port :列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口。
docker port mymysql :查看容器mynginx的端口映射情况。
docker wait : 阻塞运行直到容器停止,然后打印出它的退出代码。
Dockerfile相关命令
FROM 必须是 Dockerfile 中非注释行的第一个指令,即一个 Dockerfile 从FROM语句开始。指定构建镜像的基础源镜像,如果本地没有指定的镜像,则会自动从 Docker 的公共库 pull 镜像下来。
MAINTAINER指定创建镜像的用户RUN每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像
CMD指定在 Dockerfile 中只能使用一次,如果有多个,则只有最后一个会生效。
EXPOSE告诉 Docker 服务端容器对外映射的本地端口,需要在 docker run 的时候使用-p或者-P选项生效。
ENV指定一个环节变量,会被后续RUN指令使用,并在容器运行时保留。
ADD复制本地主机文件、目录或者远程文件 URLS 从 并且添加到容器指定路径中 。
COPY复制新文件或者目录从 并且添加到容器指定路径中 。用法同ADD,唯一的不同是不能指定远程文件 URLS。
ENTRYPOINT配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖,而CMD是可以被覆盖的。如果需要覆盖,则可以使用docker run --entrypoint选项。
每个 Dockerfile 中只能有一个ENTRYPOINT,当指定多个时,只有最后一个生效。
WORKDIR为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd最终路径是/a/b/c
WORKDIR指令可以在ENV设置变量之后调用环境变量:
ENV DIRPATH /path
WORKDIR $DIRPATH/$DIRNAME最终路径则为 /path/$DIRNAME。
网友评论