【docker】之基础篇一

目录

  • 一、docker的简单介绍
  • 二、centos7安装docker
    • 设置ustc的镜像
    • 镜像相关的命令:
    • 容器相关的命令
    • 创建镜像的三种方式
    • 存出和载入镜像
    • 创建与启动容器
    • 目录挂载
    • 导入和导出容器
  • 三、redhat安装docker
  • 四、搭建本地私有仓库
  • 五、软件部署
    • 1.mysql部署
    • 2.nginx部署
    • 3.tomcat部署

一、docker的简单介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

docker基本组成

  • docker client 客户端
  • docker daemon docker守护进程
  • docker images 镜像
  • docker container 容器
  • docker registry 镜像仓库

什么是镜像?
它是一个分层存储的文件,是一个软件环境,一个镜像可以创建多个容器,一种标准化的交付,一个不包含liunx内核的精简的操作系统。
镜像与容器的关联:
一个镜像可包含多个容器,容器是在镜像的最上面加了一层读写层,镜像里面的文件改动时,它不会直接改动镜像,而是将要改动的文件拷贝到读写层,如果容器删除了,最上面的读写层也就删除了,改动也就丢失了,所以无论多少个容器共享一个镜像,所做的写操作都是从镜像的文件系统中复制过来操作的,并不会修改镜像的源文件,这种方式提高了磁盘的利用率。如果想持久化这些改动,可以通过docker commit将容器保存成一个新镜像。

为什么用docker?
1、简化程序:
Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,便可以实以虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就能完成。
2、避免选择恐惧症:
Docker镐像中包含了运行环境和配置,所以Docker可以简化部署多种应用实例工作。比如Web应用、后台应用、数据库应用、大数据应用、消息队列等都可以打包成一个镜像部署。
3、节省开支
一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker改变了高性能必然高价格的思维。docker与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

4、更轻松的迁移
由于Docker确保了执行环境的一至性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将其他平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

二、centos7安装docker

1.yum包更新到最新

yum update

2.安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

yum install -y yum-utils device-mapper-persistent-data lvm2

3.设置yum源为阿里云

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

也可直接下载repo (https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo)
4.安装

yum install docker-ce 社区版

检查是否安装成功 docker -v

设置ustc的镜像

ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
https://lug.ustc.edu.cn/wiki/mirrors/help/

编辑该文件,也就是配置加速器:

[root@gang ~]# mkdir -p /etc/docker
[root@gang ~]# vim /etc/docker/daemon.json
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

启动docker:

[root@gang ~]# systemctl start docker

查看docker相关信息:

docker info

查看docker的帮助文档:

docker --help

镜像相关的命令:

docker images -----查看镜像

docker search centos ----搜索镜像

docker pull centos:7 -------拉取centos7的镜像 , 默认从官方仓库中下载

docker rmi 镜像id -------删除镜像

docker tag centos:7 mycentos:7 复制一个一模一样的docker镜像

docker rmi docker images -q 删除所有的镜像

docker inspect eeb6ee3f44bd-----查看镜像的详细信息

docker image prune —清理镜像,加一个-a参数是删除无用的镜像,不光是临时镜像

一般来说,镜像的latest标签意味着该镜像的内容会跟踪最新版本的变化而变化,内容不稳定。因此,生产环境中,不要使用latest标签

容器相关的命令

docker ps ----------查看正在运行的容器

docker ps -a ----------查看正在运行的容器

docker ps -l -----------查看最后一次正在运行的容器

docker logs id --------查看容器的输出

docker pause 容器名  --------- 暂停容器
docker unpause 容器  --------- 恢复容器

创建镜像的三种方式

存出和载入镜像

1.存出镜像
如果要导出镜像到本地文件,使用docker 【image】save命令。该命令支持-o,-output string参数。
例如导出本地centos:7镜像为文件centos_7.tar:

docker save -o centos_7.tar centos:7

2.载入镜像
可以使用docker 【image】 load将导入的tar文件再导入到本地镜像库。支持-i,-input string选项。
例如,从文件centos_7.tar导入镜像到本地镜像列表:

docker load -i centos_7.tar
或者docker load < centos_7.tar

3.上传镜像
使用docker 【image】 push命令上传到镜像到仓库,默认上传到docker Hub官方仓库(需要登录),用户在docker Hub网站注册后可以上传自制镜像。
Docker Hub地址:https://hub.docker.com

我用的阿里云上传镜像。

创建与启动容器

创建容器命令 docker run

  • -i :表示运行容器
  • -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端.
  • –name:为容器创建名字
  • -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i-t两个参数,创建后就会自动进去容器)。
  • -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录)可以使用多个-v做多个目录或文件映射。
  • -p∶表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射。

以it参数登录进入docker容器后,退出后,容器也会停止运行
docker run -it --name=mycentos centos:7 比如进入容器

以守护进程运行docker后,exit后,还在运行
[root@gang ~]# docker run -di --name=centos2 centos:7 [root@gang ~]# docker exec -it centos2 /bin/bash

docker stop id ------------停止docker

docker start id --------------启动docker

docker rm id --------------删除容器

docker inspect centos2 —查看容器相关信息

docker stats id ---------查看统计信息

把宿主的文件拷贝到容器中:

docker cp mysql-community-client-5.7.28-1.el7.x86_64.rpm 780bf320d4cb:/

把容器的文件拷贝到宿主的中

docker cp 780bf320d4cb:/mysql-community-client-5.7.28-1.el7.x86_64.rpm ~/

查看变更

docker diff 容器id

查看端口映射

docker port 容器

目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
创建容器添加-v参数后边为宿主机目录:容器目录,例如:

docker run -di -v /data/file/:/data --name=centos3 centos:7

导入和导出容器

有时候我们需要将容器从一个系统迁移到另外一个系统,可以利用docker的导入和导出功能。
1.导出容器
导出容器是指导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态。可以使用docker 【container】 export命令:

docker export -o test.tar centos3
或者
docker export centos3 > tt.tar

2.导入容器
导出的文件又可以使用docker 【container】 import 命令导入变成镜像:
docker import test.tar --test/ununtu:v1.0

三、redhat安装docker

  1. 更新系统:
yum update
  1. 添加Docker存储库:
 yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装Docker引擎:
yum install docker-ce
  1. 启动Docker服务:
systemctl start docker

四、搭建本地私有仓库

1.使用registry镜像创建私有云仓库
安装docker后,可以通过官方提供的registry镜像来搭建一套本地私有仓库环境:
[root@gang ~]# docker pull registry
[root@gang ~]# docker run --name registry -p 5000:5000 -v /data/registry:/var/lib/registry -d registry:latest
[root@gang ~]# docker tag busybox:latest 172.28.199.112:5000/busybox:v1
[root@gang ~]# docker push 172.28.199.112:5000/busybox:v1
报错:

The push refers to repository [172.28.199.112:5000/busybox]
Get "https://172.28.199.112:5000/v2/": http: server gave HTTP response to HTTPS client

docker上传下载默认只支持https协议,搭建的私有云仓库是http协议
解决:

[root@gang ~]# vim /etc/docker/daemon.json 
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],"insecure-registries":["172.28.199.112:5000"]
}

有兴趣的甚至可以去安装搭建Harbor。

五、软件部署

1.mysql部署

docker pull mysql:5.7
docker run -id --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
[root@gang ~]# docker exec -it mysql /bin/bash
bash-4.2# mysql -uroot -proot --default-character-set=utf8

2.nginx部署

nginx需要修配置文件,就通过挂载解决

[root@gang ~]# docker pull nginx
[root@gang ~]# docker run -id --name=nginx -p 80:80 nginx:latest 
91a1b54c2233d9d63ab7cd114c6d83cb1ac1d2df25d254ddb569fa17031d19cb
[root@gang ~]# docker cp nginx:/etc/nginx/ /data/etc/nginx/   把容器的文件拷贝到宿主机上,挂载目录
[root@gang nginx]# docker stop nginx 
nginx
[root@gang nginx]# docker rm nginx 
nginx
[root@gang nginx]# docker run -di --name=nginx -p 80:80 -v /data/etc/nginx/:/etc/nginx nginx:latest  创建容器的时候挂载

3.tomcat部署

我拉取的镜像是tomcat:7

[root@redhat ~]# docker pull tomcat:7
[root@redhat ~]# docker run -d --name mytomcat -p 8080:8080 tomcat:7
[root@redhat ~]# docker exec -it tomcat /bin/bash
在这里你会发现,你打开浏览器输入ip和端口,撒都没有,这是因为tomcat的镜像把那些没用的都删了,更有效的利用资源,如果想测试这个服务有无问题,可以去webapps中创建/ROOT里写index,html。
root@4907d2518aa5:/usr/local/tomcat# cd webapps
root@4907d2518aa5:/usr/local/tomcat/webapps# mkdir ROOT
root@4907d2518aa5:/usr/local/tomcat/webapps# cd ROOT/
root@4907d2518aa5:/usr/local/tomcat/webapps/ROOT# echo xixi > index.html

下一篇请看【docker】之基础篇二。

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

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

相关文章

【C++】STL 算法 - 累加填充算法 ( 元素累加算法 - accumulate 函数 | 元素填充算法 - fill 函数 )

文章目录 一、元素累加算法 - accumulate 函数1、函数原型分析2、代码示例 二、元素填充算法 - fill 函数1、函数原型分析2、代码示例 一、元素累加算法 - accumulate 函数 1、函数原型分析 在 C 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 accu…

晶格动力学 GULP 软件的安装步骤

---------------------------------------------------------------------- GULP软件现已发展到5.2版本&#xff0c;其使用Fortran编译器&#xff0c;可运行在Linux/Unix系统下&#xff0c;但不提供任何Windows版本的技术支持。 下载网址&#xff1a; http://gulp.curtin.ed…

flink 最后一个窗口一直没有新数据,窗口不关闭问题

flink 最后一个窗口一直没有新数据&#xff0c;窗口不关闭问题 自定义实现 WatermarkStrategy接口 自定义实现 WatermarkStrategy接口 窗口类型&#xff1a;滚动窗口 代码&#xff1a; public static class WatermarkDemoFunction implements WatermarkStrategy<JSONObject…

C#设计模式教程(3):抽象工厂模式

抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建一系列相关或相互依赖对象的家族,而无需指定它们具体的类。这种模式是工厂方法模式的一种扩展,它用于创建的不是一个产品,而是多个产品的家族。 C# 代码实现 以下是C#中实现抽象工厂模式的一个简单示例: 首…

10种较流行的网络安全框架及特点分析

网络安全框架主要包括安全控制框架&#xff08;SCF&#xff09;、安全管理框架&#xff08;SMP&#xff09;和安全治理框架&#xff08;SGF&#xff09;等类型。对于那些希望按照行业最佳实践来开展网络安全能力建设的企业来说&#xff0c;理解并实施强大的网络安全框架至关重要…

Demystifying CXL Memory with Genuine CXL-Ready Systems and Devices——论文阅读

MICRO 2023 Paper CXL论文阅读汇总 问题 对更大容量和更高带宽的内存的不断增长的需求推动了基于Compute eXpress Link&#xff08;CXL&#xff09;的内存扩展和分离技术的创新。特别是&#xff0c;基于CXL的内存扩展技术不仅能够经济地扩展内存容量和带宽&#xff0c;还能够…

第3章 语句与函数

插入汇编语句 asm语句可在C或C程序中插入汇编代码。 VS2019编译器使用“_asm”插入汇编代码。 static_assert用于提供静态断言服务&#xff0c;即在编译时判定执行条件是否满足。 使用格式为 static_assert(条件表达式, ”输出信息“)。 不满足则编译报错。 C函数 函数说明不定…

【数据结构】二叉树(遍历,递归)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​ 目录 二叉树遍历规则 前序遍历 ​…

flutter 客户端日志上传定位错误信息

背景 flutter 开发的app 安装到真机上 无法定位报错信息&#xff0c;只能使用usb连接电脑 使用adb logcat来查看日志效率低下。 想法 如果将flutter 开发的app 运行的时候 将日志写进一个日志文件里面去&#xff0c;然后给flutter app搭建一个http服务器&#xff0c;后端知道对…

前端环境安装【mac/window,nvm,node,npm,yarn,react】

目录 nvm&#xff1a;node版本管理器 安装 window mac 常见命令 Node、npm yarn React a.全局方式 b.临时方式 运行 nvm&#xff1a;node版本管理器 nvm 主要是用来管理 nodejs 和 npm 版本的工具&#xff0c;可以用来切换不同版本的 nodejs。安装nvm之前先卸载nod…

如何使用VNC实现Win系统远程桌面Ubuntu图形化界面【内网穿透】

文章目录 推荐前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 …

vue:处理base64格式文件pdf、图片预览

一、需求&#xff1a;后端返回是base64数据&#xff0c;需要前端处理来展示文件。 二、实现方法&#xff1a; 解释一下这段代码的功能&#xff1a; &#xff09;preview(item) 是一个函数&#xff0c;接受一个参数 item&#xff0c;其中包含了文件的相关信息。 &#xff09;首…

HTML5+CSS3+JS小实例:实时给中文添加拼音

实例:实时给中文添加拼音 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"&…

使用freessl为网站获取https证书及配置详细步骤

文章目录 一、进入freessl网站二、修改域名解析记录三、创建证书四、配置证书五、服务启动 一、进入freessl网站 首先进入freessl网站&#xff0c;需要注册一个账号 freessl网站 进入网站后填写自己的域名 接下来要求进行DCV配置 二、修改域名解析记录 到域名管理处编辑域名…

项目开发中安全问题以及解决办法——客户传进来的数据不可信

用户传进来的数据是不可信的&#xff0c;比如下面这种情况下&#xff1a; PostMapping("/order") public void wrong(RequestBody Order order) { this.createOrder(order); } Data public class Order { private long itemId; //商品ID private BigDecimal ite…

智慧水务管理的发展历史有哪些阶段呢

随着科技的飞速发展&#xff0c;智慧水务管理已经成为了城市基础设施的重要组成部分。从传统的人工管理到现代的智能化管理&#xff0c;智慧水务经历了多个阶段的发展历程。本文将带您了解智慧水务管理的历史演变。 一、初级阶段&#xff1a;人工管理 在智慧水务管理发展的初期…

MS2358——96KHz、24bit 音频 ADC

产品简述 MS2358 是带有采样速率 8kHz-96kHz 的立体声音频模数 转换器&#xff0c;适合于面向消费者的专业音频系统。 MS2358 通过使用增强型双位 Δ - ∑ 技术来实现其高精度 的特点。 MS2358 支持单端的模拟输入&#xff0c;所以不需要外部器 件&#xff0c;非常适…

maven环境搭建(打包项目)

Maven:直观来讲就是打包写好的代码封装 Apahche 软件基金会&#xff08;非营业的组织&#xff0c;把一些开源软件维护管理起来&#xff09; maven apahce的一个开宇拿项目&#xff0c;是一个优秀的项目构建&#xff08;管理工具&#xff09; maven 管理项目的jar 以及jar与j…

[C++]:12:模拟实现list

[C]:12:模拟实现list 一.看一看SGI的stl_list的源码&#xff1a;1.基础结构构造函数1.节点结构&#xff1a;2.节点构造函数&#xff1a;3.链表结构&#xff1a;4.链表的构造函数&#xff1a; 2.析构1.节点析构&#xff1a;2.链表的析构&#xff1a; 3.迭代器 二.模拟实现list1.…

py的函数多返回值

前言:之前我们学过了py中函数&#xff0c;这一章我们来学习它的进阶版 目录 一.函数的多返回值 1.1关于函数的多返回值 1.2举例 二.函数多种传参方式 2.1关于多种传参方式 2.2关键字参数 2.2缺省参数 2.3不定长参数 2.4小结 三.匿名函数 3.1关于函数如何作为参数进行…