docker学习记录第2节:docker容器&镜像(基于腾讯云 centos7.6)

本文详细介绍了Docker中的容器和镜像概念,包括镜像的分层特性、容器的创建与管理、镜像仓库的使用、搜索镜像、下载镜像、镜像操作(如tag、删除)以及容器操作(如启动、停止、日志查看和数据复制)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker学习记录第2节:docker容器&镜像

Docker 镜像就是一个 Linux 的文件系统(Root FileSystem),这个文件系统里面包含可以运 行在 Linux 内核的程序以及相应的数据。

两个特征:

  1. 镜像是分层(Layer)的:即一个镜像可以多个中间层组成,多个镜像可以共享同一中 间层,我们也可以通过在镜像添加多一层来生成一个新的镜像。
  2. 镜像是只读的(read-only):镜像在构建完成之后,便不可以再修改,而上面我们所说 的添加一层构建新的镜像,这中间实际是通过创建一个临时的容器,在容器上增加或 删除文件,从而形成新的镜像,因为容器是可以动态改变的。

容器:

类似 linux 系统环境,运行和隔离应用。容器从镜像启动的时候,docker 会在镜像的最上一 层创建一个可写层,镜像本身是只读的,保持不变。容器与镜像的关系,就如同面向编程中 对象与类之间的关系

容器是通过镜像来创建的,必须先有镜像才能创建容器,而生成的容器是一个独立 于宿主机的隔离进程,并且有属于容器自己的网络和命名空间。

仓库:

仓库(Repository)是集中存储镜像的地方,这里有个概念要区分一下,那就是仓库与仓库 服务器(Registry)是两回事,Docker Hub就是 Docker 官方提供的一个仓库服务器,不过其实有时候我们不太需要太过区分这两个概念。

Docker 镜像以及仓库

1.搜索镜像

例:搜索centos镜像

docker search centos

搜索STARS大于3000的mysql镜像

docker search mysql -f STARS=3000

2.下载镜像

docker pull centos
下载指定的tag
docker pull centos:x.x.xxx

镜像结构: registryname/repositoryname/imagename:tagname

例如:docker.io/library/centos:8.3.2011

3.查看本地镜像

docker images

//REPOSITORY   TAG       IMAGE ID      CREATED   SIZE
//hello-world  latest    d1165f221234  4 months  13.3kB

4.docker tag 给镜像打标签

查看语法

docker tag --help
//Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

例:

给 IMAGE ID 为 300e315adb2f 的镜像打个标签

docker tag 300e315adb2f docker.io/myimages/centos:v1.0.1

然后查看镜像:

docker images
//REPOSITORY      TAG       IMAGE ID      CREATED       SIZE
//myimages/centos v1.0.1    300e315adb2f  1 months ago  209MB

给 IMAGE ID 为 300e315adb2f 的镜像重新打个 latest 标签

docker tag 300e315adb2f docker.io/myimages/centos:latest
docker images
//REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
//itying/centos   latest    300e315adb2f   7 months ago   209MB
//itying/centos   v1.0.1    300e315adb2f   7 months ago   209MB

5.删除镜像

docker rmi 删除镜像

查看本地镜像

docker images | grep cento

删除指定镜像

docker rmi docker.io/myimages/centos:latest
//Untagged: itying/centos:latest

这样删除只会删除对应的标签

要删除 imagesID 为 300e315adb2f 的镜像需要通过 id 删除

docker rmi -f 300e315adb2f
//Untagged: myimages/centos:v1.0.1
//Untagged: centos:X.X.XXXX
//....

Docker 容器

类似 linux 系统环境,运行和隔离应用。容器从镜像启动的时候,docker 会在镜像的最上一 层创建一个可写层,镜像本身是只读的,保持不变。容器与镜像的关系,就如同面向编程中 对象与类之间的关系。

查看所有运行的容器

docker ps

查看所有容器

docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

docker run + 参数

docker run :创建一个新的容器并运行一个命令

docker run 是日常用的最频繁用的命令之一,同样也是较为复杂的命令之一 命令格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

OPTIONS :选项

  • -i :表示启动一个可交互的容器,并持续打开标准输入
  • -t: 表示使用终端关联到容器的标准输入输出上
  • -d :表示容器放置后台运行
  • –rm:退出后即删除容器
  • –name :表示定义容器唯一名称
  • -p 映射端口
  • -v 指定路径挂载数据卷
  • -e 运行容器传递环境变量
  • IMAGE :表示要运行的镜像
  • COMMAND :表示启动容器时要运行的命令

-it 启动一个交互式容器

docker run 启动一个交互式容器在容器内执行/bin/bash 命令

docker run -it myimages/centos /bin/bash
exit: 容器停止并退出
ctrl+p+q:容器不停止退出

–rm 启动一个退出即删除容

创建一个非交互式的容器用完就删除

//docker run -it --rm myimages/centos /bin/bash
//exit
//docker ps -a

启动一个后台容器

开启一个后台交互的容器,注意启动的时候加上-it,如果不加的话 docker 启动容器会自动停 止

docker run -ti -d myimages/centos

exec 进入置为后台已经启动的容器

进入一个容器可以使用 docker exec 或者 docker attac

docker exec
docker exec -ti 93200113fb7e /bin/bash

交互式方式进入容器,容器内执行/bin/bash 命

docker attac
docker attach 93200113fb7e
区别:

docker exec:进入容器开启一个新的终端(常用) 执行 exit 退出的时候不会停止容器

docker attach:进入容器正在执行的终端 exit 退出会停止容器

–name 启动容器的时候指定名称

docker run -it --name MyCentos myimages/centos /bin/bash

start 启动

stop 停止

restart 重启容器

exit 退出容器

docker start XXXXXX
docker stop XXXXX
docker restart XXXXX
docker restart XXXX

退出容器 exit: 容器停止并退出

ctrl+p+q:容器不停止退出

删除容器

docker rm myCentos
docker rm -f myCentos

删除所有容器

docker rm -f $(docker ps -q)
根据容器的状态,删除 Exited 状态的容器
docker rm $(docker ps -qf status=exited)

查看容器操作日志

docker logs : 获取容器的日志

docker logs [OPTIONS] CONTAINER OPTIONS

说明:

-f : 跟踪日志输出

–since :显示某个开始时间的所有日志

-t : 显示时间戳

–tail :仅列出最新 N 条容器

docker cp 实现数据拷贝

docker cp :用于容器与主机之间的数据拷贝。

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

例子:

将主机/www/myroot 目录拷贝到容器 5e324512adf1 的/root 目录下。

docker cp /www/myroot/ 5e324512adf1:root

将主机/root/myRoot 目录拷贝到容器 5e324512adf1 中,目录重命名为 wwwroot。

docker cp /www/myroot/ 5e324512adf1:root/wwwroot
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值