1.查询镜像
docker search [options] {镜像名称} // 比如: docker search centos
其他可选参数 [options]
'-f, --filter' filter: 过滤输出内容; // 这个参数比较重要,可以过滤
' --format' string: 格式化输出内容;
'--limit' int:限制输出结果个数, 默认为 25个;
'--no-trunc': 不截断输出结果。
比如搜寻 centos 的官方镜像
docker search --filter=is-official=true centos
2.拉取镜像
docker pull {镜像名称} // 比如: docker pull centos
注意:拉取镜像的时候可以设置拉取这个镜像的版本 [name:tag], tag 表示标签(一般表示版本), 不指定tag 都是按照最新版本拉取
docker pull centos:7 // 拉取centos版本为 7
3.查看镜像
docker images [options] 或者 docker image ls [options] // 查看本地已拉取的所有镜像列表
输出信息
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 9f38484d220f 3 months ago 202MB
hello-world latest fce289e99eb9 6 months ago 1.84kB
docker4w/nsenter-dockerd latest 2f1c802f322f 8 months ago 187kB
在列出信息中, 可以看到几个字段信息:
1.来自于哪个仓库, 比如 ubuntu 表示ubuntu 系列的基础镜像;
2.镜像的标签(一般表示版本)信息, 比如 7、6.9、 latest 表示不同的版本信息。 标签只是标记, 并不能标识镜像内容;
3.镜像的ID(唯一标识镜像), 如果两个镜像的ID相同, 说明它们实际上指向了同一个镜像, 只是具有不同标签名称而已;
4.创建时间, 说明镜像最后的更新时间;
5.镜像大小, 优秀的镜像往往体积都较小。
其他可选参数 [options] 这里只列出几个
'-a, --all=true | false': 列出所有(包括临时文件)镜像文件,默认为否;
'--digests=true | false': 列出镜像的数字摘要值,默认为否;
'-f, --filter=[]' : 过滤列出的镜像, 如dangling 式 rue 只显示没有被使用的镜像; // 这个比较有用
4.删除镜像
docker rmi [镜像名称:标签] 或 docker image rm [镜像名称:标签] // 命令可以删除镜像
比如删除 centos
docker rmi centos:latest // 表示删除 centos 镜像,并且是最新的版本(latest表示最新版本)
比如用镜像ID删除
docker rmi 9f38484d220f // 通过镜像ID 删除镜像
其他可选参数 [options] 这里只列出几个
'-f, -force': 强制删除镜像, 即使有容器依赖它; // 比如 docker rmi -f centos:latest 强制删除 centos 镜像
'-no-prune': 不要清理未带标签的父镜像。
不推荐使用 -f 参数来强制删除 一 个存在容器依赖的镜像。 正确的做法是,先删除依赖该镜像的所有容器, 再来删除镜像
比如先查询出这个运行的容器
docker container ls --all 或者 docker ps -a // 查询出正在运行的容器
输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
908704e5fa22 hello-world "/hello" About an hour ago Exited (0) About an hour ago quirky_lamport
通过容器ID先删除容器
docker rm 908704e5fa22 // 删除这个容器
然后在根据这个容器的镜像
docker rmi 9f38484d220f // 通过镜像ID 删除镜像
5.清理镜像
使用Docker 一 段时间后, 系统中可能会遗留一些临时的镜像文件, 以及 一 些没有被使用的镜像
docker image prune [options] // 清理镜像文件
其他可选参数 [options]
'-a, -all': 删除所有无用镜像, 不光是临时镜像;
'-filter filter': 只清理符合给定过滤器的镜像;
'-f, -force': 强制删除镜像, 而不进行提示确认。 // docker image prune -f
6.启动镜像
docker run [OPTIONS] IMAGE [COMMAND] [ARG...] // 启动镜像
其他可选参数 [options]
`-d, --detach=false`, 指定容器运行于前台还是后台,默认为false
`-i, --interactive=false`, 打开STDIN,用于控制台交互
`-t, --tty=false`, 分配tty设备,该可以支持终端登录,默认为false
`-u, --user=""`, 指定容器的用户
`-a, --attach=[]`, 登录容器(必须是以docker run -d启动的容器)
`-w, --workdir=""`, 指定容器的工作目录
`-c, --cpu-shares=0`, 设置容器CPU权重,在CPU共享场景使用
`-e, --env=[]`, 指定环境变量,容器中可以使用该环境变量
`-m, --memory=""`, 指定容器的内存上限
`-P, --publish-all=false`, 指定容器暴露的端口
`-p, --publish=[]`, 指定容器暴露的端口
`-h, --hostname=""`, 指定容器的主机名
`-v, --volume=[]`, 给容器挂载存储卷,挂载到容器的某个目录
`--volumes-from=[]`, 给容器挂载其他容器上的卷,挂载到容器的某个目录
`--cap-add=[]`, 添加权限,权限清单详见:[http://linux.die.net/man/7/capabilities](http://linux.die.net/man/7/capabilities)
`--cap-drop=[]`, 删除权限,权限清单详见:[http://linux.die.net/man/7/capabilities](http://linux.die.net/man/7/capabilities)
`--cidfile=""`, 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
`--cpuset=""`, 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
`--device=[]`, 添加主机设备给容器,相当于设备直通
`--dns=[]`, 指定容器的dns服务器
`--dns-search=[]`, 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
`--entrypoint=""`, 覆盖image的入口点
`--env-file=[]`, 指定环境变量文件,文件格式为每行一个环境变量
`--expose=[]`, 指定容器暴露的端口,即修改镜像的暴露端口
`--link=[]`, 指定容器间的关联,使用其他容器的IP、env等信息
`--lxc-conf=[]`, 指定容器的配置文件,只有在指定--exec-driver=lxc时使用
`--name=""`, 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
`--net="bridge"`, 容器网络设置:
bridge 使用docker daemon指定的网桥
host //容器使用主机的网络
container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源
none 容器使用自己的网络(类似--net=bridge),但是不进行配置
`--privileged=false`, 指定容器是否为特权容器,特权容器拥有所有的capabilities
`--restart="no"`, 指定容器停止后的重启策略:
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
`--rm=false`, 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
`--sig-proxy=true`, 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理
示例
- 运行一个在后台执行的容器,同时,还能用控制台管理:
docker run -i -t -d centos:latest
- 运行一个带命令在后台不断执行的容器,不直接展示容器内部信息:
docker run -d centos:latest ping www.docker.com
- 运行一个在后台不断执行的容器,同时带有命令,程序被终止后还能重启继续跑,还能用控制台管理,
docker run -d --restart=always centos:latest ping www.docker.com
- 为容器指定一个名字,
docker run -d --name= centos_server centos:latest
- 容器暴露80端口,并指定宿主机80端口与其通信(宿主机端:容器需暴露的端口),
docker run -d --name= centos_server -p 80:80 centos:latest
- 指定容器内目录与宿主机目录共享(宿主机文件夹:容器需共享的文件夹),
docker run -d --name= centos_server -v /etc/www:/var/www centos:latest
网友评论