`docker 命令全集
一:首先来理解三个名词解释:
1、镜像(image)
Docker 镜像(Image)就是一个只读的模板。例如:一个镜像可以包含一个完整的操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
2、仓库(repository)
仓库(Repository)是集中存放镜像文件的场所。
3、容器(container)
Docker 利用容器(Container)来运行应用。容器是从镜像(Image)创建的运行实例。
二:常用的命令集合如下:
容器生命周期管理 — docker
[run|start|stop|restart|kill|rm|pause|unpause|create]
容器操作运维 — docker
[ps|exec|inspect|top|attach|events|logs|wait|export|import|port]
容器rootfs命令 — docker
[commit|cp|diff]
本地镜像管理 — docker
[images|rmi|tag|build|history|save]
镜像仓库 — docker
[login|pull|push|search]
其他命令 — docker
[info|version]
命令 | 解释 |
---|---|
docker run -d --name alias-Name imageName | 在后台启动一个容器 |
docker start/stop/restart Name/ID | 启动容器/停止容器/重启容器 |
docker kill -s KILL Name/ID | 杀死一个运行的容器 |
docker rm /rm -f Name/ID | 删除容器/强制删除容器 |
docker pause/unpause Name/ID | 暂停容器/恢复容器 |
docker create --name CONTAINER_Name imageName | 只创建容器但不启动 |
docker ps / docker ps -a | 查看运行的容器 |
docker exec -it CONTAINER_ID /bin/bash [--privileged=true | false] |
ddocker attach CONTAINER_ID | 进行一个运行中的容器,不开启一个新的终端 |
docker inspect CONTAINER_Name | 查看容器的相关信息 |
docker top CONTAINER_Name | 查看容器里面的进程 |
docker events -f "image"="imageName" --since="1467302400" | 时间戳=2016年7月1日后的相关事件 |
docker logs CONTAINER_Name | 查看容器的日志输出 |
docker wait CONTAINER_Name | 阻塞运行直到容器停止,然后打印出它的退出代码 |
docker export CONTAINER_ID > test.tar | 将容器进行打包保存到本地,文件类型为tar |
docker import test.tar - image_name:tag | 将上面保存的文件导入到镜像库中 |
docker export -o test.tar CONTAINER_ID | 将容器进行打包保存到本地,文件类型为tar |
cat test.tar | docker import - image_name:tag |
docker port CONTAINER_ID | 查看容器的端口映射情况 |
docker save -o test.tar CONTAINER_ID | 将当前的镜像保存到本地的一个tar 类型的文件 |
docker load -i test.tar | 载入镜像 |
docker commit -a "tony test" -m "my mysql" CONTAINER_ID mymysql:v1 | 提交一个正在运行的容器为镜像(-a是作者-m是提交信息) |
docker cp /ruiqi/content CONTAINER_ID:/ruiqi/ | 将某文件复制到容器内 |
docker diff CONTAINER_ID | 用来检查容器里面文件结构的更改 |
docker tag mysql:v5.6 mysql:v5.7 | 给镜像做一个有别名的复本 |
docker build -t runoob/ubuntu:v1 . | 构建一个镜像 |
docker history image_name | 查看当前这个镜像的历史信息 |
docker cp /ruiqi/content CONTAINER_ID:/ruiqi/ | 将某文件复制到容器内 |
docker update [OPTIOS] CONTAINER_ID | 更新容器的一些运行时配置 |
docker login //登录镜像仓库
docker pull //从镜像仓库中拉镜像
docker push //向镜像仓库推本地的镜像文件
docker search //检索镜像内容
三:指令说明
指令 | 说明 | 举例 |
---|---|---|
ARG | 定义创建镜像过程中使用的变量 | ARG VERSION=1.9.1 |
FROM | 指定所创建镜像的基础镜像 | FROM debian:${VERSION} |
LABEL | 为生成的镜像添加元数据标签信息 | LABEL verion="1.9.1" |
EXPOSE | 声明镜像内服务监听的端口 | EXPOSE 22 80 443 |
ENV | 指定环境变量 | ENV APP_VERION=1.0.0 ENV APP_HOME=/usr/local/app ENV PATH $PATH:/usr/local/bin |
ENTRYPOINT | 指定镜像的默认入口命令 | 方法一:ENTRYPOINT ["executable", "paraml ", "param2"]: exec 调用执行 方法二:ENTRYPOINT command param 1 param2: shell 中执行 |
VOLUME | 创建一个数据卷挂载点 | VOLUME ["/data"] |
USE | 指定运行容器时的用户名或UID | |
WORKDIR | 配置工作目录 | WORKDIR /path/to/workdir WORKDR test RUN pwd 最终路径为: /path/to/workdir/test/ |
ONBUILD | 创建子镜像时指定自动执行的操作指令 | 在父镜像中定义的ONBUILD,会在在镜像中执行指令 |
STOPSIGNAL | 指定退出的信号值 | STOPSIGNAL signal |
HEALTHCHECK | 配置所启动容器如何进行健康检查 | HEALTHCHECK [OPTIONS] CMD command :根据所执行命令返回值是否为判断 |
SHELL | 指定默认shell类型 | SHELL [” executable ”,”parameters”] 默认值为 ["/bin/sh","-c"] |
ADD | 添加内容到镜像 | ADD src dest 注:如果src是一个tar,会自动解压 ADD *.c /code/ |
COPY | 复制内容到镜像 | COPY src dest |
SHELL | 指定默认shell类型 | SHELL [” executable ”,”parameters”] 默认值为 ["/bin/sh","-c"] |
四:利用dockerfile 制作一个tomcat 运行image:
[root@localhost common]# more Dockerfile.tomcat
FROM daocloud.io/centos:7
COPY jdk-8u144-linux-x64.rpm /opt/jdk-8u144-linux-x64.rpm
RUN ["rpm","-ivh","/opt/jdk-8u144-linux-x64.rpm"]
COPY security /usr/java/jdk1.8.0_144/jre/security
COPY certs /etc/pki/tls/certs
COPY tomcat /opt/tomcat
RUN ["ln","-s","/opt/tomcat","/usr/local/tomcat"]
`