查看docker版本:
# docker version
或者 # docker -v
查看docker详细信息,包括镜像和容器数
# docker info
搜索docker镜像:
# docker search all //所有镜像
docker search 用于从 Docker Hub(https://hub.docker.com)中搜索指定的镜像
- --automated :只列出 automated build类型的镜像;
- --no-trunc :显示完整的镜像描述;
- -s :列出收藏数不小于指定值的镜像。
# docker search -s 100 centos //列出收藏数大于100的centos镜像
输出详情:
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。
获取dock镜像
# docker pull 镜像名
或者 # docker image pull 镜像名
-a :拉取所有 tagged 镜像
查看镜像列表,列出本地的所有images
# docker images
- -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- --digests :显示镜像的摘要信息;
- -f :显示满足条件的镜像;
- --format :指定返回值的模板文件;
- --no-trunc :显示完整的镜像信息;
- -q :只显示镜像ID。
# docker images centos //列出本地镜像中REPOSITORY为centos的镜像列表
给镜像打标签
# docker tag 11662b14f5e0 镜像名:标签
一个镜像可以打多个标签
# docker tag 镜像名:标签 新名:新标签
共用一个镜像ID
删除镜像,从本地删除一个已经下载的镜像
# docker rmi 镜像名:标签 (需先删除容器)
- -f :强制删除;
- --no-prune :不移除该镜像的过程镜像,默认移除;
或者# docker image rmi 镜像名:标签
移除一个或多个容器实例
# docker rm 容器名1 容器名2
移除所有容器
# docker rm $(docker ps -aq)
-a:显示所有docker实例
-q:只显示container id
使用这个命令,把docker ps -aq产生的输入作为输入传入到docker rm命令,达到删除所有容器实例的效果。
创建一个容器并运行:
# docker run -tid --name 容器名 镜像名:标签 /bin/bash
- -a stdin : 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d : 后台运行容器,并返回容器ID;
- -i : 以交互模式运行容器,通常与 -t 同时使用;
- -P : 随机端口映射,容器内部端口随机映射到主机的高端口
- -p : 指定端口映射,格式为:主机(宿主)端口:容器端口
- -t : 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- --name="nginx-lb" : 为容器指定一个名称;
- --dns 8.8.8.8 : 指定容器使用的DNS服务器,默认和宿主一致;
- --dns-search example.com : 指定容器DNS搜索域名,默认和宿主一致;
- -h "mars" : 指定容器的hostname;
- -e username="ritchie" : 设置环境变量;
- --env-file=[] : 从指定文件读入环境变量;
- -m :设置容器使用内存最大值;
- --net="bridge" : 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- --link=[] : 添加链接到另一个容器;
- --expose=[] : 开放一个端口或一组端口;
- --volume , -v : 绑定一个卷
或者# docker create //只创建容器不运行
设置容器开机自启:
# docker run -tid --restart always --name 容器名 镜像名 /bin/bash
--restart=always : 设置容器开机自启,在创建容器的时候使用
--restart=no :关闭开机自启
如果容器已经被创建,我们想要修改容器的重启策略
# docker update --restart no 容器名
创建d2容器并与d1建立容器间网络的持久性连接
# docker run -itd --name d2 --link=d1:mysql centos /bin/bash
在/etc/hosts内查看解析
创建容器时将本地目录挂载到容器,本地与容器共用该目录
# docker run -tid -v /本地目录:/tmp/data --name c1 centos /bin/bash
# docker run -tid --volumes-from c1 --name c2 centos /bin/bash //创建c2也同c1一样共享该目录,感觉没什么用,直接用上一条就行了
退出容器:
快捷键:Ctrl+p+q //该方式退出但不暂停容器
容器内执行: # exit 或 ctrl+d //该方式退出容器并关闭容器
显示docker服务信息:
# docker ps //列出容器
或者 # docker container ls
- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- --format :指定返回值的模板文件。
- -l :显示最近创建的容器。
- -n :列出最近创建的n个容器。
- --no-trunc :不截断输出。
- -q :静默模式,只显示容器编号。
- -s :显示总的文件大小。
输出详情:
CONTAINER ID :容器ID
IMAGE :使用的镜像
COMMAND :容器里面运行的命令
CREATED : 创建时间
STATUS :容器的状态
PORTS :容器的端口映射
NAMES :容器的名字
status状态有7种:
- created(已创建)
- restarting(重启中)
- running(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
在运行的容器中执行命令
# docker exec
- -d :分离模式: 在后台运行
- -i :即使没有附加也保持STDIN 打开
- -t :分配一个伪终端
docker exec -it mynginx /bin/sh /root/runoob.sh
//在容器 mynginx 中以交互模式执行容器内 /root/runoob.sh 脚本
单独某个容器的详细信息:
# docker inspect d95 //d95是我机器上运行的一个容器ID的前3个字符
# docker inspect 容器名
- -f :指定返回值的模板文件。
- -s :显示总的文件大小。
- --type :为指定类型返回JSON。
重新进入容器:
# docker attach 容器名
启动某个容器:
# docker start 容器名
# docker restart 容器名
停止某个docker:
# docker kill 026e
# docker stop 容器名
从容器创建一个新的镜像
# docker commit
- -a :提交的镜像作者;
- -c :使用Dockerfile指令来创建镜像;
- -m :提交时的说明文字;
- -p :在commit时,将容器暂停。
# docker commit -a "tanxiao" -m "my nginx" -p 容器名或ID 镜像名:标签
备份、注入本地镜像
docker save -o 备份名.tar 镜像名:标记 //备份
docker load --input 包名 //注入
docker load < 包名 //注入
常用操作流程示意图,马哥视频里截出来的