Docker容器的基本操作
前言
本文介绍一下docker容器的基本操作,包括镜像的获取,查询,删除以及容器的创建,导入,导出。
1.获取镜像
docker search 镜像名 (搜索镜像)
docker pull 镜像:版本号 (获取固定版本镜像)
docker pull 镜像名 (不加版本号默认为获取最新版本)
docker info #查看docker全部信息 还可以统计哪些容器是running、停止的数量
docker version #查看docker版本
2.查看镜像信息——docker images/inspect/tag\
①基本查看 —— images
docker images [仓库名称] [:标签]
例:
[root@xjj opt]# docker images #查看仓库中所有镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx1 nginx ea335eea17ab 7 days ago 141MB
nginx latest ea335eea17ab 7 days ago 141MB
hello-world latest feb5d9fea6a5 2 months ago 13.3kB
centos 7 eeb6ee3f44bd 2 months ago 204MB
docker images -q #只查看镜像的ID
[root@xjj ~]# docker images -q
ea335eea17ab
ea335eea17ab
②根据镜像的唯一标识 ID 号来获取镜像的详细信息——inspect
docker inspect [镜像:版本号]
docker inspect [镜像ID号]
例:[root@xjj ~]# docker inspect nginx
③为本地的镜像添加新的标签——tag
3.表示镜像唯一性的方法
①REPOSITORY:TAG
②IMAGE ID(sha256:64位的号码,默认只截取12位)
镜像的唯一标识除了镜像名:版本号以外,还可以使用镜像的ID作为唯一标识
ID是sha256:64位的号码,但一般情况下,不加参数查询时,系统只显示12位
4.镜像的导出和导入——docker save/load
如果你需要进行镜像迁移,需要先将镜像保存至本地文件,之后可以拷贝该文件至其他主机
这一过程称之为存出镜像,使用【docker save】命令操作
'命令格式:'
docker save -o [存储文件名] [存储镜像]
'例:'
docker save -o nginx_1 nginx:latest
ll nginx
[root@xjj opt]# ll nginx_1
-rw-------. 1 root root 145917440 11月 25 17:12 nginx_1
scp nginx root@192.168.126.16:nginx
'#传至另一台主机'
如果需要将存储的镜像从主机 A 迁移至主机 B 上使用,可以将该导出文件导入到主机 B 的镜像库中
这一过程称之为载入镜像,使用【docker load】进行载入操作
'命令格式:'
docker load < [存出文件]
'例:'
docker load < nginx_1
docker images|grep nginx
把镜像导出到系统中
docker image save 9f266d35e02c > /opt/centos_7.4.1708.tar.gz
把已经导出到系统的镜像导入到容器中
docker image load -i /opt/centos_7.4.1708.tar.gz
5.删除镜像——docker rmi
删除镜像的方法有两种:使用镜像的标签或 ID
'命令格式:'
docker rmi [仓库名称][:标签]
或
docker rmi [镜像ID号]
'例:'
docker images|grep nginx
docker rmi nginx1:nginx
'#当一个镜像有多个标签时,该命令只会删除多少标签中的这个指定标签,而不会影响镜像文件'
'#若该镜像只有一个标签就要注意了,再使用该命令会直接彻底删除该镜像!'
docker rmi 97788821c58b
'#选择参数为镜像ID号时要谨慎,必须首先确保该镜像当前没有被容器使用'
'#如果该镜像已被容器使用,则需先删除所以依赖该镜像的容器,再删除该镜像'
'#删除时系统会先删除指向该镜像的所有标签,然后删除镜像本身'
docker images|grep nginx
#批量删除:
docker rmi `docker images -q` #删除所有镜像
docker rmi `docker images -q | grep nginx` #删除所有Nginx的镜像
二、Docker容器操作
1.容器的创建与使用–docker create/ps/start/stop/run
容器的创建就是将镜像加载到容器的过程:
①Docker 的容器十分的轻量级,用户可以随机创建或删除
②新创建的容器默认处于停止状态,即不会自行开始运行任何程序
③需要开启一个进程来启动容器,该进程是容器的唯一进程,即该进程终止时,容器也会被完全终止
④停止后的容器可以重启启动并保留原有的修改
#查询容器
docker ps -a
'#可以使用该命令查看索引容器的运行状态'
'#“-a”选项表示列出系统最近一次启动的容器'
#创建容器
docker create [选项] [镜像] [运行的程序]
docker create -it nginx:latest /bin/bash #创建新容器后,会返回一个唯一的ID
-i 让容器的标准输入保持打开(让一个可以交互可以进入的接口)
-t 分配一个伪终端
-d 后台守护进程的方式运行
#启动容器(停止状态下的容器)
docker start [容器的ID/名称]
#停止容器
docker stop 容器ID
如果想直接创建并使用容器,可以使用【docker run】命令,等同于先执行【docker create】,再执行【docker start】
需要注意的是,执行该命令,只要后面的命运行结束,容器就会停止
使用【docker run】命令创建容器时,Docker 在后台的标准运行过程:
1,检查本地是否存在指定镜像,若不存在,则会从公共仓库下载
2,利用镜像创建并启动一个容器
3,分配一个文件系统给容器,在只读的镜像层外挂载一层可读写层
4,从宿主机配置的网桥接口中桥接一个虚拟机至容器中
5,分配一个地址池中的 IP 给容器
6,执行用户指定的应用程序
7,执行完毕后容器被终止运行
'例:创建容器并启动执行一条shell命令'(一次性执行)
docker run centos:7 /usr/bin/bash -c ls /
--
docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello world;done"(持续后台运行)
'#可以添加“-d”选项,可以让docker以守护进程形式在后台运行,即可以在后台持续运行该容器'
'#注:该容器所运行的程序一旦结束,容器也就会被终止'
docker ps -a
2.容器的进入——docker run/exec
1.使用run
docker run -it nginx:latest /bin/bash
2.exec(容器必须为开启状态)
'命令格式:'
docker exec -it [容器ID/名称] /bin/bash
'例:'
docker exec -it 4aa9da25318d /bin/bash
'#用户可以通过所创建的终端来输入命令'
exec 和 shell 是两种运行模式
PS:
docker run-it 会创建前台进程,但是会在输入exit后终止进程
docker attach 会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止容器进程
docker exec -it 会连接到容器,可以像SSH一样进入 容器内部,进行操作,可以通过exit退出容器,不影响容器运行
exec 和 shell 是两种运行模式
PS:
docker run-it 会创建前台进程,但是会在输入exit后终止进程
docker attach 会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止容器进程
docker exec -it 会连接到容器,可以像SSH一样进入 容器内部,进行操作,可以通过exit退出容器,不影响容器运行
3.容器的导出与导入–docker export/import
用户可以将任何一个 Docker 从一台主机迁移至任意一台主机:
首选需要将已创建好的容器导出为文件,使用【docker export】命令实现,该容器当前处于运行状态也可以正常导出
导出后将该文件传输至其他主机,通过相应的导入命令以实现容器的迁移
与镜像的迁移基本同理
1.容器导出
docker export [容器ID/名称] >文件名
'例:'
docker export 4aa9da25318d >nginx_1
ls -l nginx_1
--
scp nginx_1 root@192.168.126.16:nginx_1
2.容器导入(生成镜像)
docker import 导出的文件名(容器) 指定镜像名称
示例:
docker import nginx_1 nginx:latest
cat [文件名](容器) |docker import - [生成的镜像名称][:标签]
'例:'
ll nginx_1
cat nginx_1 |docker import - nginx_1:xjj
'#导入文件nginx_1成为本地镜像'
--
docker images |grep nginx
4.容器的删除–docker rm
#删除容器
docker rm [容器ID/名称]
'例:'
docker rm docker rm fcd5691107cf a17b5d224f47 cf7eb18ebf28 fb95ffa44044 2ee2c9d515b3 e88f1ded4cd
#强制删除容器(正在运行的up状态)
docker rm -f 容器ID
#批删除非up状态的rm -f : 强制删除所有
docker rm `docker ps -qa`
#批量删除容器(正则匹配)
docker ps -a | awk ' {print "docker rm "$1}' | bash
#批量删除"exit"状态( 指定状态)的容器
for i in `docker ps-a|grep -i exit | awk '{print $1}'`; do docker rm-f $i;done
#查询所有当前容器资源消耗信息
docker stats