Docker 常用命令

Docker 常用命令

  • [1 帮助启动类命令](#1 帮助启动类命令)
  • [2 镜像命令](#2 镜像命令)
    • [2.1 查看本地镜像](#2.1 查看本地镜像)
    • [2.2 检索镜像(从镜像库)](#2.2 检索镜像(从镜像库))
    • [2.3 拉取镜像](#2.3 拉取镜像)
    • [2.4 "重命名"镜像](#2.4 “重命名”镜像)
    • [2.5 构建镜像](#2.5 构建镜像)
      • [2.5.1 提交为镜像](#2.5.1 提交为镜像)
    • [2.6 删除镜像](#2.6 删除镜像)
  • [3 容器相关命令](#3 容器相关命令)
    • [3.1 创建容器和启动](#3.1 创建容器和启动)
      • [3.1.1 创建容器并启动(最常用)](#3.1.1 创建容器并启动(最常用))
      • [3.1.2 只创建容器不启动](#3.1.2 只创建容器不启动)
    • [3.2 列出本机的容器](#3.2 列出本机的容器)
    • [3.3 退出容器](#3.3 退出容器)
    • [3.4 启动已经停止的容器](#3.4 启动已经停止的容器)
    • [3.5 重启容器](#3.5 重启容器)
    • [3.6 停止容器](#3.6 停止容器)
    • [3.7 强制停止容器](#3.7 强制停止容器)
    • [3.8 删除容器](#3.8 删除容器)
    • [3.9 容器日志](#3.9 容器日志)
    • [3.10 查看docker 内的进程](#3.10 查看docker 内的进程)
    • [3.11 查看容器内部细节](#3.11 查看容器内部细节)
    • [3.12 重新计入容器](#3.12 重新计入容器)
    • [3.13 拷贝容器内的文件到主机](#3.13 拷贝容器内的文件到主机)
    • [3.14 导出导入容器](#3.14 导出导入容器)

1 帮助启动类命令

bash 复制代码
#启动docker
sudo systemctl start docker
#停止docker 
sudo systemctl stop docker
#重启docker
sudo systemctl restart docker 
#查看dokcer 状态
sudo systemctl status docker
#开机启动docker
sudo systemctl enable docker
# 查看docker 基本信息
docker info
#查看docker 版本
docker version
# 查看docker 帮助文档
docker --help
#查看docker某个命令帮助
docker xx --help

2 镜像命令

2.1 查看本地镜像

docker images [OPTIONS] [REPOSITORY[:TAG]]

  • OPTIONS
    • -q 只显示镜像ID,不加 则显示全部字段
  • REPOSITORY
    • 加上REPOSITORY表示只查看指定镜像名称的镜像,不加 显示全部镜像
bash 复制代码
$ docker images
#或[root@localhost ~]# docker image ls 
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
docker.io/redis             latest              dc7b40a0b05d        16 months ago       117 MB
docker.io/openjdk           17.0-jdk-oracle     5e28ba2b4cdb        20 months ago       471 MB
ccf-service-dispatch        latest              3f5c5e0a7370        3 years ago         224 MB
$ docker images redis
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/redis     latest              dc7b40a0b05d        16 months ago       117 MB
$ docker images -q redis
dc7b40a0b05d

2.2 检索镜像(从镜像库)

docker search [OPTIONS] 镜像名称

  • OPTIONS --limit num 限制数量
bash 复制代码
[root@localhost ~]# docker search redis
INDEX       NAME                                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/redis                               Redis is an open source key-value store th...   12580     [OK]       
docker.io   docker.io/bitnami/redis                       Bitnami Redis Docker Image                      271                  [OK]=
[root@localhost ~]# docker search --limit 2 redis

NAME:镜像名称, DESCRIPTION :镜像描述 ,STARS :点赞数量 OFFICIAL:是否官方认证, AUTOMATED:

是否自动提交

2.3 拉取镜像

docker pull NAME[:TAG|@DIGEST]

  • tag 则拉取最新的镜像 tage为lastest
  • 查看镜像、容器、数据卷的空间
bash 复制代码
[root@master ~]# docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              14                  6                   4.006 GB            2.049 GB (51%)
Containers          9                   5                   90.09 MB            46.61 MB (51%)
Local Volumes       36                  2                   3.148 GB            3.148 GB (99%)

2.4 "重命名"镜像

如果你想要自定义镜像名称或者推送镜像到其他镜像仓库,你可以使用docker tag命令将镜像重命名。

docker tag [SOURCE_IMAGE][:TAG] [TARGET_IMAGE][:TAG]

bash 复制代码
$ docker tag busybox:latest mybusybox:latest
#执行完docker tag命令后,可以使用查询镜像命令查看一下镜像列表:
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              018c9d7b792b        3 weeks ago         1.22MB
mybusybox           latest              018c9d7b792b        3 weeks ago         1.22MB

可以看到,镜像列表中多了一个mybusybox的镜像。但细心的同学可能已经发现,busybox和mybusybox这两个镜像的 IMAGE ID 是完全一样的。为什么呢?实际上它们指向了同一个镜像文件,只是别名不同而已。

2.5 构建镜像

构建镜像主要有两种方式:

  • 使用docker commit命令从运行中的容器提交为镜像;
  • 使用docker build命令从 Dockerfile 构建镜像。

2.5.1 提交为镜像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

  • Options:
    -a, --author string Author (e.g., "John Hannibal Smith hannibal@a-team.com")
    -c, --change list Apply Dockerfile instruction to the created image
    -m, --message string Commit message
    -p, --pause Pause container during commit (default true)
    当对某个容器进行文件编辑或者扩展功能后,需要保存为新的镜像时

2.6 删除镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]

  • OPTIONS
    • -f 强制删除
  • IMAGE :镜像名称[:TAG]或镜像ID
bash 复制代码
#删除hello-world 镜像
$ docker rmi hello-world
#删除redis:latest 和hello-world 镜像
$ docker rmi -f redis:latest hello-world
# 删除全部
$ docker rmi -f ${docker images -qa}

3 容器相关命令

3.1 创建容器和启动

3.1.1 创建容器并启动(最常用)

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

  • OPTIONS
    • --name=名称 为容器指定名称,不指定 随机分配
    • -d 后台运行容器(守护模式) 并返回容器ID
    • -it ,启动一个交互式容器,-i:交互式运行, -t:分配一个伪终端
  • -d 用用说明
    -d 以后台模式启动一个容器,这个容器必须有一个前台线程即容器必须运行一些挂起的命令(如 top,tail 之类),否则容器认为没事儿可做,直接退出停止,如ubuntu ,nginx 之类的容器就不适合,这类必须以前台进程的形式运行。
bash 复制代码
#运行一个ubuntu 容器,并启动 交互式shell(/bin/bash)操作容器
root@LAPTOP-BIJVAB4T:~# docker run -it ubuntu /bin/bash
#新容器
root@9ca40bc6fb09:/#

3.1.2 只创建容器不启动

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

用法与docker run 一致

3.2 列出本机的容器

docker ps [OPTIONS]

  • 不加参数 列出所有正在运行的容器
  • OPTIONS
    • -a 列出所有创建过的容器
    • -l 列出最近创建的容器

3.3 退出容器

  • run 创建、运行并进入的容器 执行 exit,退出并且容器停止
  • run 创建、运行并进入的容器 ctrl+p+q 退出容器,容器不停止

3.4 启动已经停止的容器

docker start [OPTIONS] CONTAINER [CONTAINER...]

  • CONTAINER 可以是容器ID或容器名称

3.5 重启容器

将运行中的容器终止,并且重新启动它

docker restart [OPTIONS] CONTAINER [CONTAINER...]

  • CONTAINER 可以是容器ID或容器名称

3.6 停止容器

docker stop [OPTIONS] CONTAINER [CONTAINER...]

  • CONTAINER 可以是容器ID或容器名称

3.7 强制停止容器

docker kill [OPTIONS] CONTAINER [CONTAINER...]

  • CONTAINER 可以是容器ID或容器名称

3.8 删除容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]

  • CONTAINER 可以是容器ID或容器名称
  • docker rm CONTAINER : 删除停止的容器
  • OPTIONS
    • -f : 强制删除容器,不管容器是否正在运行

3.9 容器日志

docker logs [OPTIONS] CONTAINER

  • OPTIONS
    • -f 追踪日志
    • n 显示最新的 x 行,默认显示全部

3.10 查看docker 内的进程

docker top CONTAINER [ps OPTIONS]

3.11 查看容器内部细节

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

3.12 重新计入容器

  • docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
    • 常用命令 docker exec -it CONTAINER /bin/bash
  • docker attach [OPTIONS] CONTAINER 不推荐使用:
  • 两者区别
    • attach 直接进入 容器启动命令的终端(不开启新的终端,不开启新的进程),用exit 退出容器,会导致容器停止
    • exec 是在容器中打开新的终端,并且可以启动新的进程,用exit 退出容器,不会导致容器停止

3.13 拷贝容器内的文件到主机

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|

bash 复制代码
root@LAPTOP-BIJVAB4T:~# docker cp 9ca:/tmp/a.txt /root/tmp
Successfully copied 2.05kB to /root/tmp/

3.14 导出导入容器

docker export [OPTIONS] CONTAINER
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

我们可以使用docker export CONTAINER命令导出一个容器到文件,不管此时该容器是否处于运行中的状态。通过docker export命令导出的文件,可以使用docker import命令导入,执行完docker import后会变为本地镜像,最后再使用docker run命令启动该镜像,这样我们就实现了容器的迁移

bash 复制代码
root@LAPTOP-BIJVAB4T:~# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED        STATUS       PORTS     NAMES
9ca40bc6fb09   ubuntu    "/bin/bash"   15 hours ago   Up 2 hours             objective_chaum
# 进入容器
root@LAPTOP-BIJVAB4T:~# docker exec -it 9ca /bin/bash
#z在容器内创建文件
root@9ca40bc6fb09:/tmp# echo "addddd">>a.txt
#导出容器
root@LAPTOP-BIJVAB4T:~# docker export 9ca > ubuntu.tar
#导入容器
root@LAPTOP-BIJVAB4T:~# dokcer import ubuntu.tar myubuntu:test
#查看镜像
root@LAPTOP-BIJVAB4T:~# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
myubuntu     test      b94fee4da8e6   14 seconds ago   72.8MB
ubuntu       latest    ba6acccedd29   2 years ago      72.8MB
#创建容器
root@LAPTOP-BIJVAB4T:~# docker run -it myubuntu:test /bin/bash
#查看容器内的文件 可以看到我们之前在 /tmp 目录下创建的 a.txt文件也被迁移过来了
root@e77f133353db:/# cat /tmp/a.txt
addddd
相关推荐
ac.char1 分钟前
在 Ubuntu 下使用 Tauri 打包 EXE 应用
linux·运维·ubuntu
Youkiup28 分钟前
【linux 常用命令】
linux·运维·服务器
qq_2975046132 分钟前
【解决】Linux更新系统内核后Nvidia-smi has failed...
linux·运维·服务器
_oP_i37 分钟前
.NET Core 项目配置到 Jenkins
运维·jenkins·.netcore
weixin_437398211 小时前
Linux扩展——shell编程
linux·运维·服务器·bash
小燚~1 小时前
ubuntu开机进入initramfs状态
linux·运维·ubuntu
年薪丰厚1 小时前
如何在K8S集群中查看和操作Pod内的文件?
docker·云原生·容器·kubernetes·k8s·container
小林熬夜学编程1 小时前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
zhangj11251 小时前
K8S Ingress 服务配置步骤说明
云原生·容器·kubernetes
岁月变迁呀1 小时前
kubeadm搭建k8s集群
云原生·容器·kubernetes