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:容器内文件路径 本地路径 拷贝容器内的文件到本地

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

相关推荐
青木沐1 小时前
Jenkins介绍
运维·jenkins
WTT00112 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
苹果醋32 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
日记跟新中3 小时前
Ubuntu20.04 修改root密码
linux·运维·服务器
唐小旭3 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python
明 庭3 小时前
Ubuntu下通过Docker部署NGINX服务器
服务器·ubuntu·docker
BUG 4043 小时前
Linux——Shell
linux·运维·服务器
大霞上仙3 小时前
Linux 多命令执行
linux·运维·服务器
冷心笑看丽美人3 小时前
探索 Samba 服务器:搭建跨平台文件共享的桥梁
运维·服务器