docker手册 2

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: docker手册

docker练习

安装nginx

1 docker pull nginx #拉取nginx镜像
2 docker run -it -d -p 主机端口:容器内部端口 --name=自定义容器名称 镜像id
3 运行后访问id:端口出现图二内容就是成功了

部署es+kibana

1 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single
node" elasticsearch:8.3.3
2 (正常启动低配置启动会非常卡,这个东西会非常消耗资源)
3

部署portainer(图形化docker管理工具)

1 docker run -d -p 8000:8000 -p 9443:9443 -p 9000:9000 --name portainer --restart=always
-v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data
portainer/portainer-ce:latest

启动完访问ip:9000

设置账号密码

docker镜像讲解

镜像是什么

镜像是一种轻量级,可执行的独立软件包,用来打包运行环境和基于运行环境开发的软件,它包

含运行某个软件所需的所有内容,包括代码,运行时,库,环境变量和配置文件

所有的应用,直接打包docker镜像,不需要运维再去部署环境,可以直接跑起来。

如何得到镜像

1.从远程仓库下载

2.拷贝

3.自己制作一个dockerfile

docker镜像加载原理

😀UnionFS(联合文件系统)😀UnionFS Union File System

2004年由纽约州立大学开发,它可以把多个目录内容联合挂载到同一个目录下,而

目录的物理位置是分开的。UnionFs可以把只读和可读写文件系统合并在一起,具

写时复制功能,允许只读文件系统的修改可以保存到可写文件系统当中。

😀特性: 一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会

把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。

docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。

bootfs(boot file system)主要包bootloader和kernel,bootloader主要是引导加

kkerneI,Linu×刚启动时会加载bootfs文件系统,在docker镜像的最底层是bootfso这一层

与我们典型的Linu×/unix系统是一样的,包含boot加载器和内核。当boot加载完成

之后整个内核就都在内存中了,此时内存的使用杈已由bootfs转交给内核,此时系统也会

卸载bootfs。

rootfs(root file system),在bootfs之上。包含的就是典型Linux系统中

的/dev,/proc,/bin,/etc等标准目录和文件。rootfs就是各种不同的操作系统发版,比如

Ubuntu,Centos等等。

平时我们安装进虚拟机的CentOS是好几个G,为什么docker这里才200M?

对于一个精简的OS,rootfs可以很小,只需要包含最基本的命令,工具和程序库就可以

了,因为底层直接用Host的kerne|,自己只

需要提供rootfs就可以了。由此可见对于不同的linu×发行版,bootfs基本是一致的,

rootfs会有差别,因此不同的发行版可以公用bootfso

docker commit

从容器中创建一个新镜像

1 docker commit -a='提交人' -m='提交说明' 容器id 定义镜像名称
2 -a 提交镜像的作者
3 -m 提交时的说明
4 -p 在commit时将容器暂停

创建完镜像下次启动容器就可以使用此镜像,这就相当于虚拟机的快照,保存当前状态

docker数据卷

什么是数据卷

容器数据卷是为了实现容器的持久化和同步操作!容器间也是可以实现数据共享的(多个容器可以共享

一个地方的数据)

docker启动的容器内置都会有一个文件系统,数据都会存在docker内置的文件系统

我们可以把容器产生的数据放在linux的文件系统里面

好处:容器的持久化和同步操作!容器间也是可以数据共享的

我们以后修改只需要在本地修改容器内会自动同步

即使把容器删除本地数据也不会删除

使用数据卷

1 docker run -v linux路径:容器内部路径 -itdP --name=容器名称 镜像id
2 -v 挂载
3 docker inspect 镜像id
4 可以查看挂载
5

😀匿名挂载和具名挂载

匿名挂载:

docker run -itd -P -v /etc/nginx --name=nginx nginx

-v的时候只写内部路径

DRIVER VOLUME NAMElocal 0f863c6cdab7cc475c5c46619b67c26478539d6691169628cc1b98b08f9f6e66

docker inspect

具名挂载:

docker run -itd -P -v jumingguazai:/etc/nginx --name=nginx nginx

通过-v 卷名:容器内部路径

docker volume inspect jumingguazai

通过卷名查询路径

所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xx

我们通过具名挂载可以方便的找到我们的卷,一般还是使用具名挂载

-v 容器内的路径 就是匿名挂载

-v 卷名:容器内的路径 具名挂载

-v /宿主机的路径:容器内路径 指定路径挂载一般都是以/开头

通过-v容器路径: ro rw 改变读写权限

ro 只读

rw 可读可写

一旦设置了容器的权限容器对我们挂载出来的内容就有限定了

ro只能从宿主机来改变了 容器内不能改变

默认都是rw

docker run -itd -P -v jumingguazai:/etc/nginx:rw --name=nginx nginx

安装MySQL

安装MySQL5.7并把数据持久化存储

1 docker pull mysql:5.7
2 docker run -itd -p 13306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v
/home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name=mysql5.7
3147495b3a5c
3 -e 环境配置
4 -v 卷挂载
5 MYSQL_ROOT_PASSWORD 设置MySQL root的密码

把容器删除了数据也不会丢失

多个MySQL数据同步

dockerfile

Dockerfile 介绍

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令

和说明。

dockerfile命令

FROM

基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必

须是from

MAINTAINER

镜像维护者的姓名和邮箱地址

RUN

容器构建时需要运行的命令

RUN有两种格式

shell格式:

exec格式:EXPOSE

当前容器对外暴露出的端口

WORKDIR

指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点

如果我们没有指定当前关键字,那么就下启动的目录下运行

如果指定了,那么就会在指定的目录下运行容器实例

USER

指定该镜像以什么样的用户去执行,如果都不指定,默认是root

ENV

相当于定义变量: 用来在构建镜像过程中设置环境变量

1 # 定义
2 ENV 变量名 值
3 # 使用
4 $变量名

🤪关键字之后可以直接跟变量名

ADD

将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包

COPY

拷贝文件和目录到镜像中,容器内的指定路径,该路径不用事先建好,路径不存在的话,

会自动创建

1 # 语法一
2 COPY src dest
3 # 语法二
4 COPY ["src", "dest"]

VOLUME

容器数据卷,用于数据保存和持久化工作

CMD

指定容器启动后的要干的事情,类似于RUN

cmd有两种方式

方式1:

shell格式

1 CMD <命令>

😀推荐使用第二种方式,执行过程比较明确。第一种格式实际上在运行的过程中也会

自动转换成第二种格式运行,并且默认可执行文件是 sh

方式2:

exec格式

1 CMD ["<可执行文件或命令>","<param1>","<param2>",...] 
2 CMD ["<param1>","<param2>",...] # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数

注意

😀Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker

run 之后的参数替换

和RUN命令的区别

CMD是在docker run 时运行

RUN是在 docker build时运行


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
机器学习/深度学习 安全 网络协议
达梦 DM8 数据库安装详细手册(Windows+Linux+Docker)(一)
达梦 DM8 数据库安装详细手册(Windows+Linux+Docker)(一)
达梦 DM8 数据库安装详细手册(Windows+Linux+Docker)(一)
|
安全 测试技术 数据库
达梦 DM8 数据库安装详细手册(Windows+Linux+Docker)(二)
达梦 DM8 数据库安装详细手册(Windows+Linux+Docker)(二)
达梦 DM8 数据库安装详细手册(Windows+Linux+Docker)(二)
|
6月前
|
Linux 开发工具 Docker
【Docker】快速入门手册
【Docker】快速入门手册
132 1
|
Linux 网络虚拟化 网络架构
docker手册 3
docker手册
|
Ubuntu Linux 虚拟化
docker手册 1
docker手册
|
安全 Linux 应用服务中间件
史上最详细的docker学习手册,请收藏!(一)
史上最详细的docker学习手册,请收藏!(一)
303 0
史上最详细的docker学习手册,请收藏!(一)
|
存储 Java 关系型数据库
史上最详细的docker学习手册,请收藏!(三)
史上最详细的docker学习手册,请收藏!(三)
91 0
|
关系型数据库 MySQL 数据管理
史上最详细的docker学习手册,请收藏!(二)
史上最详细的docker学习手册,请收藏!(二)
148 0
|
存储 Java 关系型数据库
史上最详细的docker学习手册,请查收!(三)
史上最详细的docker学习手册,请查收!(三)
76 0
|
关系型数据库 MySQL 数据管理
史上最详细的docker学习手册,请查收!(二)
史上最详细的docker学习手册,请查收!(二)
67 0