镜像命令
docker search
使用方式 | 作用 |
---|---|
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命令,二者似乎都是为了保存容器或者镜像,但二者还是有一些区别的
- docker export保存的是容器,而docker save保存的是镜像
- 使用docker export导出容器后,会丢失历史和元数据 ,导出后再导入(exported-imported)的镜像会丢失所有的历史,而保存后再加载(saveed-loaded)的镜像没有丢失历史和层 (layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚(可以执行
docker tag <LAYER ID> <IMAGE NAME>
来回滚之前的层)。
容器文件拷贝到本地
使用方式 | 作用 |
---|---|
docker cp 容器id:容器内文件路径 本地路径 | 拷贝容器内的文件到本地 |
同理,我们更换源路径与目标路径也可以实现将本地文件拷贝到容器中