Docker之镜像与容器的相关操作

目录

一、Docker镜像

搜索镜像

下载镜像

查看宿主机上的镜像

删除镜像

二、Docker容器

创建容器

查看容器

启停容器

删除容器

进入容器

创建/启动/进入容器

退出容器

查看容器内部信息


一、Docker镜像

Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在, Docker 会尝试先从默认镜像仓库下载(默认使用 Docker Hub公共注册服务器中的仓库), 用户也可以通过配置,使用自定义的镜像仓库。

搜索镜像

复制代码
docker search 镜像名称

例如:

复制代码
docker search centos

下载镜像

复制代码
docker pull 镜像

例如, 获取一个 centos 系统的基础镜像可以使用如下的命令:

复制代码
# 未指定版本一般会使用latest(最新的)版本
docker pull centos
# 或者直接指定版本
docker pull centos:版本号

查看宿主机上的镜像

复制代码
docker images

/var/lib/docker 为 docker 默认安装目录

复制代码
# 切换目录
cd /var/lib/docker/containers 
# 查看目录下的文件
ls

删除镜像

复制代码
docker rmi 镜像ID/标签

例如:

复制代码
# 根据镜像ID删除
docker rmi feb5d9fea6a5
# 根据镜像标签(版本)
docker rmi hello-world:latest 或 docker rmi hello-world:版本号

如果提示镜像被使用,需要先停止某个ID的容器,然后先删除容器再删除镜像。或者强制删除镜像。

强制删除镜像:

复制代码
docker rmi -f centos:版本号 

-f, -force: 强制删除镜像, 即使有容器依赖它。

总之, 通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。 正确的做法是,先删除依赖该镜像的所有容器, 再来删除镜像。

二、Docker容器

容器是Docker的另一个核心概念。简单来说,容器是镜像的一个运行实例。所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层;同时,容器中的应用进程处于运行状态。

通俗理解:类 -> 实例,镜像 -> 容器

创建容器

复制代码
# 方式一:创建容器不指定容器名,由Docker容器随机生成
docker create -it centos:latest
# 方式二:创建容器并指定容器名
docker create -it --name tomcat01 centos:latest

命令说明:

命令 说明
create 创建docker容器关键字
-it 是两个参数,-i:interactive容器具有交互功能,-t:容器将提供伪终端
--name 指定生成的容器的名字,允许空,如果不指定会自动生成
centos:latest 即镜像名字:版本(或镜像ID),将使用指定镜像创建容器。另外,Docker会检查本地是否存在指定的镜像,不存在就从公有仓库下载。

查看容器

查看当前运行的容器:

复制代码
docker ps

查看所有容器:

复制代码
docker ps -a

启停容器

复制代码
# 启动容器
docker start 容器ID或name
# 停止容器
docker stop 容器ID或name
# 重启容器
docker restart 容器ID或name 

删除容器

复制代码
docker rm 容器ID

主要支持的选项包括:

选项 说明
-f, --force=false 是否强行终止并删除一个运行中的容器
-l, --link=false 删除容器的连接 ,但保留容器
-v, --volumes=false 删除容器挂载的数据卷

删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)

复制代码
docker rm $(docker ps -aq)

停止所有容器并删除容器:

复制代码
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)

还可以根据容器的状态删除,删除Exited状态的容器:

复制代码
docker rm $(docker ps -qf status=exited)

Docker 1.13版本以后,可以使用 docker containers prune 命令,删除孤立的容器:

复制代码
docker container prune

进入容器

复制代码
docker exec -it 容器ID/容器NAME /bin/bash
# 简写方式:
docker exec -it 容器ID/容器NAME bash

注意:只有在容器启动的时候即UP状态才能进入容器终端

创建/启动/进入容器

run 命令等于 create + start。

  • 创建+启动+进入容器:

    复制代码
    docker run -it centos:latest /bin/bash
  • 创建容器,通过 -p 标记指定端口映射规则,可以指定多个:(注意:此处p是小写)

    复制代码
    docker run -it -p 7001:8001 centos:latest /bin/bash
  • 使用 -P 标记时, Docker 会随机映射一个 49000~49900 的端口:(注意:此处P是大写)

    复制代码
    docker run -it -P --name tomcat03 centos:latest /bin/bash

更多的时候,需要让 Docker 容器在后台以守护态( Daemonized )形式运行 此时,可以通过添加 -d 参数来实现:

复制代码
# 创建容器指定后台运行模式(后台守护态)
docker run -it -d --name webapp centos:latest 
# 进入容器
docker exec -it webapp /bin/bash

部分参数说明:

参数 说明
-p 端口映射,格式为:主机(宿主)端口:容器端口
-P 注意是大写P,使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口
-d 后台运行模式

退出容器

退出时如果想继续运行容器:按顺序按【ctrl+p】,【ctrl+q】

如果不想继续运行:按【ctrl+d】或输入exit

查看容器内部信息

  • 进入容器内部获取信息

首先,请先进入容器:

复制代码
docker exec -it 容器ID/容器NAME /bin/bash

如果此时已进入容器内部,可分别执行hostname、ip addr、env这三个命令可以获取相关信息:

复制代码
# 查看主机名
hostname
# 查看IP地址
ip addr
# 查看环境变量
env
  • 在宿主机,执行docker exec命令

    获取容器的hostname

    docker exec 容器ID/容器NAME hostname

    获取容器ip地址

    docker exec 容器ID/容器NAME ip addr

    获取容器环境变量

    docker exec 容器ID/容器NAME env

  • 在宿主机,使用 docker inspect 命令

推荐使用 docker inspect 来获取信息,这个命令会返回一个 json 字符串,里面以 key-value 的格式准备了该容器相关的信息,内容十分丰富,可以一次性取得全部内容,也可以返回指定 key 对应的信息。

复制代码
docker inspect 容器ID/容器NAME
相关推荐
乌托邦的逃亡者1 小时前
Docker的/var/lib/docker/目录占用100%的处理方法
运维·docker·容器
ldj20201 小时前
Jenkins 流水线配置
运维·jenkins
古希腊数通小白(ip在学)4 小时前
stp拓扑变化分类
运维·服务器·网络·智能路由器
OKUNP5 小时前
Docker高级管理--容器通信技术与数据持久化
docker·容器·php
12点一刻6 小时前
搭建自动化工作流:探寻解放双手的有效方案(2)
运维·人工智能·自动化·deepseek
未来之窗软件服务6 小时前
东方仙盟AI数据中间件使用教程:开启数据交互与自动化应用新时代——仙盟创梦IDE
运维·人工智能·自动化·仙盟创梦ide·东方仙盟·阿雪技术观
o不ok!7 小时前
Linux面试问题-软件测试
linux·运维·服务器
用户6855449692739 小时前
第一周作业
docker
宇钶宇夕10 小时前
SIMATIC S7-1200的以太网通信能力:协议与资源详细解析
运维·服务器·数据库·程序人生·自动化