回顾一下docker
docker的图标: 大海里有鲸鱼,鲸鱼背上有集装箱
大海: 就是我们的宿主机,我这里是windows10
鲸鱼: 就是我们的docker
集装箱: 就是我们的容器实例,它来自于我们的镜像模板
Docker常见命令
帮助命令
- docker version: 查看docker版本信息
- docker info: 查看docker容器信息
- docker --help: 查看docker帮助命令文档
镜像命令
- docker images: 列出本地主机上的镜像
- REPOSITORY: 表示镜像的仓库源
- TAG: 镜像的标签
- IMAGE ID: 镜像ID
- CREATED: 镜像创建时间
- SIZE: 镜像大小
- 同一个仓库源可以有多个TAG,代表这个仓库源的不同版本,我们使用REPOSITORY:TAG来定义不同的镜像,如果不指定版本标签,默认最新的
- docker images的一些常见参数
- -a: 列出本地所有的镜像(a就表示all),例如: docker images -a
- -q: 只显示镜像ID(只有8位),例如: docker images -q
- -qa: 显示本地所有镜像的ID,例如: docker images -qa
- –digests: 显示镜像的摘要信息,也就是一些说明,例如: docker images --digests
- –no-trunc: 显示完整的镜像信息(ID会显示完整而不是前12位),例如: docker images --digests
- docker search 某个镜像名字: 表示去docker hub上根据镜像的名字查询镜像,例如 docker search tomcat
- docker search 常见参数说明
- –no-trunc: 显示完整的镜像描述,例如: docker search --no-trunc tomcat
- –filter=stars=num: 列出收藏数不小于指定值的镜像,例如: docker search --filter=stars=30 tomcat,或者也可以和上面的连用:docker search --filter=stars=30 --no-trunc tomcat
- docker pull 某个镜像的名字: 表示从仓库源中下载指定镜像
- 格式: docker pull 镜像名字[:TAG],例如: docker pull tomcat 等价于dock er pull tomcat:latest
- docker rmi 某个镜像名字[:版本号]: 表示删除某个版本的镜像,默认为最新版
- 删除单个镜像(f表示强制删除): docker rmi -f 镜像名(镜像ID),例如: docker rmi -f hello-world
- 删除多个镜像: docker rmi -f 镜像名1:TAG 镜像名2:TAG,其中TAG如果为latest可以不写
- 删除全部: docker rmi -f $(docker images -qa)
容器命令1
首先,我们需要知道,有镜像才能创建容器
我们在这里新pull一个centos镜像作为例子
- 新建并启动容器: docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
run命令就做两件事: 一是根据镜像名新建一个实例(本地没有这个镜像就去仓库源拉下来然后新建实例),二是将这个实例跑起来,此时是以前台进程的方式运行- OPTIONS常见参数说明:
- –name=“容器新名字”: 为容器指定一个名字,例如: docker run -it --name=“mycentos” centos
- -d: 后台运行容器,并返回容器ID,也即启动守护式容器
- -i: 以交互式运行容器,通常与-t同时使用,例如: docker run -it centos(centos的id也可以),启动之后就会自动给容器实例赋一个值(类似于对象地址),然后在该容器中自动打开一个终端,并位于其根目录下
- -t: 为容器重新分配一个伪输入终端,通常与-i同时使用,即-it
- -P: 随机端口映射
- -p: 指定端口映射,有以下四种格式
- ip:hostPort:containerPort
- ip::containerPort
- hostPort:containerPort
- containerPort
- OPTIONS常见参数说明:
- 列出当前docker中所有正在运行的容器: docker ps [OPTIONS],注意这个命令要在docker环境下运行时(root后面是docker)才能使用,否则会报错docker找不到
- OPTIONS参数说明
- -a: 列出当前所有正在运行的容器+历史运行过的容器
- -l: 显示最近创建的容器
- -n: 显示最近n个创建的容器
- -q: 静默模式,只显示容器编号
- –no-trunc: 不截断输出
- OPTIONS参数说明
- 退出容器
- exit: 容器停止并退出
- ctrl+P+Q: 容器不停止退出
- 启动容器: docker start 容器名/容器ID
- 重启容器: docker restart 容器名/容器ID
- 停止容器: docker stop 容器名/容器ID
- 强制停止容器: docker kill 容器名/容器ID
- 删除已停止的容器(此时-a就不会显示了,因为缓存记录也删除了)
- 一次删除一个已停止的容器 : docker rm 容器ID
- 一次删除一个容器,不论是否已停止: docker rm -f 容器ID
- 一次删除多个容器: docker rm -f $(docker ps -a -q)
容器命令2
- 启动守护式容器(以后台方式运行): docker run -d 容器名,但是这样会有一个问题,当你启动一个守护容器之后再用docker ps查是查不到的,它由于没有前台进程,所以它觉得它没事了,就自动退出了,这是docker的机制
- 查看容器日志: docker logs -f -t --tail 容器ID,例如: docker logs -f -t --tail “all” 7aacaafeb3e8,其中-t是加入时间戳,-f是跟随最新的日志打印,–tail all表示显示全部,–tail 1表示只显示最后一行
- 查看容器内运行的进程: docker top 容器ID
- 查看容器内部细节: docker inspect 容器ID
- 进入正在运行的容器并以命令行的方式交互
- docker exec (-it )容器ID/容器名 shell指令,例如: docker exec (-it) 11a408fc6dd9 ls -l表示查看centos容器下的所有文件,不进入此容器但是可以返回操作结果
- docker attach 容器ID/容器名 == docker exec -it 容器ID/容器名 /bin/bash,例如: docker attach 11a408fc6dd9 进入该容器
- 上述两者的区别: attach直接进入容器启动命令的终端,不会启动新的线程,而exec是在容器中打开新的终端,并且可以启动新的线程
- 从容器内拷贝文件到主机上: docker cp 容器ID:容器内路径 目的主机路径
容器命令3
- 查看docker是否启动: systemctl is-active docker
- 查看docker是否自启动: systemctl is-enabled docker
- 查看docker信息: docker info
- 删除所有未使用的镜像和容器: docker system prune
- 登录docker hub: docker login
- 退出docker hub登录: docker logout
- 要上传到docker hub的镜像,其名必须遵守一个convention: <docker_id>/<image_name>:<tag_name>
- 重命名image: docker tag
- 自动重启docker: docker run --restart=unless-stopped