Docker复习笔记

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的容器卷规则

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云尚办公-0.0.1

1. 核心技术 基础框架:SpringBoot数据缓存:Redis数据库:MySQL权限控制:SpringSecurity工作流引擎:Activiti前端技术:vue-admin-template Node.js Npm Vue ElementUI Axios微信公众号:公众…

【FreeRTOS】任务创建

参考博客: ESP-IDF FreeRTOS 任务创建分析 - [Genius] - 博客园 (cnblogs.com) 1.什么是任务 1)独立的无法返回的函数称为任务 2)任务是无线循环 3)无返回数据 2.任务的实现过程 1.定义任务栈 裸机程序:统一分配到一…

centos7部署单机项目和自启动

centos7部署单机项目和服务器自启动 1.安装jdk和tomact1.1上传jdk、tomcat安装包1.2解压两个工具包1.3.配置并且测试jdk安装1.4.启动tomcat1.5.防火墙设置1.6配置tomcat自启动 2.安装mysql2.1卸载mariadb,否则安装MySql会出现冲突(先查看后删除再查看)2.2在线下载My…

2023年12月CCF-GESP编程能力等级认证C++编程七级真题解析

一、单选题(共15题,共30分) 第1题 定义变量 double x ,如果下面代码输入为 100 ,输出最接近( )。 A:0 B:-5 C:-8 D:8 答案:B 第2题 对于下面动态规划方法实现的函数,以下选项中最适合表达其状态转移函数的为( )。 A: B: C: D:

[LWC] Components Communication

目录 Overview ​Summary Sample Code 1. Parent -> Child - Public Setter / Property / Function a. Public Property b. Public getters and setters c. Public Methods 2. Child -> Parent - Custom Event 3. Unrelated Components - LMS (Lightning Message…

Vue packages version mismatch 报错解决

问题 npm run dev 运行项目的过程中,报错 Vue packages version mismatch 解决方法 根据报错不难看出是 vue 与 vue-template-compiler 版本产生了冲突,vue 与 vue-template-compiler 的版本是需要匹配的。所以解决的办法就是先修改其中一个的版本将 v…

[C++]宏定义

C/C宏的基本使用方法 宏是C/C所支持的一种语言特性,我对它最初的印象就是它可以替换代码中的符号,最常见的例子便是定义一个圆周率PI,之后在代码中使用 PI 来代替具体圆周率的值。 确实如此,宏提供了一种机制,能够使…

动力学约束下的运动规划算法——两点边界值最优控制问题 OBVP

OBVP 即 optimal bundary value problem,即最优的BVP, BVP 问题其实就是解决 state sampled lattice planning 的基本操作方法。 如果,我们期望无人机从一个状态移动到另一个状态,即给定初始状态和终点状态,求解两个状…

每日五道java面试题之spring篇(五)

目录: 第一题. 使用 Spring 有哪些方式?第二题. 什么是Spring IOC 容器?第三题. 控制反转(IoC)有什么作用?第四题. IOC的优点是什么?第五题. BeanFactory 和 ApplicationContext有什么区别? 第一题. 使用 Spring 有哪…

【Web】CTFSHOW 常用姿势刷题记录(全)

目录 web801 web802 web803 web804 web805 web806 web807 法一:反弹shell 法二:vps外带 web808 web809 web810 web811 web812 web813 web814 web815 web816 web817 web818 web819 web820 web821 web822 web823 web824 web825…

03|Order by与Group by优化

索引顺序依次是 : name,age,position 案例1 EXPLAIN SELECT * FROM employees WHERE name LiLei AND position dev ORDER BY age;分析: 联合索引中只是用到了name字段做等值查询[通过key_len 74可以看出因为name字段的len74],在这个基础上使用了age进…

Javaweb之SpringBootWeb案例之配置优先级的详细解析

1. 配置优先级 在我们前面的课程当中,我们已经讲解了SpringBoot项目当中支持的三类配置文件: application.properties application.yml application.yaml 在SpringBoot项目当中,我们要想配置一个属性,可以通过这三种方式当中…

什么是MapReduce

1.1 MapReduce到底是什么 Hadoop MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。这个定…

docker build基本命令

背景 我们经常会构建属于我们应用自己的镜像,这种情况下编写dockerfile文件不可避免,本文就来看一下常用的dockerfile的指令 常用的dockerfile的指令 首先我们看一下docker build的执行过程 ENV指令: env指令用于设置shell的环境变量&am…

DBAPI如何使用数组类型参数

DBAPI如何使用数组类型参数 需求 根据多个id去查询学生信息 API创建 在基本信息标签&#xff0c;创建参数ids &#xff0c;参数类型选择 Array<bigint> 在执行器标签&#xff0c;填写sql&#xff0c;使用in查询 select * from student where id in <foreach ope…

《Docker 简易速速上手小册》第6章 Docker 网络与安全(2024 最新版)

文章目录 6.1 Docker 网络概念6.1.1 重点基础知识6.1.2 重点案例&#xff1a;基于 Flask 的微服务6.1.3 拓展案例 1&#xff1a;容器间的直接通信6.1.4 拓展案例 2&#xff1a;跨主机容器通信 6.2 配置与管理网络6.2.1 重点基础知识6.2.2 重点案例&#xff1a;配置 Flask 应用的…

设计模式学习笔记 - 面向对象 - 7.为什么要多用组合少用继承?如何决定该用组合还是继承?

前言 在面向对象编程中&#xff0c;有一条非常经典的设计原则&#xff1a;组合优于继承&#xff0c;多用组合少用继承。 为什么不推荐使用继承&#xff1f; 组合比继承有哪些优势&#xff1f; 如何判断该用组合还是继承&#xff1f; 为什么不推荐使用继承&#xff1f; 继承…

企业微信怎么变更企业名称?

企业微信变更主体有什么作用&#xff1f;现在很多公司都用企业微信来加客户&#xff0c;有时候辛辛苦苦积累了很多客户&#xff0c;但是公司却因为各种各样的原因需要注销&#xff0c;那么就需要通过企业微信变更主体的方法&#xff0c;把企业微信绑定的公司更改为最新的。企业…

内核解读之内存管理(8)什么是page cache

文章目录 0. 文件系统的层次结构1.什么是page cache2.感观认识page cache3. Page Cache的优缺点3.1 Page Cache 的优势3.2 Page Cache 的劣势 0. 文件系统的层次结构 在了解page cache之前&#xff0c;我们先看下文件系统的层次结构。 1 VFS 层 VFS &#xff08; Virtual Fi…

Gitflow:一种依据 Git 构建的分支管理工作流程模式

文章目录 前言Gitflow 背景Gitflow 中的分支模型Gitflow 的版本号管理简单模拟 Gitflow 工作流 前言 Gitflow 工作流是一种版本控制流程&#xff0c;主要适用于较大规模的团队。这个流程在团队中进行合作时可以避免冲突&#xff0c;并能快速地完成项目&#xff0c;因此在很多软…