Docker的常用命令
docker的常用命令
今天来介绍docker的常用命令,非常的详细,请大家看起来!
获取镜像
如果只指定了镜像的名称,则默认会获取latest标签标记的镜像
命令格式:dokcer pull [Docker Registry地址]仓库名[:标签名]
获取centos:latest镜像
[root@localhost ~]# docker pull centos:latest
#centos:latest镜像
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
查看本地镜像信息
[root@localhost ~]# docker images #查看本地镜像信息
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 60c8a892f36f 6 weeks ago 192MB
centos latest 5d0da3dc9764 3 years ago 231MB
虚悬镜像一般是当我们使用 docker pull 拉取最新镜像时,生成的新的镜像,所以仓库名和标签给了新的镜像,旧的镜像仓库和标签则被取消,成为虚悬镜像。
我们可以使用下面的语句打印所有的虚悬镜像
[root@master ~]# docker images -f dangling=true
一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除
[root@master ~]# docker image prune
查看镜像信息
命令格式:docker images [选项][仓库名][:标签名]
-a:列出本地所有的镜像(含中间映射层,默认情况下,过滤掉中间映射层)
-f:显示满足条件的镜像
-q:只显示镜像ID
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
仓库源 标签 I D 创建时间 大小
nginx latest 60c8a892f36f 6 weeks ago 192MB
centos latest 5d0da3dc9764 3 years ago 231MB
查看镜像详细信息
[root@localhost ~]# docker image inspect 镜像名或ID
标记镜像
利用docker tag命令可为本地镜像添加标签,标签可以看作一个别名,一个镜像可以有多个标签,但只能有一个id
docker tag [镜像名][:原标签名] [镜像名][:新标签名]
eg.将centos:latest镜像标记为centos:test镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 60c8a892f36f 6 weeks ago 192MB
centos latest 5d0da3dc9764 3 years ago 231MB
[root@localhost ~]# docker tag centos:latest centos:test
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 60c8a892f36f 6 weeks ago 192MB
centos latest 5d0da3dc9764 3 years ago 231MB
centos test 5d0da3dc9764 3 years ago 231MB
删除镜像
docker rmi [选项] 镜像1 [镜像2...]
-f:强制删除
--no-prune:不移除该镜像的过程镜像,默认是移除该镜像的过程镜像的
eg.列出本地主机的所有镜像,并删除镜像名为mysql:latest的镜像
[root@localhost ~]# docker rmi mysql:latest
Untagged: mysql:latest
Untagged: mysql@sha256:2be51594eba5983f47e67ff5cb87d666a223e309c6c64450f30b5c59a788ea40
Deleted: sha256:10db11fef9ce975df1539448189656f9e3251b7984130c7a86e1b348bf298a89
Deleted: sha256:2b5b68eca9b7b6d78e543387d22e52b3721c8f38ec303b4113e3d2bf18285460
Deleted: sha256:bf45a8b9ff0a324c9de68445dd601537a40456b4fbfbebd03fb9f84543eda981
Deleted: sha256:eaca5a58ed6b177689eda6f95af4f83668e25cc78258a387b63d355720488b0f
Deleted: sha256:09768c427d8d188eff8dcece6a564245cc4dd33f12c0b809d7787923fee9f81b
Deleted: sha256:29b5e5ff823785148ad73a312b9e9b70b1717d0dadddcff0afd57451560fb5f8
Deleted: sha256:cdf2927ac95f8b2678e55b006c1d27658d288fd89445f748ac830ad993dffc1f
Deleted: sha256:ea2d3769a6a4b2a98f5670688eabb52399a519193b48f1563541744f58ee2e07
Deleted: sha256:02d8b5400ffdc72db9b31b97c527ec4b7809a3ef92f07728666b8e58b200ea4a
Deleted: sha256:32a4e636b9a06052480457b8209c4347fea87ce36588f02fe5f9aecfc926ef5e
Deleted: sha256:217e34a4f824cbbde5da4b4365fc28294902fadb2115f24426d07460a515a665
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 60c8a892f36f 6 weeks ago 192MB
centos latest 5d0da3dc9764 3 years ago 231MB
centos test 5d0da3dc9764 3 years ago 231MB
在删除镜像时,也可以使用镜像ID、镜像短ID进行删除
-q:批量删除相关镜像
删除所有仓库名为nginx的镜像
[root@localhost ~]# docker rmi $(docker images -q nginx)
删除本地所有镜像
[root@localhost ~]# docker rmi $(docker images -q)
此外,对于被多个标签引用的镜像ID,在删除镜像时需使用最后一个引用该镜像的标签,才能在删除标签的同时删除该镜像的所有文件
镜像的导入和导出
如果想与别人共享某个镜像,除了从镜像服务仓库中pull镜像和把镜像push到仓库上去之外,其实我们还可以将本地构建好的镜像直接导出并保存为文件发送给别人,例如当前有一个centos镜像,可以使用命令保存到本地
[root@master ~]# docker images
[root@master ~]# docker save centos:latest > centos_latest.tar
[root@master ~]# ll
将ubuntu:latest镜像导出生成ubuntu.tar文件
[root@localhost ~]# docker save -o ubuntu.tar ubuntu:latest
[root@localhost ~]# ls
anaconda-ks.cfg ubuntu.tar
而当你拿到别人导出的镜像文件,你可以使用docker load命令把镜像加载到本地的Docker镜像列表中
将ubuntu.tar文件导入
[root@localhost ~]# docker load --input ubuntu.tar
Loaded image: ubuntu:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 59ab366372d5 4 weeks ago 78.1MB
nginx latest 60c8a892f36f 6 weeks ago 192MB
centos latest 5d0da3dc9764 3 years ago 231MB
centos test 5d0da3dc9764 3 years ago 231MB
上传镜像
利用docker push命令可以将本地镜像上传至仓库中,默认上传到docker hub中
[root@localhost ~]# docker push [镜像名]:[标签名]
eg.上传本地镜像centos:test至镜像仓库
[root@localhost ~]# docker push centos:test
启动容器
docker run:用于从指定的镜像启动一个新的容器
docker run [选项] 镜像[:标签|@摘要] [命令] [参数...]
- -d: 后台运行容器,并返回容器 ID
- -i: 保持容器的标准输入开放
- -t: 分配一个伪终端或终端
- --name: 为容器指定一个名称
- -p: 发布容器的端口到主机
格式为 主机端口:容器端口
- -e: 设置环境变量
格式为 变量名=变量值
- --env-file: 从文件中读取环境变量
- --rm: 容器停止后自动删除容器
- -v: 挂载卷
格式为 主机目录:容器目录
- --network: 连接到指定的网络
- --restart: 设置容器的重启策略( no、on-failure、always、unless-stopped)
查看容器信息
[root@localhost ~]# docker ps [选项]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
281ab7d11aa7 registry "/entrypoint.sh /etc…" 5 hours ago Up 5 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp pri_registry
- a: 列出所有容器(包括停止的容器)
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
281ab7d11aa7 registry "/entrypoint.sh /etc…" 5 hours ago Up 4 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp pri_registry
9279742fa225 nginx:latest "/docker-entrypoint.…" 7 days ago Exited (0) 5 hours ago hungry_clarke
- -q: 仅显示容器ID
[root@localhost ~]# docker ps -q
281ab7d11aa7
- --no-trunc: 不截断输出信息,显示完整的容器ID等信息
[root@localhost ~]# docker ps --no-trunc
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
281ab7d11aa7cb0b94401b4802b967a2abe2b079a8885ba01b47b1fb1d52013e registry "/entrypoint.sh /etc/docker/registry/config.yml" 5 hours ago Up 5 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp pri_registry
- -f: 根据条件过滤显示的容器。例如,可以根据名称、状态、镜像等条件进行过滤
[root@localhost ~]# docker ps -f "name=registry"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
281ab7d11aa7 registry "/entrypoint.sh /etc…" 5 hours ago Up 5 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp pri_registry
- --format: 自定义输出格式
[root@localhost ~]# docker ps --format "{{.ID}}: {{.Names}}"
281ab7d11aa7: pri_registry
- -n: 显示最近创建的n个容器
[root@localhost ~]# docker ps -n 1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
281ab7d11aa7 registry "/entrypoint.sh /etc…" 5 hours ago Up 5 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp pri_registry
运行模式
Docker容器大体上有三种运行模式
①运行后退出
使用下面命令创建的容器,在运行后会退出。
[root@master ~]# docker run centos echo "hellowrold"
hellowrold
②守护进程模式
如果容器中运行一个守护进程,则容器会一直处于运行状态,具体命令如下所示:
[root@master ~]# docker run -d -p 82:80 nginx
a3339b25e46036ca8b930572d0083250985930781cf4f90b96f804deba0296c3
③交互式
我们也可以在运行容器时,直接与容器进行交互,具体命令如下所示
[root@master ~]# docker run -it centos /bin/bash
[root@7dfe3a1ca51f /]#
可以使用exit命令退出或者Ctrl+D退出交互界面