当前位置: 首页 > news >正文

docker的简单使用

文章目录

  • docker简介
  • docker架构
  • 镜像和容器
  • 镜像有关的常用命令
  • 容器相关常用命令

docker简介

Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。

Docker可以让开方子打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux上也可以实现虚拟化。

docker架构

Docker运行时分为Docker引擎(也叫服务端守护进程就是下图的Docker daemon)和客户端工具,各种docker命令就是在使用客户端工具和docker引擎进行交互。

image.png

docker时C/S架构的服务器,客户端向守护进程发出请求,守护进程完成请求并返回结果。

docker的服务器和客户端可以运行在同一台宿主机上,也可以分开运行。

镜像和容器

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

通过镜像启动容器,镜像就像可执行的包,其中包括运行应用程序所需要的所有内容:包含代码、运行时间、库、环境变量和配置文件。

Container(容器):镜像和容器的关系,就像类和实例,镜像是静态的定义,容器时镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停。

镜像分层:docker可以在基础镜像上安装一些软件来扩展镜像

image.png

可以写的容器层:当容器启动时,一个新的可写层被加载到了镜像的顶部。这一层通常被称为容器层,容器层之下的都叫镜像层。

所有对容器的改动-无论添加、删除还是修改文件都只会发生在容器层中。只有容器层时可写的,容器层下面的所有镜像层都是只读的。

容器层保存的时镜像变化的部分,不会对镜像本身进行任何修改。

总结就是容器层是记录的镜像层的修改,所有镜像层都是只读的,不会被容器修改,所有镜像可以被多个容器共享。

镜像有关的常用命令

docker实际上是有一个提供各种镜像的远程仓库docker hub

下载镜像

docker pull name:tage

docker pull ubuntu:20.04 现在被墙了,没办法从docker hub下载镜像了,可以配置一下

vim /etc/docker/daemon.json

将下面代码粘贴到上面文件

{"registry-mirrors": ["https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com","https://docker.m.daocloud.io","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://your_preferred_mirror","https://dockerhub.icu","https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc"]
}

重新加载docker配置文件

systemctl daemon-reload

重启docker服务

systemctl restart docker.service

查看本地的镜像

docker images

删除一个镜像

docker image rm name:tagdocker rmi name:tag

创建一个container的镜像

docker [container] commit CONTAINER IMAGE_NAME:TAG

将镜像导出成为一个本地文件

docker save -o filename.tar IMGE_NAME:TAG

将镜像从文件中加载出来

docker load -i filename.tar

容器相关常用命令

根据一个镜像创建容器

docker create -it IMAGE_NAME:TAG

显示正在运行的容器

docker ps

显示所有容器

docker ps -a

启动容器

docker start CONTAINER

停止容器

docker start CONTAINER

重启容器

docker restart CONTAINER

创建并启动一个容器

docker run -itd ubuntu:20.04

进入容器

docker attach CONTAINER

退出并挂起容器

ctrl + p然后ctrl + q

退出容器并关闭

ctrl + d

在容器中执行命令

docker exec CONTAINEE COMMAND

删除容器

docker rm CONTAINER

将容器导出为文件.tar

docker export -o xxx.tar CONTAINER

将本地的tar文件导入成镜像并为镜像命名

docker import xxx.tar image_name:tag

export/import 会丢弃历史记录和元数据信息,仅保留当时容器的快照状态

save/load会 保存完整记录,体积更大

查看某容器内的全部进程

docker top CONTAINER

查看某容器内的统计信息

docker stats

本地和容器之间的数据交换

docker cp xxx CONTAINER:xxx
docker cp CONTAINER:xxx xxx

重命名容器

docker rename CONTAINER1 CONTAINER2

修改容器限制

docker update CONTAINER --memory 500MB
http://www.lryc.cn/news/500696.html

相关文章:

  • Selenium:强大的 Web 自动化测试工具
  • 设计模式 在PLM系统的应用场景介绍
  • C#请求https提示未能为 SSL/TLS 安全通道建立信任关系
  • 【人工智能】GaussDB数据库技术及应用
  • OpenAI12天 –第3天的实时更新,包括 ChatGPT、Sora、o1 等
  • 删除Yocto中build-x9hp_ms_a12_vemmc_ap2/tmp/work/aarch64-sdrv-linux/package后再编译出错问题
  • 2024三掌柜赠书活动第三十五期:Redis 应用实例
  • 观察者模式的理解和实践
  • 查看Windows系统上的Redis服务器是否设置了密码
  • 认识Java中的异常(半成品)
  • 生成SSH秘钥文件
  • wsl2子系统ubuntu发行版位置迁移步骤
  • 协程设计原理与实现
  • 合并区间C和C++的区别、布尔、整型、浮点、指针类型和0做比较、malloc、calloc、realloc的区别
  • Flutter 图片编辑板(一) 事件路由
  • 【Java】—— 图书管理系统
  • 数据库基础入门:从零开始学习数据库的核心概念
  • Y20030002 微信+Java+Jsp+Servlet+MySQL的问卷调查小程序的设计与实现 源代码 配置文档 全套资料
  • ros项目dual_arm_pick-place(urdf文件可视化查看)
  • AI-安全-B站
  • 【C#设计模式(19)——备忘录模式(MementoPattern)】
  • 第三部分:进阶概念 8.事件处理 --[JavaScript 新手村:开启编程之旅的第一步]
  • 工具推荐-js爬取工具
  • Android问题记录 - Inconsistent JVM-target compatibility detected for tasks
  • ejb组件(rmi) webservice平台(xml)
  • 【jvm】垃圾回收的重点区域
  • PyQt信号槽实现页面的登录与跳转 #页面进一步优化
  • 谈谈web3
  • 正则表达式实战例子
  • Hadoop不同版本的区别