docker常用命令

镜像命令

使用方式 作用
docker search 镜像名称 查找某一镜像

案例

bash 复制代码
docker search redis
bash 复制代码
NAME                                DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
redis                               Redis is an open source key-value store that...   12826     [OK]
redislabs/redisearch                Redis With the RedisSearch module pre-loaded...   64
redislabs/redisinsight              RedisInsight - The GUI for Redis                 102
redis/redis-stack-server            redis-stack-server installs a Redis server w...   76
redis/redis-stack                   redis-stack installs a Redis server with add...   106
redislabs/rebloom                   A probablistic datatypes module for Redis        27                   [OK]
redislabs/redis                     Clustered in-memory database engine compatib...   40
redislabs/rejson                    RedisJSON - Enhanced JSON data type processi...   53
redislabs/redismod                  An automated build of redismod - latest Redi...   47                   [OK]
redislabs/redisgraph                A graph database module for Redis                27                   [OK]
redislabs/redistimeseries           A time series database module for Redis          12
redislabs/operator                                                                   7
redislabs/operator-internal         This repository contains pre-released versio...   1
redislabs/redis-py                                                                   5
redislabs/redis-webcli              A tiny Flask app to provide access to Redis ...   5                    [OK]
redislabs/k8s-controller-internal                                                    0
redislabs/redisgears                An automated build of RedisGears                 4
redislabs/memtier_benchmark         Docker image to run memtier_benchmark            0
redis/redisinsight                  Redis Insight - our best official GUI for Re...   6
redislabs/ng-redis-raft             Redis with redis raft module                     0
redislabs/redisai                                                                    6
redislabs/olmtest                   Test artefact for OLM CSV                        1
redislabs/k8s-controller                                                             2
redislabs/olm-bundle                                                                 0
bitnami/redis                       Bitnami container image for Redis                277                  [OK]
​

docker pull

使用方式 作用
docker pull 镜像名称:TAG(版本号) 从docker hub下载镜像

注:如果不写版本号,默认下载最新版本

案例

bash 复制代码
docker pull ubuntu
bash 复制代码
Using default tag: latest
        latest: Pulling from library/ubuntu
49b384cc7b4a: Pull complete
Digest: sha256:3f85b7caad41a95462cf5b787d8a04604c8262cdcdf9a472b8c52ef83375fe15
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
复制代码
bash 复制代码
docker pull redis:6.0.8
bash 复制代码
6.0.8: Pulling from library/redis
6.0.8: Pulling from library/redis
bb79b6b2107f: Pull complete
1ed3521a5dcb: Pull complete
5999b99cee8f: Pull complete
3f806f5245c9: Pull complete
f8a4497572b2: Pull complete
eafe3b6b8d06: Pull complete
Digest: sha256:21db12e5ab3cc343e9376d655e8eabbdbe5516801373e95a8a9e66010c5b8819
Status: Downloaded newer image for redis:6.0.8
docker.io/library/redis:6.0.8
复制代码

docker images

使用方式 作用
docker images 列出镜像
选项 作用
-a 列出所有镜像
-q 只列出镜像的ID号

案例

bash 复制代码
pcl@robot:/etc/docker$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
ubuntu        latest    bf3dc08bfed0   3 weeks ago     76.2MB
hello-world   latest    d2c94e258dcb   12 months ago   13.3kB
redis         6.0.8     16ecd2772934   3 years ago     104MB

pcl@robot:/etc/docker$ docker images -a
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
ubuntu        latest    bf3dc08bfed0   3 weeks ago     76.2MB
hello-world   latest    d2c94e258dcb   12 months ago   13.3kB
redis         6.0.8     16ecd2772934   3 years ago     104MB

pcl@robot:/etc/docker$ docker images -q
bf3dc08bfed0
d2c94e258dcb
16ecd2772934
复制代码

docker rmi

使用方式 作用
docker rmi 镜像名称 删除镜像
docker rmi 镜像ID 删除镜像
docker rmi -f 镜像名称:TAG 强制删除镜像
docker rmi -f $(docker images -qa) 强制删除所有镜像

案例

bash 复制代码
pcl@robot:/etc/docker$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
ubuntu        latest    bf3dc08bfed0   3 weeks ago     76.2MB
hello-world   latest    d2c94e258dcb   12 months ago   13.3kB
redis         6.0.8     16ecd2772934   3 years ago     104MB

pcl@robot:/etc/docker$ docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:266b191e926f65542fa8daaec01a192c4d292bff79426f47300a046e1bc576fd
Deleted: sha256:d2c94e258dcb3c5ac2798d32e1249e42ef01cba4841c2234249495f87264ac5a
Deleted: sha256:ac28800ec8bb38d5c35b49d45a6ac4777544941199075dff8c4eb63e093aa81e

pcl@robot:/etc/docker$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    bf3dc08bfed0   3 weeks ago   76.2MB
redis        6.0.8     16ecd2772934   3 years ago   104MB
​

容器命令

docker run

使用方式 作用 选项说明
docker run -it 镜像名称 /bin/bash 前台交互模式进入容器 -i,即interaction,以交互模式运行容器 -t,即terminal,给容器分配一个伪终端 /bin/bash:指定给容器分配的伪终端为bash
docker run -it 镜像名称 --name 容器名 /bin/bash 前台交互模式进入容器,并给容器命名 --name:给容器重新命名
docker run -d 镜像名称 后台方式进入容器给

docker ps

使用方式 作用 选项说明
docker ps 列出正在运行的容器
docker ps -a 列出所有正在运行的容器+历史运行过的容器
dokcer ps -l 显示最近创建的容器
docker ps -n 显示最近n个创建的容器
docker ps -q 只显示容器编号

案例

bash 复制代码
pcl@robot:~$ docker run -it ubuntu /bin/bash
#以下进入容器内部
root@a319ce0751d9:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
​
root@a319ce0751d9:/# ls /home
ubuntu
​
pcl@robot:/etc/docker$ docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
e0fe39a3d75e   ubuntu    "/bin/bash"   14 seconds ago   Up 14 seconds             unruffled_franklin
​
pcl@robot:/etc/docker$ docker run -it --name=myenv ubuntu /bin/bash
pcl@robot:/etc/docker$ docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
48a0406b57bd   ubuntu    "/bin/bash"   9 seconds ago   Up 8 seconds             myenv
e0fe39a3d75e   ubuntu    "/bin/bash"   9 minutes ago   Up 9 minutes             unruffled_franklin
复制代码
bash 复制代码
pcl@robot:/etc/docker$ docker ps -l
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
48a0406b57bd   ubuntu    "/bin/bash"   5 minutes ago   Up 5 minutes             myenv
​
pcl@robot:/etc/docker$ docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                        PORTS     NAMES
48a0406b57bd   ubuntu    "/bin/bash"   5 minutes ago    Up 5 minutes                            myenv
e0fe39a3d75e   ubuntu    "/bin/bash"   14 minutes ago   Up 14 minutes                           unruffled_franklin
a319ce0751d9   ubuntu    "/bin/bash"   16 minutes ago   Exited (127) 15 minutes ago             adoring_tesla
​
pcl@robot:/etc/docker$ docker ps -q
48a0406b57bd
e0fe39a3d75e
复制代码

退出容器

退出方式1

使用exit命令或者快捷键ctrl+d

使用这种方式退出容器后,容器本身也会停止

退出方式2

使用快捷键ctrl+p+q

使用这种方式退出容器后,容器仍旧在运行,不会停止

重新启动正在运行的容器

使用方式 作用
docker start 容器id 重新启动正在运行的容器

停止正在运行的容器

使用方式 作用
docker stop 容器id 停止正在运行的容器

删除容器

使用方式 作用
docker rm 容器id 删除正在运行的容器
docker rm -f 容器id 强制删除容器,由于使用docker rm命令删除容器不能删除正在运行的容器,需要首先停止容器的运行才能删除,如果需要删除一个正在运行的容器可加上-f选项强制删除,但不推荐
docker rm -f $(docker ps -aq) 强制删除所有容器
docker ps -aq | xargs docker rm 删除所有容器

重新进入正在运行的容器

docker exec

使用方式 作用
docker exec -it 容器id /bin/bash 重新进入正在运行的容器,并以交互模式进入

注, 使用这种方式重新进入容器后,即使使用exit命令退出容器,容器本身也不会停止

docker attach

使用方式 作用
docker attach 容器id 重新进入正在运行的容器

注, 使用这种方式重新进入容器后,即使使用exit命令退出容器,容器本身同时也会停止运行

容器的导出与导入

容器导出

容器导出就是指将容器进行打包归档为tar文件以备份,防止有人误删容器

容器导出之前的镜像文件及正在运行的容器如上图所示,接下来我们对pcl/ubuntu容器进行导出

命令使用格式为

bash 复制代码
docker export 容器ID > 归档名.tar
bash 复制代码
pcl@robot:~/Public$ docker export 55d6651e8842 > ubuntu1.2.tar
pcl@robot:~/Public$ ls
ubuntu1.2.tar

容器导入

bash 复制代码
docker import ubuntu1.2.tar pcl/ubuntu:1.2

容器导入就是指将打包归档为tar文件的备份容器进行"解包",并重新导入为镜像文件

该命令的使用格式为

bash 复制代码
docker import 归档文件 镜像名:TAG

我们首先查看导入之前的镜像目录

接下来,我们对刚才导出的归档文件进行导入

bash 复制代码
docker import ubuntu1.2.tar pcl/ubuntu:1.2

再次查看导入后的镜像文件

容器的保存与加载

容器保存

命令使用方式

bash 复制代码
docker save 镜像id -o 归档名.tar

我们使用刚才导出的镜像文件进行实验

bash 复制代码
docker save pcl/ubuntu:1.2 -o ubuntu.1.3.tar

容器加载

首先删掉保存的镜像文件

bash 复制代码
 docker rmi 7677b73af929

再使用docker load命令看是否能加载出刚才删掉的这个镜像文件

bash 复制代码
 docker load -i ubuntu.1.3.tar

如上所示,我们实验成功了

再次观察上述实验,我们首先将ubuntu1.2镜像文件保存为ubuntu1.3.tar文件,之后删除掉ubuntu1.2镜像文件,最后用docker load命令成功从ubuntu.1.3.tar文件中加载出了ubuntu1.2镜像文件

对比观察docker save和docker export命令,二者似乎都是为了保存容器或者镜像,但二者还是有一些区别的

  1. docker export保存的是容器,而docker save保存的是镜像
  2. 使用docker export导出容器后,会丢失历史和元数据导出后再导入(exported-imported)的镜像会丢失所有的历史,而保存后再加载(saveed-loaded)的镜像没有丢失历史和层 (layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚(可以执行docker tag <LAYER ID> <IMAGE NAME>来回滚之前的层)。

容器文件拷贝到本地

使用方式 作用
docker cp 容器id:容器内文件路径 本地路径 拷贝容器内的文件到本地

同理,我们更换源路径与目标路径也可以实现将本地文件拷贝到容器中

相关推荐
SelectDB16 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
曲幽1 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
武子康3 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn866 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker