基本概念
镜像
docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,通过这个镜像可以创建多个容器
容器
docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的
仓库
就是存放镜像的地方,仓库分为共有仓库和私有仓库
底层原理
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问。DockerServer接收到DockerClient的指令,就会执行这个命令
Docker命令
docker version :查看docker版本信息
docker info :查看docker信息
docker 命令 --help :查看帮助文档
docker stats :查看cpu的状态
docker volume ls :查看所有的数据卷
docker volume inspect 卷名称 :查看卷的信息
镜像命令
docker images (查看所有本地主机上的镜像)
-a :列出所有镜像
-q :只显示镜像的id
docker search 镜像名(搜索镜像)
docker pull 镜像名:版本号(下载镜像)
docker push 镜像名:[版本号](上传镜像)
docker login [镜像仓库网址](登录)
-u :用户名
-p :密码
docker tag [镜像id] 镜像名:版本号(为镜像添加一个版本)
docker rmi 镜像id(删除镜像)
-f :根据镜像id删除
docker rmi -f $(docker images -aq) :删除所有镜像
docker build (依据Dockerfile构建镜像)
-f :dockerfile文件的路径,文件名为Dockerfile时可以不用指定
-t :构建的镜像名及版本号(镜像名:[tag])
docker build -f dockerfile文件的路径 -t 镜像名:版本号 .
docker history 镜像id(查看镜像变更历史)
docker save 镜像名:版本号(镜像保存为压缩包)
-o :备份文件输出到本地的路径
docker load(根据备份文件恢复镜像)
-i :备份文件的位置
容器命令
docker run 镜像名(创建容器)
docker run [可选参数] image
--name="Name" :容器名字,用来区分容器
-d :后台方式运行
常见问题:容器使用后台运行,就必须有一个前台进程,docker发现没有前台应用,就会自动停止
-it :使用交互方式运行,进入容器查看内容
-p :指定容器的端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
容器端口
-P :随机指定端口
-v :数据卷挂载
-v 主机目录:容器内目录 (指定路径挂载,路径为绝对路径,/开头)
-v 容器内目录 (匿名挂载)
-v 卷名称:容器内目录 (具名挂载)
容器内目录:ro :只读,容器只有读权限,没有写权限
容器内目录:rw :读写,容器既有读权限又有写权限
--volumes-from :容器间数据卷共享
--volumes-from 容器名
--rm :用完后将容器删除,一般用来测试
docker run -it 镜像名 /bin/bash :启动并进入容器
exit (停止容器并退出容器)
Ctrl + P + Q :容器不停止退出
docker ps (列出容器)
无参数 :列出当前正在运行的容器
-a :列出所有的容器(包含当前运行的和历史运行过的)
-n=? :显示最近创建的n个容器
-q :只显示容器的编号
docker rm 容器id(删除容器)
无参数 :删除指定的容器(不能删除正在运行的容器)
-f :强制删除指定的容器
docker rm -f $(docker ps -aq) :强制删除所有的容器
docker ps -a -q | xargs docker rm :删除所有的容器
docker start 容器id(启动容器)
doeker restart 容器id(重启容器)
docker stop 容器id(停止当前正在运行的容器)
docker kill 容器id(强制停止当前容器)
docker exec -it 容器id bashShell (进入容器开启一个新的终端)
docker attach 容器id (进入容器,进入正在执行的终端)
docker logs 容器id(查看日志)
-tf :显示日志(f为加时间戳)
--tail number :要显示日志条数
docker top 容器id(查看容器中的进程信息)
docker inspect 容器id(查看镜像的元数据)
docker cp 容器id:容器内路径 目的主机路径 (拷贝文件到主机)
docker commit 提交容器成为一个新的副本
-m :提交的描述信息
-a :作者
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
数据卷
容器的持久化和同步操作,容器间的数据共享
当容器停止,此时修改宿主机上的文件,容器启动后数据依旧是同步的
当彻底删除容器时,挂载到本地的数据卷依旧存在
容器间数据卷共享时,共享文件是拷贝的概念,不属于任何容器,数据卷的生命周期一直持续到没有容器使用为止
Dockerfile
自定义构建镜像
FROM :基础镜像,一切从这里开始构建
MAINTAINER :镜像的作者,姓名+邮箱
RUN :镜像构建时需要运行的命令
ADD :往镜像中添加内容(压缩包会自动解压)
COPY :拷贝文件到镜像中
WORKDIR :镜像的工作目录
VOLUME :挂载的目录
EXPOST :端口配置
CMD :指定这个容器启动的时候要运行的命令,只有最后一个会生效,命令行追加的命令会替代改命令
ENTRYPOINT :指定这个容器启动的时候要运行的命令,命令行追加的命令直接拼接在ENTRYPOINT命令的后面
ONBUILD :当构建一个被继承Dockerfile,这时就运行ONBUILD指令(触发指令)
ENV :设置环境变量