Docker常用命令

December 2, 2024

image

前言

由于Docker的普遍适用性,使得越来越多的服务与应用都是用Docker进行统一封装,投放到Docker Hub之后其他用户直接通过命令行拉取搭建即可。总结一下经常用到的Docker命令。

命令

注意,一般和Docker相关的操作都需要用到Root用户权限,所以绝大多数情况下要在命令前添加sudo,或者切换到root用户来进行提权操作

基础管理

列出所有正在运行的Docker容器

docker ps

列出所有Docker——包含已经停止运行的docker容器

docker ps -a

通过容器的ID或者自定义名字来停止某个正在运行的docker

docker stop [container ID | container Name]

根据ID或自定义容器名重启容器

docker start [container ID| container Name]

删除容器——容器必须先停止运行

docker rm [container ID | container Name]

docker Run

基础语法:

docker run [options] [ImageName] [command] [argument]

常用Options

选项含义
-a stdin指定标准输入输出内容——即Linux内核的STDIN STDOUT STDERR信息
-d后台运行,在成功运行container之后,会在命令行给出新容器的ID
-P制定端口映射,格式为[宿主端口号]:[容器端口号]
--name自定义容器名称,即上文中container Name
--volume或者-v制定container的存储位置,格式为[宿主机路径]:[容器中某个路径]

docker run示例

docker run -d --name=maxkb -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data 1panel/maxkb
  • -d代表后台运行,在执行完成后会在命令行给出新容器的ID
  • --name=maxkb,代表新容器的自定义名称为maxkb
  • -p指定将宿主机的8080端口映射到容器的8080端口
  • -v则将宿主机的~/.maxkb路径映射到容器内的/var/lib/postgresql/data
  • 1panbel/maxkb 表明拉取的镜像是1panel/maxkb

镜像

在上一步当中涉及到镜像概念,其实就是已经封装完成的docker应用,放在镜像站供人拉取,在镜像拉取到本地之后创建docker容器实例。

  • 拉取远程镜像——不创建docker实例
docker pull [authorName]/[imageName]
  • 通过docker run 拉取——创建docker实例

参照上文当中的docker run实例,最后部分的1panel/maxkb即为镜像作者/镜像名称

在拉取过程中,docker会首先寻找本地是否有相同镜像名称的镜像,如果有则会直接使用本地的镜像运行对应的镜像实例,否则会到远程拉取。

从第三方的tar文件镜像进行操作:

  • 导出镜像
docker save [ImageID] > [fileName].tar

imageID的来源:

查看所有本地镜像

docker image ls
  • 从tar文件中导入镜像
docker load < [fileName].tar
  • dokckerfile生成镜像 dockerfile本身为一种特殊的文本文件,其中包含了详细的docker镜像创建流程——按顺序,内容如下:
参数内容
from基础镜像来源
maintainerauthor
rundocker内的运行命令
add添加镜像所需要的文件
workdir工作目录
volume挂载目录
expose对外暴露的端口
run容器启动之后的命令
  • 将容器保存为镜像 停止正在运行的容器:
docker stop [container ID | container Name]

通过docker commit进行操作

docker commit [container ID] [imageName]

其中imageName即为需要生成的镜像文件名称

镜像管理

前文以及提及的

docker image ls #列出所有镜像

删除镜像

docker image rm [imageName | imageID] #或 docker rmi [imageName | imageID]

对正在运行中的docker进行更改

docker exec

docker exec -it [containerName | containerID] bash