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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高分SCI绘图必备!你必须要学会的18种Matlab绘图代码与20个绘图技巧(附完整代码)

目录 绘图技巧篇 绘图代码篇 免费完整代码获取​ 今天为大家带来一期18种Matlab绘图代码与20个绘图技巧代码,所有代码完全免费! 如果你想发SCI,普通的图已经进入不了审稿人的视线了,非常容易被拒稿。试想,如果一篇…

【b站咸虾米】chapter5_uniapp-API_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握

课程地址:【新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握】 https://www.bilibili.com/video/BV1mT411K7nW/?p12&share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 5 API 5.1 页面和路…

【Java程序设计】【C00287】基于Springboot的疫情防控期间某村外出务工人员管理系统(有论文)

基于Springboot的疫情防控期间某村外出务工人员管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的疫情防控期间某村外出务工人员信息管理系统 本系统分为系统功能模块、管理员功能模块、用户功能模块、采集…

两结点之间创建简单的梁单元并进行线性网格划分的方法

进入1D面板->进入bars界面 https://zhuanlan.zhihu.com/p/613163100

【Unity】Unity与安卓交互

问题描述 Unity和安卓手机进行交互,是我们开发游戏中最常见的场景。本教程将从一个简单的例子来演示一下。 本教程需要用到Android Studio2021.1.1 1.Android Studio新建一个工程 2.选择Empty Activity 然后点击Next 3.点击Finish完成创建 4.选择File-New-New Mo…

Linux:Jenkins用户权限和管理

1.下载插件 由于Jenkins的默认权限管理并不是很精细所以我们安装一个插件进行权限的一个管理 插件名称为:Role-based Authorization Strategy 安装完插件我们再去配置一下 进入全局安全配置 选择这个Role-Based Strategy策略然后保存 2.创建角色 我们这里主要使…

Odoo系统安装部署并结合内网穿透实现固定域名访问本地ERP系统

文章目录 前言1. 下载安装Odoo:2. 实现公网访问Odoo本地系统:3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件,是一个一站式全功能ERP及电商平台。 开源性质:Odoo是一个开源的ERP软件,这意味着企…

企微hook框架

https://wwm.lanzoum.com/ipUTp1ot1twh 密码:hvev 免费的企微框架 支持文本消息,图片消息,视频消息,文件消息。 其他可自行下载测试。 有兴趣可以进群交流。720192224 BOOL WxWorkSendData(string data) { WX_GETOBJDATA ob…

[C++]18:set和map的使用

set和map的使用 一.关联式容器&#xff1a;1.简单概念&#xff1a;2.<key , value>--->键值对3.set和map的底层结构&#xff08;平衡搜索树或者红黑树&#xff09; 二.set1.set (排序不重复)1.模板参数&#xff1a;2.set是一个有序存储的容器&#xff1a;3.set中每个数…

Vi/Vim 使用小窍门,如何消除搜索后的关键字高亮

Vim/Vi 基本上是 *nix 世界最受欢迎的编辑器了&#xff0c;不知道为什么&#xff0c;一直以来觉得和 Emacs 比起来&#xff0c;Vim 更加有亲和力。用起来很舒服。 今天就记录一个困扰了我很久的问题。 大家应该都知道&#xff0c;在 Vi 里面如果要搜索某个关键字&#xff0c;…

ChatGPT调教指南 | 咒语指南 | Prompts提示词教程(三)

在人工智能成为我们日常互动中无处不在的一部分的时代&#xff0c;与大型语言模型(llm)有效沟通的能力是无价的。“良好提示的26条原则”为优化与这些复杂系统的交互提供了全面的指导。本指南证明了人类和人工智能之间的微妙关系&#xff0c;强调清晰、专一和结构化的沟通方法。…

vscode输入英文时字体之间的间隔突然变大,似中文

vscode输入英文时字体之间的间隔突然变大&#xff0c;似中文 主要原因&#xff1a; 是由于输入法变成全角模式了。原因可能是不小心按了 shift空格键快捷键造成的。 正常情况&#xff0c;全角就是字母和数字等与汉字占等宽位置的字。 半角就是ASCII方式的字符&#xff0c;在没…

Sora:视频生成模型作为世界模拟器

我们探索了视频数据上生成模型的大规模训练。具体来说&#xff0c;我们在可变持续时间、分辨率和长宽比的视频和图像上联合训练文本条件扩散模型。我们利用了一个在视频和图像潜在码的时空块上操作的变压器架构。我们规模最大的模型 Sora 能够生成一分钟的高保真视频。我们的结…

第十四章 Linux面试题

第十四章 Linux面试题 日志t.log(访问量)&#xff0c; 将各个ip地址截取&#xff0c;并统计出现次数&#xff0c;并按从大到小排序(腾 讯) http://192. 168200.10/index1.html http://192. 168.200. 10/index2.html http:/192. 168 200.20/index1 html http://192. 168 200.30/…

c++学习记录 STL初识—vector存放内置数据类型

#include<iostream> using namespace std; #include<vector> #include<algorithm>//标准算法头文件//容器&#xff1a;vector //算法&#xff1a;for_each //迭代器&#xff1a;vector<int>::iteratorvoid myPrint(int val) {cout << val <&l…

微服务篇之分布式系统理论

一、CAP定理 1.什么是CAP 1998年&#xff0c;加州大学的计算机科学家 Eric Brewer 提出&#xff0c;分布式系统有三个指标&#xff1a; 1. Consistency&#xff08;一致性&#xff09;。 2. Availability&#xff08;可用性&#xff09;。 3. Partition tolerance &#xff0…

力扣 187. 重复的DNA序列

1.题目 DNA序列 由一系列核苷酸组成&#xff0c;缩写为 A, C, G 和 T.。 例如&#xff0c;"ACGAATTCCG" 是一个 DNA序列 。 在研究 DNA 时&#xff0c;识别 DNA 中的重复序列非常有用。 给定一个表示 DNA序列 的字符串 s &#xff0c;返回所有在 DNA 分子中出现不止一…

医院LIS(全称Laboratory Information Management System)系统源码

目录 一、医院LIS系统概况 二、医院LIS系统建设必要性 三、为什么要使用LIS系统 四、技术框架 &#xff08;1&#xff09;总体框架 &#xff08;2&#xff09;技术细节 &#xff08;3&#xff09;LIS主要功能模块 五、LIS系统优势 &#xff08;1&#xff09;客户/用户…

JAVA工程师面试专题-《Mysql》篇

目录 一、基础 1、mysql可以使用多少列创建索引&#xff1f; 2、mysql常用的存储引擎有哪些 3、MySQL 存储引擎&#xff0c;两者区别 4、mysql默认的隔离级别 5、数据库三范式 6、drop、delete 与 truncate 区别&#xff1f; 7、IN与EXISTS的区别 二、索引 1、索引及索…

构建SatelliteRpc:基于Kestrel的RPC框架(整体设计篇)

背景 之前在.NET 性能优化群内交流时&#xff0c;我们发现很多朋友对于高性能网络框架有需求&#xff0c;需要创建自己的消息服务器、游戏服务器或者物联网网关。但是大多数小伙伴只知道 DotNetty&#xff0c;虽然 DotNetty 是一个非常优秀的网络框架&#xff0c;广泛应用于各种…