一、Docker是什么?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
二、Docker常用命令
1.帮助命令
运行docker
Service start docker
查看版本
doker version
查看 docker详情
docker info
查看命令
docker -help
2.镜像命令
列出本地所有镜像
docker images
查找超过50点赞的
docker search -s 50
拉取镜像到本地
docker pull 镜像名:版本号
删除镜像d
docker rmi 镜像名:版本号
docker rmi -f 镜像Id
删除所有docker镜像
docker rmi -f $(docker images -qa)
3.容器命令
运行本地镜像
docker run 镜像名:版本号
-d:后台运行容器
-i:以交互模式运行容器
-t:为容器重新分配个伪输入终端
-P: 随机端口映射
-p 指定端口映射
Ip:宿主机端口:容器端口
Ip::容器端口
宿主机端口:容器端口
容器端口
查看运行的容器
docker ps 查看所有运行的容器
docker ps -a 列出所有运行过的容器
docker ps -l 列出上次运行的容器
从容器内退出
exit 关闭退出容器
Crtl+P+Q 不关闭退出容器
启动之前停止的docker
docker start 容器Id
重启docker 容器
docker restart 容器id
停止docker 容器
docker stop 容器id 热停止
docker kill 容器id 强制停止
删除docker 容器
docker rm 容器id 删除容器 -f 强制删除
docker rm $(docker ps -qa) 删除所有容器
查看容器日志
docker logs – f -t –tail 行数 容器Id
-f:是否显示追加信息
-t:是否显示时间
-tail:显示最后行数信息
查看容器中运行的进程
docker top 容器ID
查看容器内部细节
docker inspect 容器Id
进入正在运行的容器
docker attach 容器Id
不进入容器 进行操作
docker exec -t 容器Id 不进入容器 进行操作
docker exec -it 容器Id /bin/bash 类似attach
文件传输
docker cp 容器Id :/容器地址 /宿主机地址 复制东西从docker容器到宿主机
docker cp 容器Id /宿主机地址 :/容器地址 复制东西从宿主机到docker容器
提交容器
docker commit 提交容器副本使之成为一个新的镜像
docker commit -m=“提交的描述星系” -a=“作者” 容器ID
3.容器数据卷
容器内添加
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it-v /宿主机绝对路径目录:/容器内目录:ro 镜像名 容器为只读命令
4.DockerFile概念
DockerFile 是构建Docker 镜像的构建文件 ,是由 一系列命令和参数构成的脚本
构建三步骤:1.编写 dockerFile 2.docker build 3.docker run
Dockerfile每条保留字指令,必须为大写字母,后面必须更水至少一个参数指令,按照从上到下顺序执行
#
表示 注释
每条指令都会创建一个新的镜像层 ,并对镜像进行提交
5.Dockerfile 保留字指令
FROM
:基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER
: 镜像作者的姓名和邮箱地址
RUN
: 容器构建时需要运行的命令
EXPOSE
:当前容器对外暴露的端口
WORKDIR
:指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV
:用来在构建镜像过程中设置环境变量
ADD
:将宿主机目录下的文件拷贝进镜像且ADD
命令会自动处理URL和解压tar压缩包
COPY
:类似ADD
,拷贝文件和目录到镜像中,将从构建上下文目录中《源路径》的文件/目录复制到新的一层的镜像内的 《目标路径》位置 COPY[“src”,”dest”]
VOLUME
: 容器数据卷,用于数据保存和持久化工作
CMD
指定一个容器启动时要运行的命令
DOCKERFile
中可以有多个CMD
指令,但只有最后一个生效,CMD
会被docker run
之后的参数替换
ENTRYPOINT
: 指定一个容器启动是要运行的命令, ENTRYPOINT
的目的和CMD
一样,都是在指定容器启动程序及参数不会被覆盖 而是追加
ONBUILD
: 当构建一个被继承的Dockerfile是运行命令,父镜像在被子继承后父镜像的onbuild被触发