docker文档
镜像命令
-
docker images #列出主机上的镜像
-a:列出本地所有的镜像(含中间映像层);
-q:只显示镜像ID。
–digests:显示镜像的摘要信息
–no-trunc:显示完整的镜像信息
-
docker search xxxx #搜索镜像
-s:列出收藏数不小于指定值得镜像
–no-trunc:完整的镜像信息
–automated:只列出automated build类型的镜像
-
docker pull xxxx:下载镜像
-
docker rmi:删除镜像
-f:强制删除
docker -rmi -f $(docker images -q) #删除全部镜像
容器命令
-
docker run 镜像id或者镜像名字:版本(不写默认latest) #新建并启动服务器
–name 名字 :为容器指定一个名称
-d:后台运行容器,并返回容器ID,也既启动守护容器
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
-P:随机端口映射
-p:指定端口映射,有下列四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort(例如8888:8080 对外8888端口访问,容器内部使用的是8080端口)
containerPort
-
docker ps #列出当前所有容器
-a:列出当前所有正在运行的容器+历史上运行过的
-l:显示最近创建的容器
-n:显示最近n个创建的容器
-q:静默模式,只显示容器编号
–no-trunc:不截断输出
- 退出
- exit 容器停止退出
- ctrl+P+Q 容器不停止退出
- 退出
-
docker start 容器ID或者容器名 #启动容器
-
docker restart 容器ID或者容器名 #重启容器
-
docker stop 容器ID或者容器名 #停止容器(电脑开始 关机)
-
docker kill 容器ID或者容器名 #强制停止(拔电源)
-
docker rm 容器ID #删除已经停止的容器
-f:强制删除
删除所有容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
重要命令
-
docker run -d #启动守护式容器(例如启动Tomcat)
-
docker logs -f -t --tail 容器ID #查看容器日志
-t:加入时间戳
-f:跟随最新的日志打印
–tail 数字 : 数字显示最后多少条
-
docker top 容器ID #查看容器内进程
-
docker inspect 容器ID #查看容器内部细节,以json字符串展示
-
进入正在运行的容器并以命令行交互
docker exec -it 容器ID #是在容器中打开新的终端,并且可以启动新的进程(可以进入容器,也可以在终端执行返回结果,不进入容器)
docker attach 容器ID #直接进入容器启动命令的终端,不会启动新的进程
-
docker cp 容器ID:/路径/文件名 /路径 #从容器中拷贝文件到主机上
提交命令
- docker commit -a=“作者” -m=“信息” 容器ID “名字”:版本 #可以更改容器后重新提交使之成为一个新的镜像
容器数据卷
当我们在使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们关闭docker容器时是会消失的,但是其中产生的部分内容我们是希望能够把它给保存起来另作用途的,Docker将应用与运行环境打包成容器发布,我们希望在运行过程钟产生的部分数据是可以持久化的的,而且容器之间我们希望能够实现数据共享。
- docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名 #容器和宿主机数据共享(只要建立,只要容器不删除,容器无论是否启动都会共享)
- docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名 #ro–read only 只读模式(只允许主机创建和修改文件,不允许容器创建和修改)
Dockerdile
基础知识
- 每条指令保留字指令都必须为大写字母且后面要跟随至少一个参数。
- 指令按照从上到下,顺序执行。
- #表示注释。
- 每条指令都会创建一个新的镜像层,并对镜像进行提交。
Docker执行Dockerfile的大致流程
- dokcer从基础镜像运行一个容器
- 执行一条指令并对容器做出修改
- 执行类似docker commit的操作提交一个新的镜像层
- 执行dockerfile中的下一条指令直到所有的指令都执行完成
Dockerfile体系结构(保留字指令)
-
FROM #基础镜像,当前新镜像是基于哪个镜像的
-
MAINTAINER #镜像维护者的姓名和邮箱地址
-
RUN #容器构造时需要运行的命令
-
EXPOSE #当前容器对外暴露出的端口
-
WORKDIR #指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
-
ENV #用来构建镜像过程中设置环境变量
-
ADD #将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
-
COPY #类似ADD,拷贝文件到镜像中
#将从构建上下文目录中<原路径>的文件/目录赋值到新的一层的镜像内的<目标路径>位置
COPY src dest
COPY [“src”,“dest”]
-
VOLUME #容器数据卷,用于数据保存和持久化工作
-
CMD #指定一个容器启动时要运行的命令(可以有多个CMD指令,但是只有最后一个生效,且CMD会被docker run 之后的参数替换)
-
ENTRYPOINT #指定一个容器启动时要运行的命令(ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数,不会被替换,会被追加)
-
ONBUILD #当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
自定义镜像
- 编写,使用保留字指令编写文件,例如新建dockerfile文件
- docker build -f dockerfile -t 新镜像名字:TAG . #注意结尾有个"."
- 运行
- 列出镜像的变更历史