Docker常用指令汇总
Posted 夏小悠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker常用指令汇总相关的知识,希望对你有一定的参考价值。
文章目录
前言
本篇文章主要汇总了项目开发过程中常用的docker
命令,以便后续查询。
1. docker镜像篇
1.1 拉取镜像
只需要给出镜像的名字和标签,就能在官方仓库中定位一个镜像,命令的格式如下:
docker [image] pull repository[:<tag>]
# Ubuntu镜像的拉取
# docker image pull ubuntu:latest
# docker pull ubuntu:20.04
# docker pull ubuntu
# 加载本地的镜像文件
docker load -i ubuntu_18.04.tar
# 导出镜像
docker save -o ubuntu_18.04.tar ubuntu:18.04
一般来说,镜像的
latest
标签意味着该镜像的内容会跟踪最新版本的变更而变化,内容是不稳定的。因此,从稳定性上考虑,不要在生产环境中忽略镜像的标签信息或使用默认的latest
标记的镜像。
1.2 查看镜像信息
列出本地主机上已有镜像的基本信息:
docker images [ls]
REPOSITORY: 来自于哪个仓库,比如ubuntu表示ubuntu系列的基础镜像
TAG: 镜像的标签信息,比如18.04、latest表示不同的版本信息。标签只是标记,并不能标识镜像内容
IMAGE ID: 镜像唯一标识,如果两个镜像的ID相同,说明它们实际上指向了同一个镜像,只是具有不同标签名称而已
CREATED: 镜像最后的更新时间(创建时间)
SIZE: 镜像大小(优秀的镜像往往体积都较小)
为了方便在后续工作中使用特定镜像,还可以使用docker tag
命令来为本地镜像任意添加新的标签:
docker tag ubuntu:latest myubuntu:latest
# 此时从本地主机上的镜像信息中就可以看到多了一个myubuntu:latest标签的镜像
1.3 搜寻镜像
使用docker search
命令可以搜索Docker Hub
官方仓库中的镜像:
# 搜索官方提供的带nginx关键字的镜像
docker search --filter=is-official=true nginx
# 搜索所有收藏数超过4且关键词包括tensorflow的镜像
docker search --filter=stars=4 tensorflow
# -f,--filter:过滤输出内容;
# --format:格式化输出内容;
# --limit:限制输出结果个数,默认为25个;
# --no-trunc:不截断输出结果
1.4 删除镜像
当不再需要某个镜像的时候,可以使用docker rmi
或docker image rm
命令来删除该镜像:
# 通过tag来删除镜像
docker rmi name:tag
# 通过id来删除镜像
docker rmi image-id # 会先尝试删除所有指向该镜像的标签,然后删除该镜像文件本身
# -f,-force:强制删除镜像,即使有容器依赖它(不建议使用)
# -no-prune:不要清理未带标签的父镜像
如果被删除的镜像上存在运行状态的容器,那么删除操作不会被允许(默认)。通常并不推荐使用-f
参数来强制删除一个存在容器依赖的镜像。正确的做法是,先删除依赖该镜像的所有容器,再来删除镜像。
docker ps # 查看本机上运行中的容器
docker ps -a # 查看本机上存在的所有容器(包括已经停止运行的)
docker stop cotianername/containerid # 停止容器
docker start cotianername/containerid # 启动容器
docker rm cotianername/containerid # 删除容器
docker exec -it containername/containerid /bin/bash # 进入
exit # 退出容器
2. docker容器篇
2.1 创建并启动容器
可以使用docker [container] create
命令新建一个容器:
# -it 交互式
docker create -it ubuntu:latest
使用docker [container] create
命令新建的容器处于停止状态,可以使用docker [container] start
命令来启动它:
docker start CONTAINER-ID
当然,也可以直接使用docker [container] run
命令来新建并启动容器:
# 后台模式启动容器,并输出`Hello world`
docker run ubuntu:latest /bin/echo 'Hello world'
# 等价于先执行docker [container] create命令,再执行docker [container] start命令
# 交互式
docker run -it ubuntu:18.04 /bin/bash
# -t: 让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
# -i: 让容器的标准输入保持打开
# 更多的命令选项可以通过man docker-run 命令来查看
2.2 查看容器输出
要获取容器的输出信息,可以通过docker [container] logs
命令:
docker logs CONTAINER-ID
# -details:打印详细信息;
# -f,-follow:持续保持输出;
# -since:输出从某个时间开始的日志;
# -tail:输出最近的若干日志;
# -t,-timestamps:显示时间戳信息;
# -until:输出某个时间之前的日志
2.3 停止容器
可以使用docker [container] pause
命令来暂停一个运行中的容器:
docker pause CONTAINER-ID # 处于paused状态
# 恢复到运行状态
docker unpause CONTAINER-ID
使用docker [container] stop
来终止一个运行中的容器:
docker stop CONTAINER-ID # 处于stop状态
# 此时,执行docker container prune命令,会自动清除掉所有处于停止状态的容器
处于终止状态的容器,可以通过docker [container] start
命令来重新启动:
docker start CONTAINER-ID
# docker [container] restart命令会将一个运行态的容器先终止,然后再重新启动
2.4 进入容器
在使用-d
参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。这个时候如果需要进入容器进行操作,推荐使用官方的attach
或exec
命令。
docker [container] attach CONTAINER
docker [container] exec CONTAINER COMMAND(推荐)
2.5 删除容器
可以使用docker [container] rm
命令来删除处于终止或退出状态的容器:
docker rm CONTAINER
3. 关于docker run
docker run
表示创建一个新的容器并运行一个镜像。
docker run [option] image-name [the first command to execute after entering the container]
option | desc |
---|---|
-d | 在后台运行容器并打印容器 ID |
-p | 指定端口映射 local port:docker port |
-P | 随机端口映射 |
--name | 为容器指定一个名字 |
-i | 以交互模式运行容器 |
-t | 容器启动后会进入其命令行 |
-it | 即-i 与-t 的组合,容器创建就能登录进去,即分配一个伪终端 |
-u | 用户名 |
-v | 文件目录映射 |
-w | 容器内的工作目录 |
docker
官方镜像库----> dockerhub
以上是关于Docker常用指令汇总的主要内容,如果未能解决你的问题,请参考以下文章
Docker学习总结(59)——DockerFIile相关知识点再总结