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 rmidocker 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参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。这个时候如果需要进入容器进行操作,推荐使用官方的attachexec命令。

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]
optiondesc
-d在后台运行容器并打印容器 ID
-p指定端口映射 local port:docker port
-P随机端口映射
--name为容器指定一个名字
-i以交互模式运行容器
-t容器启动后会进入其命令行
-it-i-t的组合,容器创建就能登录进去,即分配一个伪终端
-u用户名
-v文件目录映射
-w容器内的工作目录

  docker 官方镜像库----> dockerhub

以上是关于Docker常用指令汇总的主要内容,如果未能解决你的问题,请参考以下文章

docker常用命令汇总

Docker 学习Docker 常用基本命令

Docker学习总结(59)——DockerFIile相关知识点再总结

Docker学习总结(59)——DockerFIile相关知识点再总结

常用指令(conda,docker,linux等)合集

Linux 常用基本命令汇总