镜像和容器的管理

一、镜像的管理

  1. 获取镜像并生成相关容器
bash 复制代码
# 拉取镜像
docker pull alpine
# 默认是latest,也就是最新版本,也可指定版本(在镜像名后边加":版本号")
# 或者
# 从主机中导入镜像到docker中
docker image load -i /test

#生成容器
docker run -it alpine
# 默认让容器执行bash 命令,也可以在容器名后边直接写想要让容器运行的命令
# -it 表示容器要交互式运行
  1. 删除镜像,导出镜像
bash 复制代码
# 查看运行过的容器(无论是否在运行中)
docker ps -a 
# 删除基于alpine 的容器
docker rm 容器id
# 删除alpine 镜像(可以使用id 也可以使用名称,id可以是部分也可是全部)
docker rmi alpine
# 被删除的镜像不能有依赖其产生的容器

# 批量删除镜像
docker rmi `docker images -aq `
# 或者
docker rmi $(docker images -aq)

# 导出镜像到主机的指定目录/test文件夹中
docker image save alpine > /test
  1. 查看镜像的信息
bash 复制代码
# 查看所有的镜像
docker images
docker image ls
# 以上两种的写法是显示出的内容是一致的

# 查看指定镜像
docker image 镜像名称

# 查看全部镜像的id(-q)
docker images -q

#格式化显示镜像
docker images --format "{{.ID}}--{{.Repository}}"
# 写作格式:docker images --format "{{.列名}}自己写的,随便啥符号都行{{.列名}}"
# 以表格的形式显示镜像
docker images --format "table{{.ID}}--{{.Repository}}"

# 查看镜像的详细信息
docker image inspect 镜像id

向dockerhub中搜索指定镜像

bash 复制代码
docker search 镜像名

二、容器的管理

docker run 表示创建+启动的命令

docker run 镜像名(如果镜像不存在本地,则会在线去下载该镜像)

注意:容器内的进程必须处于前台运行的状态,否则容器就会直接退出。但容器的运行可以在后台。注意区分

实例:

bash 复制代码
docker run ubuntu:20.04
# 这个写法,会产生独立的容器记录。因为容器内没有程序在运行,因此容器直接关闭
docker run -it ubuntu:20.04 bash 
# 这是正确的写法,以交互的方式运行ubuntu20.04,且在容器内执行bash

docker run ubuntu:20.04 ping baidu.com 
# 启动ubuntu20.04容器,在容器内执行ping百度的命令,这个命令是在前台运行的,成功的卡住了终端
docker run -d ubuntu:20.04 ping baidu.com
# docker ps可以看到的容器;-d 参数,让容器在后台跑着(相对宿主机而言),容器中的程序在容器的前台运行,因此容器没有挂

# 查看至今为止容器内的所有日志
docker logs 容器id  
# -f 表示刷新容器日志
docker logs -f 容器id 
# 可配合管道使用 docker logs 容器id  | tail -5

docker exec -it 容器id bash
# 进入正在运行的容器空间内(exec大概率配合-it,进入容器内要交互式地做操作) 

docker container inspect 容器id
# 查看容器的详细信息,用于高级调试。显示json数组:容器运行状态,容器管理的数据

docker port 容器id
# 查看容器内的端口转发情况:

docker commit 容器id  新的镜像名
# 容器的提交
# 运行基础的ubuntu:20.04, 在容器里装something,然后提交新的镜像
# 新的镜像,再运行出的容器,默认就携带something了

docker info
# 查看docker服务的信息
  • 在运行容器时,常用的参数总结
run常用的参数 含义
-it 以交互的方式运行容器
-d 将容器运行到后台
--rm 容器结束后自动删除容器
-p 宿主机端口:容器内暴露的端口 容器是独立的网络空间,自己的ip和端口,因此在主机上查看运行的时候需要将端口映射到主机的端口
--name 设置容器的名字
-P 随机端口映射,随机访问主机的空闲端口(0-65535)映射到容器内打开的端口
-v 主机上文件夹的绝对路径: 虚拟机上文件夹的绝对路径 将主机上文件夹的所有文件映射到虚拟机的指定文件夹中(之间文件夹中的内容映射过去了,但是文件夹本身没有到指定文件夹下)
相关推荐
喜欢你,还有大家4 小时前
Docker-仓库-镜像制作
运维·docker·容器
武子康6 小时前
Java-166 Neo4j 安装与最小闭环 | 10 分钟跑通 + 远程访问 Docker neo4j.conf
java·数据库·sql·docker·系统架构·nosql·neo4j
计算机小手10 小时前
使用 llama.cpp 在本地高效运行大语言模型,支持 Docker 一键启动,兼容CPU与GPU
人工智能·经验分享·docker·语言模型·开源软件
岚天start11 小时前
KubeSphere在线安装单节点K8S集群
docker·容器·kubernetes·k8s·kubesphere·kubekey
xyhshen11 小时前
记录一次K8S跨命名空间访问 xxx.xxx.svc.cluster.local 类似内部服务不通的问题
云原生·容器·kubernetes
栗子~~11 小时前
shell-基于k8s/docker管理容器、监控模型训练所消耗的最大CPU与最大内存脚本
docker·容器·kubernetes
海鸥8111 小时前
在k8s中部署seaweedfs,上传文件到seaweedfs方法
云原生·容器·kubernetes
半梦半醒*11 小时前
k8s——pod详解2
linux·运维·docker·容器·kubernetes·负载均衡
AAA小肥杨11 小时前
K8s从Docker到Containerd的迁移全流程实践
docker·容器·kubernetes
DARLING Zero two♡11 小时前
云原生基石的试金石:基于 openEuler 部署 Docker 与 Nginx 的全景实录
nginx·docker·云原生