docekr环境搭建配置!!!

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 本文介绍了Docker的安装部署及基本操作,包括使用国内源安装Docker CE、配置Linux内核流量转发、启动第一个容器、初体验Docker玩法、镜像命令、镜像详解、镜像分层结构、镜像实践操作、容器管理实践等内容。通过具体示例,如下载并运行MySQL、Redis、Nginx和WordPress镜像,帮助读者快速掌握Docker的基本使用方法。

[TOC]

02_docker安装部署

1.国内源安装docker-ce

配置linux内核流量转发功能

配置清华、阿里源皆可

清华的

阿里的

Docker 服务端版本

启动第一个容器

2.初体验docker玩法

镜像命令

搜索镜像

下载镜像

查看镜像列表

获取docker hub 可用镜像版本

运行镜像,生成容器(nginx容器)

1. 本地运行模式


2. 对外运行模式

3.一张图玩懂docker操作

4.docker镜像详解

一个完成的Docker镜像可以支撑容器的运行,镜像提供文件系统


内核与发行版

传统的虚拟机安装操作系统所提供的系统镜像,包含两部分:

Linux内核部分


而docker镜像是不包含内核的,只是下载了某个发行版部分。


docker镜像定义(如何生成的镜像)

我们如果自定义镜像,刚才超哥已经和大家说了,docker镜像不包含linux内核,和宿主机共用。

我们如果想要定义一个mysql5.6镜像,我们会这么做

  • 获取基础镜像,选择一个发行版平台(ubutu,centos)
  • 在centos镜像中安装mysql5.6软件

导出镜像,可以命名为mysql:5.6镜像文件。

从这个过程,我们可以感觉出这是一层一层的添加的,docker镜像的层级概念就出来了,底层是centos镜像,上层是mysql镜像,centos镜像层属于父镜像。

为什么要有docker镜像

其实就是将业务代码运行的环境,整体打包为单个的文件,就是docker镜像。

如何创建docker镜像

现在docker官方共有仓库里面有大量的镜像,所以最基础的镜像,我们可以在公有仓库直接拉取,因为这些镜像都是原厂维护,可以得到即使的更新和修护。

dockerfile

我们如果想去定制这些镜像,我们可以去编写Dockerfile,然后重新bulid,最后把它打包成一个镜像

这种方式是最为推荐的方式包括我们以后去企业当中去实践应用的时候也是推荐这种方式。

docker commit

当然还有另外一种方式,就是通过镜像启动一个容器,然后进行操作,最终通过commit这个命令commit一个镜像。

docker镜像分层结构

可以基于 docker history 查看镜像每一层信息
[root@docker-01 ~]#docker history nginx:1.17.9

base镜像

base镜像是指如各种Linux发行版,如centos,ubuntu,Debian,alpine等。

docker为什么分层镜像

例如在后面的docker优化篇有一个多阶段构建镜像

镜像1 ,centos7.9 基础镜像,我们可以在这里做环境基础配置,如yum源,防火墙,主机名,dns设置等

镜像2,以这个为基础,再构建如nginx环境,然后提交,这就是一个独立的nginx+centos的镜像。


镜像3,例如再多阶段,构建一个php-fpm镜像,以镜像2为base image,这样我们就构建了一个centos+nginx+php的镜像,并且这仨,只用同一份基础镜像,每个阶段只是额外加了一层而已。

镜像4 ,该优化手段,可以实现,任意的组合,每个阶段的镜像,都可以搭配其他环境使用,作为base image,或者叫父镜像。


因此docker镜像这种镜像分为一层一层的概念,实现的技术名字叫做 联合文件系统UnionFS。

镜像分享一大好处就是共享资源,例如有多个镜像都来自于同一个base镜像,那么在docker 主机只需要存储一份base镜像。

内存里也只需要加载一份base镜像,即可为多个容器服务。

即使多个容器共享一个base镜像,某个容器修改了base镜像的内容,例如修改/etc/下配置文件,其他容器的/etc/下内容是不会被修改的,修改动作只限制在单个容器内,这就是容器的写入时复制特性(Copy-on-write)。

5.docker镜像实践操作

镜像详细命令

1.获取镜像,docker hub里有大量高质量的镜像

2.查看所有镜像

3.docker本地镜像存储在宿主机的目录查看

# 基于docker info 查看 docker数据目录
docker info 


4.# 以基础镜像运行一个容器,添加参数
-i  Keep STDIN open even if not attached
-t  Allocate a pseudo-TTY 
--rm  Automatically remove the container when it exits
--name   Assign a name to the container
bash 指定容器运行什么

镜像增删改查管理

none镜像

none镜像(dangline image 虚悬镜像)

出现none镜像的原因:

  • 在docker hub上镜像如果更新后,名称变化,用户再docker pull就会出现该情况
  • docker build时候,镜像名重复,也会导致新旧镜像同名,旧镜像名称被取消,出现none
1. 一般用docker tag解决即可
2. 或者提取docker id 删除none镜像

列出镜像

1.根据名字列出镜像

2.查看指定镜像

3.只查看镜像id,id就代表该镜像了

4.格式化输出docker信息

5.更丰富的格式化
[root@docker-01 ~]#docker images --format "table {
  {.ID}} {
  {.Repository}} {
  {.Tag}}"

6.格式化是docker信息提取的高级语法,需要学习下go的template语法
# 基于--format="{
  {json .}}" 拿到详细字段,即可格式化

[root@docker-01 ~]#docker images --format="{
  {json .}}"

[root@docker-01 ~]#docker images --format="{
  {.CreatedAt}} {
  {.ID}}  {
  {.Repository}} {
  {.Size}} {
  {.Tag}}" |column -t

删除本地镜像

# 删除镜像,可以用 ID,名字

# 删除镜像,要先干掉使用该镜像的容器(无论是否存活)


# 不加tag版本的话,默认latest


# 清理挂掉的容器实例记录


# 根据id删除(最短3位)


# 清理所有镜像(危险命令)
# 删除命令,包括了删除,以及取消tag两个步骤



# 提示,不要随便用 docker rmi -f 强制参数

导出、导入镜像

常用于公司的离线环境使用镜像

默认导出的是tar归档文件

导出镜像

导入镜像
# 环境清理

# 导入本地镜像

查看镜像详细信息

[root@docker-01 /images_save_all]#docker inspect nginx:1.17.9  | jq 

# 查看无论是镜像,还是容器的详细信息,都是维护容器的重要手段

6.docker容器管理实践

启动容器

docker run等于创建+启动

注意:容器内的进程必须处于前台运行状态,否则容器就会直接退出

我们运行如centos基础镜像,没有运行任何程序,因此容器直接挂掉

# 交互式的运行,可以进入容器空间


# 非交互式运行,容器会直接挂掉(一般用于测试让容器执行某个命令,或者将某个镜像当做一个调试环境,执行xxx命令)

# 查看容器历史记录

运行可以活着的容器

-d 对于宿主机,后台运行容器
-p 端口映射

# 直接访问宿主机即可

# 宿主机上访问容器ip也可以

# 提取容器ip

# 访问容器


# 运行容器且指定名字

停止容器(并非删除)


监控容器资源状态


进入容器空间


访问容器应用(redis)

由于我们做了端口映射,可以基于宿主机的端口访问


查看容器内日志


删除容器


查看容器记录(挂掉,运行中)


批量干掉容器进程

-q 只显示id

-a 显示所有记录

1. 下载mysql5.7.38镜像,确保可以远程访问,创建库表
2. 下载redis最新镜像,确保可以远程访问,读写key
3. 下载nginx 1.21.5 ,确保可以远程访问,修改首页内容为,"云原生!我来了!"
4. 下载wordpress最新镜像,运行,确保可以访问,发表文章。
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
NoSQL Dubbo Java
day01—项目介绍与环境搭建
day01—项目介绍与环境搭建
208 0
安装WinGW教程(环境配置)
安装WinGW教程(环境配置)
734 0
|
运维 Kubernetes 应用服务中间件
k8s 基础&环境搭建
k8s 基础&环境搭建
219 0
k8s 基础&环境搭建
|
Java
[BlocklyNukkit入门]#1配置开发环境
这里用PowerNukkit举例
102 0
|
NoSQL Java 关系型数据库
jpsite-v1环境搭建
jpsite-v1环境搭建
jpsite-v1环境搭建
|
安全 Java 测试技术
测试环境搭建|学习笔记
快速学习测试环境搭建
111 0
测试环境搭建|学习笔记
|
监控 Java 开发工具
android系统开发环境搭建
Android Studio开发工具介绍、Android SDK和Android开发环境的安装
281 0
android系统开发环境搭建
|
Web App开发
ReSIProcate环境搭建
1首先下载resiprocate-1.6 2取消resiprocate-1.6目录的只读属性 3然后使用Visual Studio 2008打开resiprocate-1.6下的reSIProcate_9_0.sln解决方案 4 右击reSIProcate_9_0解决方案下的resiprocate,reprosetup,(最好把re开头项目都生成下)项目,选择重新生成,等编译完成后,会在resiprocate-1.6\repro\WinSetup\Debug下生成可执行文件。
1770 0
|
SQL Java 关系型数据库
基本环境搭建
基本环境搭建
|
Kubernetes 网络安全 Docker