Docker复习笔记

news2024/10/2 22:26:37

Centos7安装Docker

Docker官网:www.docker.com

Docker官网仓库:hub.docker.com

Docker文档是比较详细的

安装相关依赖

yum -y install gcc gcc-c++

yum install -y yum-utils

设置docker镜像仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo  这个是官网的

下面这个是设置成阿里云镜像(我这里安装的是上面这个官网的)

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum软件包索引(这个我没有执行)

yum makecache fast

安装Dcoker引擎

yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Docker常用命令

启动Docker引擎

systemctl start docker    启动docker

systemctl is-enabled docker  查看Docker是否自动启动

systemctl enable docker    设置Docker自动启动

systemctl restart docker   重启docker

systemctl stop docker 停止docker

systemctl disable docker  取消自动启动

systemctl status docker 查看docker状态

docker version   查看版本

docker info   查看概要

docker --help  帮助文档

docker 具体命令 --help  查看具体命令的帮助文档

Docker的HelloWorld

docker run hello-world  

卸载Docker引擎

停止docker引擎

systemctl stop docker


yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

删除存储镜像、容器和其他相关数据

rm -rf /var/lib/docker

删除Docker引擎相关数据

rm -rf /var/lib/containerd

阿里云镜像加速器设置

可以查看阿里云

可以使用上面的命令  也可以用vim直接创建并编辑

vim /etc/docker/daemon.json

让系统重新加载配置

systemctl daemon-reload

重启docker

systemctl restart docker

镜像和容器相关命令

docker images 列出本地所有镜像

docker search xxxx 远程仓库查看某个镜像

docker search --limit 5 redis 查看redis镜像排名前5个

docker pull xxx  下载某个镜像

docker pull centos:加版本号    :加版本号可以不加默认:latest 最新版

docker pull redis:6.0.8 下载指定版本镜像

docker pull ubuntu  下载最新版本ubuntu

docker images -a 查看历史所有镜像

docker images -q 或者 docker images -aq  docker images -qa 三个一个意思  列出所有镜像ID

docker system df 查看镜像/容器/数据卷所占的空间

docker rmi 镜像名:版本/ID  删除某个镜像默认:latest最新版本

docker rmi -f 镜像名/ID     强制删除某个镜像默认:latest最新版本

docker rmi -f 镜像名/ID 镜像名/ID 镜像名/ID    强制删除多个

docker rmi -f $(docker images -qa)    强制删除所有镜像

面试题:什么是虚悬镜像 镜像的Repository和TAG 都是none的就是虚悬镜像 建议删除 有时docker出了某些问题会出现

运行容器相关命令

镜像是模板,容器好比一个个实例

docker pull ubuntu

此时不能再像hello-world那样直接 docker run ubuntu  它会直接退出

docker run -it --name myubuntu ubuntu   即使这样 默认也会带shell脚本

docker run -it --name myubuntu ubuntu /bin/bash 

docker run -it --name myubuntu2 ubuntu /bin/sh

docker run -it --name=myubuntu ubuntu /bin/bash 

docker run -it --name myubuntu ubuntu bash    四个命令都可以 -it表示启动伪终端交互 --name可以不指定,不指定就是系统分配  这样会直接进入容器终端

docker run -d --name myubuntu ubuntu   启动守护式容器  后台启动 但是这样会启动并直接停止容器  这里具体看情况   原因在于ubuntu内部没有执行什么应用,docker认为根本没用 就会自动关闭  但是对于比如说redis   tomcat等等这样  容器启动后 会在后台运行   docker认为容器在干活不会自动关闭

docker run -it --name mynginx nginx /bin/bash 交互启动注意  直接进入交互  但是exit后会关闭容器  因此建议后台启动 或者用Ctrl+p+q 退出 这样不会关闭容器

如果ctrl+p+q退出后用 docker exec -it mynginx /bin/bash 重新进入  则用exit不会关闭容器

docker run -d -p 8080:8080 --name mytomcat tomcat 因为tomcat在内部运行不会自动关闭

此时如果直接exit 会退出并关闭(停止运行中)容器

可以按住Ctrl+p+q 来退出  容器继续运行

进入容器

docker exec -it nginx1 /bin/bash

docker exec -it nginx1 /bin/sh

docker top 容器id/容器名字   查看容器内运行的进程

docker inspect 容器ID/容器名字   查看容器内部运行细节

docker logs 容器ID/容器名字    查看日志

docker start 容器id或者容器名   启动运行过的容器

docker restart 容器id或者容器名   重启容器

docker stop 容器id或者容器名     停止容器

docker kill 容器id或者容器名      强制停止容器

docker rm 容器id或者容器名   删除已停止的容器

docker rm -f 容器id或者容器名   强制删除容器(包括运行中)

docker rm xxx  xxx xxx可以删除多个容器

docker rm -f $(docker ps -aq)  强制删除所有停止和运行中的容器

docker rmi xxxx 删除镜像

docker rmi xxx xxx xxx

docker ps 列出所有运行的容器

docker ps -a 列出所有运行中和运行过的容器

docker ps -q 列出在运行的容器的id

两个进入容器的命令

docker attach 容器Id/容器名 直接进入容器启动命令终端,不会启动新进程,用exit会导致容器停止

docker exec -it 容器id/容器名 /bin/bash   容器中打开的的终端,可以启动新的进程,用exit不会导致容器停止    推荐使用docker exec -it 容器id/容器名 /bin/bash

从容器内拷贝文件到宿主机

docker cp 容器id/容器名字:容器内路径  目的宿主机路径   (在宿主机操作,无论容器有没有运行都可以复制)

例如

docker cp mycentos1:/a.txt /a.txt
docker cp mycentos1:/a.txt /c.txt

导出整个镜像为tar归档文件到宿主机

该容器是否在运行中没有关系

在宿主机执行

docker export 容器ID/容器名字  >  新的名字.tar

docker export 容器ID/容器名字  >  /usr/local/develop/新的名字.tar

导入tar归档文件为镜像

cat /usr/local/develop/xxxx.tar | docker import - 新的镜像名字:版本号                  版本号可以不写

例如

cat /usr/local/develop/xxxx.tar | docker import - xxxxx:1.1

镜像提交到本地

下载的镜像里面可能没有某些命令工具,或者并不是你期望想要的,简单讲你可以自己添加功能保存到本地镜像

例如:我们将一个ubuntu镜像添加一个功能,提交到本地镜像

apt-get update

apt-get -y install vim

现在就可以使用了

保存好a.txt文件之后退出容器 ctrl+p+q(退出让容器继续运行)    exit退出且容器停止运行   

我们想把有vim功能的这个ubuntu镜像提交到本地  

在宿主机

docker commit -m="提交的描述信息" -a="作者" 容器名或者ID 创建镜像的名字:版本号

docker commit -m="add vim" -a="hrui" myubuntu ubuntuvim:v1
 

本地镜像发布到阿里云

先创建命名空间,再创建镜像仓库

基本就是照着上面抄

docker tag ubuntuvim:v1(可以是id) xxxxxx/test:v1

docker push xxxxxx/hrui/test:v1

拉取也一样  跟着抄

镜像推送到私有仓库

下载镜像 

docker pull registry

运行私有库Registry相当于本地有个私有的Docker hub(镜像仓库)

docker run -d -p 5000:5000 -v /usr/local/develop/registry:/tmp/registry --privileged=true --name myregistry registry

-d:后台启动

-p 5000:5000 宿主机5000端口对应容器5000端口

-v /usr/local/develop/registry:/tmp/registry  容器卷绑定   如果不写 默认仓库被创建在容器的/var/lib/registry目录下  建议自行用容器卷映射

--privileged=true  权限给与容器相当于宿主机全部权限

此时进入容器docker exec -it myregistry /bin/bash不可用   因为容器缩小了  很多找不到

docker exec -it myregistry /bin/sh  这种在绝大多数时候是可用的   

后台启动用docker exec -it myregistry /bin/sh进去 可以使用exit退出和CTRL+P+Q退出  都不会停止容器

这样私服镜像仓库就搭建完成了

可以用

curl -XGET http://IP地址:5000/v2/_catalog 

私服默认不接受http请求

vim /etc/docker/daemon.json

 "insecure-registries": ["IP地址:5000"]

重启docker引擎

systemctl restart docker

重启镜像仓库容器

docker start myregistry

可以用命令

docker tag 镜像id/或镜像名:版本号 ip地址:5000/镜像名:版本号   进行推送

docker tag centos localhost:5000/mycentos:v1
docker push localhost:5000/mycentos:v1 推送

docker pull localhost:5000/mycentos:v1   拉取

关于设置密码   另外查

容器卷相关

docker run -it --privileged=true -v /usr/local/develop/ubuntu:/tmp/docker_data --name=u1 ubuntu

注意这里用 -it启动 原因是用-d后台启动的话,docker任务ubuntu内部没有可以执行的东西,自动会关闭,  这和redis tomcat等有区别   redis tomcat等启动后内部有任务在执行

-v /usr/local/develop/ubuntu:/tmp/docker_data 这样宿主机和容器内部就相关联

宿主机

宿主机对应目录做了什么文件操作  相应的容器内对应目录也会同步

docker inspect 容器ID/容器名字     可以看详情

docker run -it --privileged=true -v /usr/local/develop/ubuntu:/tmp/docker_data --name=u1 ubuntu这种写法其实

docker run -it --privileged=true -v /usr/local/develop/ubuntu:/tmp/docker_data:rw --name=u1 ubuntu

这个:rw是默认加上去了  就是说容器可以对该/tmp/docker_data目录下进行读写操作

如果是docker run -it --privileged=true -v /usr/local/develop/ubuntu:/tmp/docker_data:ro --name=u1 ubuntu 这样的话就是容器对/tmp/docker_data只有读操作没有写操作

限制的是容器    宿主机不会被限制

容器卷的继承

比如说docker run -it --privileged=true -v /usr/local/develop/ubuntu:/tmp/docker_data --name=u1 ubuntu

现在又有个u2

docker run -it --privileged=true --volumes-from 父类 --name=u2 ubuntu

docker run -it --privileged=true --volumes-from u1 --name=u2 ubuntu

也就是说 u2复用了 u1的容器卷规则

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1471814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql运维篇(五) 部署MHA--主机环境配置

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除! 大佬博文 https://www.cnblogs.com/gomysql/p/3675429.html MySQL 高可用(MHA&#x…

js:通过input标签或Drag拖拽文件实现浏览器文件上传获取File文件对象

文档 https://developer.mozilla.org/zh-CN/docs/Web/API/Filehttps://developer.mozilla.org/zh-CN/docs/Web/API/HTMLElement/drag_event 通过读取文件可以获取File对象的信息 lastModified: 1707210706000 lastModifiedDate: Tue Feb 06 2024 17:11:46 GMT0800 (中国标准…

使用 Verilog 做一个可编程数字延迟定时器 LS7211-7212

今天的项目是在 Verilog HDL 中实现可编程数字延迟定时器。完整呈现了延迟定时器的 Verilog 代码。 所实现的数字延迟定时器是 CMOS IC LS7212,用于生成可编程延迟。延迟定时器的规格可以在这里轻松找到。基本上,延迟定时器有 4 种操作模式:…

备考北京高考数学:历年选择题真题练一练和解析(2014-2023)

还有三个多月的时间就要高考了,我们今天继续看北京市高考数学真题和解析。今天看5道选择题。独家制作的在线练习集,可以便捷地反复刷这些真题,吃透真题(背后的知识点和解题技巧),让高考数学再上一个台阶。 …

【LeetCode:2476. 二叉搜索树最近节点查询 + 中序遍历 + 有序表】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【算法小讲堂】#1 贪心算法

引入——关于贪心算法 我们先来做一个小游戏——现在假设自己是一个小偷,桌上有一些物品,包括一台iPhone15、一个充电宝、一个眼罩和一个溜溜梅。此时,你听说警察即将到来,那么你会先带走哪个东西呢? 一般来讲&#xf…

[云原生] 二进制安装K8S(上)搭建单机matser、etcd集群和node节点

一、单机matser预部署设计 目前Kubernetes最新版本是v1.25,但大部分公司一般不会使用最新版本。 目前公司使用比较多的:老版本是v1.15,因为v1.16改变了很多API接口版本,国内目前使用比较多的是v1.18、v1.20。 组件部署&#xff…

beego代理前端web的bug

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、beego代理前端web的bug总结 一、beego代理前端web的bug *报错,为web压缩包index.html里面的注释被错误解析,删掉就行 2024/02/22 10:2…

[HarekazeCTF2019]encode_and_encode 不会编程的崽

这题知道这个知识点就挺好做的 <?php error_reporting(0);if (isset($_GET[source])) {show_source(__FILE__);exit(); }function is_valid($str) {$banword [// no path traversal\.\.,// no stream wrapper(php|file|glob|data|tp|zip|zlib|phar):,// no data exfiltra…

如何实现固定公网地址远程访问内网Wagtail管理界面

文章目录 前言1. 安装并运行Wagtail1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具3. 实现Wagtail公网访问4. 固定的Wagtail公网地址 前言 Wagtail是一个用Python编写的开源CMS&#xff0c;建立在Django Web框架上。Wagtail 是一个基于 Django 的开源内容管理系统&#xf…

【精品】OnlyOffice 8.0 版本深度测评

引言 官网链接&#xff1a; ONLYOFFICE 官方网址 OnlyOffice 是一套全面的开源办公协作软件&#xff0c;旨在为用户提供强大、便捷和安全的文档处理和协作环境。最新发布的 OnlyOffice 8.0 版本带来了一系列引人瞩目的新特性和功能改进&#xff0c;进一步提升了其在功能丰富性…

Pyglet综合应用|推箱子游戏之关卡图片载入内存

目录 读取图片 分割图片 综合应用 本篇为之前写的博客《怎样使用Pyglet库给推箱子游戏画关卡地图》的续篇&#xff0c;内容上有相关性&#xff0c;需要阅读的请见链接&#xff1a; https://hannyang.blog.csdn.net/article/details/136209138 「推箱子」是一款风靡全球的益…

element table数据量太大,造成浏览器崩溃。解决方案

这是渲染出来的数据 其实解决思路大致就是&#xff1a;把后台返回的上万条数据&#xff0c;进行分割&#xff08;前端分页&#xff09;&#xff0c;这样先加载几十条&#xff0c;然后再用懒加载的方式去concat&#xff0c;完美解决 上代码 <template><div class&quo…

四川宏博蓬达法律:正义之路的坚实守护者

在当今社会&#xff0c;法律的重要性不言而喻。它既是社会秩序的维护者&#xff0c;也是公民权益的保障者。四川宏博蓬达法律&#xff0c;作为一家专业的法律服务机构&#xff0c;始终秉持着正义、公平、诚信的原则&#xff0c;为广大民众提供优质的法律服务。 一、专业团队&am…

上门服务系统|上门服务小程序|上门服务软件开发

随着移动互联网技术的普及&#xff0c;上门服务小程序系统成为现代企业数字化转型的关键一环。这一系统为消费者提供了更加便捷、高效以及个性化的服务体验&#xff0c;同时也为企业带来了更广阔的商业机会。让我们来看看上门服务小程序系统的优势和功能。 首先&#xff0c;上门…

HTTP---------状态码

当服务端返回 HTTP 响应时&#xff0c;会带有一个状态码&#xff0c;用于表示特定的请求结果。比如 HTTP/1.1 200 OK&#xff0c;里面的 HTTP/1.1 表示协议版本&#xff0c;200 则是状态码&#xff0c;OK 则是对状态码的描述。 由协议版本、状态码、描述信息组成的行被称为起始…

R语言【rgbif】——occ_search()的start和limit参数的配合使用,以及索引的认识

Package rgbif version 3.7.8 occ_search()的参数start和参数limit配合使用&#xff0c;可以在检索的记录超过 10&#xff0c;000条时&#xff0c;获取后面的记录。 根据occ_search()的函数帮助文档&#xff0c;参数start的默认值为0。这是一个在R语言中比较敏感的数字。它可能…

MySQL进阶篇4-InnoDB引擎和MySQL管理

InnoDB引擎 逻辑存储结构 表空间&#xff08;ibd文件&#xff09;&#xff1a;一个mysql实例可以对应多个表空间&#xff0c;用于存储记录、索引等数据。 段&#xff0c;分为数据段、索引段和回滚段。InnoDB是索引组织表&#xff0c;数据段就是B树的叶子节点&#xff0c;索引…

OpenAI视频生成Sora技术简析

基本介绍 Sora是春节期间OpenAI发布的产品&#xff0c;主要是通过文字描述生成视频&#xff0c;通过大规模视频数据训练而成的生成模型&#xff0c;当前还没开放试用。官方发布的技术报告&#xff1a;https://openai.com/research/video-generation-models-as-world-simulators…

【深入理解设计模式】适配器设计模式

适配器设计模式 适配器设计模式是一种结构型设计模式&#xff0c;用于将一个类的接口转换成客户端所期望的另一个接口&#xff0c;从而使得原本由于接口不兼容而不能一起工作的类能够一起工作。适配器模式通常用于以下场景&#xff1a; 现有接口与需求不匹配&#xff1a;当需要…