栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

01-Docker

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

01-Docker

1、Docker简介

Docker是一个虚拟化的平台,虚拟引擎。
最本质上解决的问题:服务需要的资源打包在一起,把每个服务都放在独立的容器中运行,相互不影响。
每一个容器启动的时候都分配新的命名空间,通过命名空间来实现服务于服务之间的隔离。

1.1 核心对象

镜像(Image)
Docker 镜像是一个特殊的文件系统(https://hub.docker.com/),除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。例如JDK镜像、Centos镜像、MySQL镜像等,可以暂时先将其理解为一个安装程序。

容器(Container)
Docker容器可以将其理解为一个运行镜像的载体,镜像(Image)和容器(Container)的关系,就像是光盘和光驱。容器基于镜像创建、启动,然后运行镜像的中的文件。

1.2 架构分析

Docker 是一种Client/Server架构的应用程序

Docker Host是我们的docker宿主机(就是安装了docker的操作系统)
Registry是docker拉取镜像的远程仓库,提供大量的镜像供下载,下载完成之后保存在Images中
Docker Daemon是docker的服务线程,处理Docker客户端命令。
Images 是Docker本地的镜像仓库,可以通过docker images查看镜像文件。

1.3 Docker运行机制

docker pull执行过程
1)客户端将指令发送给docker daemon
2)docker daemon 先检查本地images中有没有相关的镜像
3)如果本地没有相关的镜像,则向镜像服务器请求,将远程镜像下载到本地
docker run 执行过程
1)检查本地是否存在指定的镜像,不存在就从公有仓库下载
2)利用镜像创建并启动一个容器
3)分配一个文件系(简版linux系统),并在只读的镜像层外面挂载一层可读写层
4)从宿主机配置的网桥接口中桥接一个虚拟接口到容器中去
5)从地址池配置一个 ip 地址给容器
6)执行用户指定的应用程序

2、Docker安装 2.1 卸载Docker

假如已经有docker,可通过执行如下指令卸载Docker
sudo yum remove docker-ce
docker-ce-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine

2.2 在线安装
  1. 第一步:安装yum工具
    sudo yum install -y yum-utils
  2. 第二步:设置 yum 仓库地址
    sudo yum-config-manager
    –add-repo
    https://download.docker.com/linux/centos/docker-ce.repo
  3. 第三步:更新 yum 缓存
    sudo yum makecache fast #yum 是包管理器
  4. 第四步:安装新版 docker
    sudo yum install -y docker-ce docker-ce-cli containerd.io
2.3 离线安装

第一步:下载docker离线包
https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz
第二步:下载离线安装工具
https://github.com/Jrohy/docker-install/
第三步:将下载好的资源放在一个目录,例如:
在linux环境下,创建/root/setup/docker目录,然后拷贝下载好的资源到此目录(可通过MobaXterm工具直接上传到linux目录
第四步:执行安装操作
chmod +x install.sh 修改权限
./install.sh -f docker-20.10.6.tgz 执行安装

3 Docker服务基本操作 3.1 启动查看服务

systemctl 是linux的指令s
systemctl start docker–启动docker
systemctl status docker–查看docker状态

systemctl enable docker–开机自启
systemctl disable docker–禁用开机自启
systemctl restart docker–重启服务
docker info --查看信息
ps -ef | grep docker --查看docker进程

3.2 Docker镜像加速

由于国内网络问题,需要配置加速器来加速。修改配置文件 /etc/docker/daemon.json
解释:
cat 查看 <重定向输出 如果文件不存在就将这些内容输出这个文件 /etc/docker/daemon.json
{
“registry-mirrors”: [
“https://docker.mirrors.ustc.edu.cn”,
“http://hub-mirror.c.163.com”
],
“max-concurrent-downloads”: 10,
“log-driver”: “json-file”,
“log-level”: “warn”,
“log-opts”: {
“max-size”: “10m”,
“max-file”: “3”
},
“data-root”: “/var/lib/docker”
}
EOF

4 Docker镜像操作实践 4.1下载镜像

1、下载镜像–从远端下载镜像
docker pull 镜像名
2、浏览镜像文件–查看本地镜像
docker images
3、查看进行详细信息
docker inspect 镜像名/镜像id
3、运行镜像文件
docker run 镜像

4.2 删除镜像

1、docker ps -a 查看所有的容器信息
2、docker rm 容器id --需要删除容器
3、docker image rm 镜像名–再删除镜像

4.3 运行镜像

docker run 镜像名
如果本地没有该镜像,就会从远端服务器下载

1、docker inspect 镜像名
2、docker history 镜像名

3.5 镜像导入导出

1、docker导出
docker 的环境变量默认配置好
docker 镜像导出位置目录下执行就生成在哪个目录
docker save hello-world | gzip > helloworld.tar.gz

2、docker导入
docker load < 镜像名

4 Docker容器操作 4.1 下载Centos镜像

docker pull centos:7

4.2 创建容器

docker run -it xxxx bash
其中:
1)xxxx - 镜像名, 或 image id 的前几位,
2)-it 这是两个参数(-i表示交互式操作, -t 表示终端)
3) bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)。
案例:通过docker启动运行 centos7镜像
docker run -it centos:7 bash

4.3 容器启动

docker ps 查看启动的容器
docker ps -a 查看所有的容器

4.4 查看容器日志(logs)信息

docker container logs 容器名

4.5 docker容器停止(stop)或重启(restart)

1、容器启动
docker container start 容器名

2、容器重启
docker container restart 容器名
3、关闭容器
docker container stop 容器名
4、容器在运行过程不能删除,如果想要删除加
docker contianer rm -f 容器id

5、清除所有处于终止状态的容器
docker container prune
说明,执行完这个指令以后,可以通过docker ps -a 再查看容器,看看是否有删除.
把容器删除完了

5 数据管理 5.1 挂载数据卷

数据卷和目录挂载的区别,两者最大的区别是是否有docker去管理。
数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用,默认会一直存在,即使容
docker volume create container-vol --在宿主机创建数据卷
docker volume inspect container-val --查看数据卷的目录结构

docker run -it -v container-val:/cgb2017 centos:7 bash–挂载数据卷容器

将文件挂在到容器后,宿主机与容器共享
创建了数据卷之后,可以通过docker volume inspect 数据卷名查看路径,挂在的容器上的文件与宿主机共享

5.2 挂在目录


docker run -it -v /usr/app/:/opt/app centos:7 bash --挂在目录

6 JDK镜像制作

打包应用有依赖层次关系。

第一步:在jdk目录里面创建一个Dockerfile文件,编辑如下内容
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
添加jdk到/usr/local/docker这个目录
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51
设置环境变量
PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD [‘bash’]
将环境加载到容器中
第二步:创建JDK镜像
在Dockerfile所在目录执行docker build指令.例如:
docker build -t jdk:8 . #不要丢掉这里的点,-t表示镜像标识(镜像名),是tag单词的缩写.

6.1 基于jdk镜像运行sentinel服务

1、将sentinel放在宿主机的文件路径中(指定挂载点的路径)
docker run -d -p 8180:8080端口映射 –name sentinel服务名 -v /home/lianglin/pub-vol:/user/sentenal挂载点文件夹 jdk:8容器名 java -jar /user/sentenal/sentinel-dashboard-1.8.1.jar执行sentinel服务的命令

7基于JDK镜像启动sentinel

centos:7镜像
放在相同目录中
jdk-8u51-linux-x64.tar.gz
sentinel-dashboard-1.8.0.jar
1、讲sentinel的jar文件复制在宿主机的目录

2、docker build -t sentine:8 .
3、docker run -d --name sentinel8181 -p 8181:8080 sentinel:8 #-d 表示后台运行,-p用于指定端口映射,sentinel:8为镜像文件名

8 mysql安装 8.1导入镜像

docker load < 镜像包

8.2 启动容器


sudo docker run -p 3306:3306 --name mysql
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files
-v /usr/local/docker/mysql/conf:/etc/mysql
-v /usr/local/docker/mysql/logs:/var/log/mysql
-v /usr/local/docker/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:8.0.23

8.3进入容器登录mysql服务

sudo docker exec -it mysql bash
设置mysql开机自启动(可选)
docker update mysql --restart=always --开机自启

在容器中导入sql,需要挂在文件夹,在挂在的文件夹执行sql
mysql> source /var/lib/mysql-file/jt-sso.sql;

9 安装redis

安装步骤
第一步:下载镜像文件
docker pull redis
第二步:准备配置文件
创建redis配置文件目录
mkdir -p /usr/local/docker/redis01/conf
在配置文件录下创建redis.conf配置文件(这个文件一定要创建,否在我们进行目录挂载时默认生成的是一个目录)
touch /usr/local/docker/redis01/conf/redis.conf
第三步:创建redis实例并启动
sudo docker run -p 6379:6379 --name redis01
-v /usr/local/docker/redis01/data:/data
-v /usr/local/docker/redis01/conf/redis.conf:/etc/redis/redis.conf
-d redis redis-server /etc/redis/redis.conf
第四步:查看正在运行的进程
docker ps

访问redis服务器
第一步:控制台直接连接redis测试

docker exec -it redis01 bash
第二步:检测redis 版本
redis-server -v
或者
redis-cli -v
第三步:登录redis(默认不需要密码)
redis-cli
或者直接将上面的两个步骤合为一个步骤执行也可以,指令如下:
docker exec -it redis01 redis-cli
停止和启动redis服务
停止redis服务?
docker stop redis01
启动redis服务?
docker start redis01
重启 redis 服务?
docker restart redis01

9 容器互联

以宿主机作为网关

docker network create t-net 创建网络

查看网络的信息

基于创建的网络启动容器
docker run -it --name app1 --network t-net centos:7
docker run -it --name app2 --network t-net centos:7

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/450225.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号