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

docker2021.12.22

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

docker2021.12.22

docker解决依赖兼容问题 docker为了解决依赖的兼容问题,采用了两个手段
  1. 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包。
  2. 将应用放到一个隔离容器去运行,避免互相干扰。
docker和vm
  1. VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层,虚拟化的操作系统,虚拟化的仓库,然后在安装应用
  2. Docker在宿主机器的操作系统上创建Docker引擎,直接在宿主主机的操作系统上调用硬件资源,而不是虚拟化操作系统和硬件资源,所以操作速度更快
docker和虚拟机的区别
  1. docker是一个系统进程,虚拟机是在操作系统中的操作系统
  2. docker体积小,启动速度快,性能好,虚拟机体积大,启动速度慢,性能一般
docker架构 镜像和容器
  1. 镜像 :docker将应用程序 及其所需要的依赖,函数库,环境,配置等文件打包在一起,称为镜像
  2. 容器: 镜像中的应用程序运行后形成的进程就是容器,docker会将这些应用程序进行隔离 ,将每一个应用程序打包,然后用于运行。
    docker是一个CS架构的程序,由两部分组成
  3. 服务端(server):docker守护进程,负责处理docker指令
  4. 客户端(client):通过命令或者restAPI向docker服务端发送制定,可以在本地或者远程向服务端发送指令
docker安装 卸载旧版本

较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
$ sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
docker-ce

安装 Docker Engine-Community

使用 Docker 仓库进行安装

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
$ sudo yum install -y yum-utils
device-mapper-persistent-data
lvm2 --skip-broken

使用以下命令来设置稳定的仓库。

使用官方源地址(比较慢)
$ sudo yum-config-manager
–add-repo
https://download.docker.com/linux/centos/docker-ce.repo

可以选择国内的一些源地址:
阿里云
$ sudo yum-config-manager
–add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i ‘s/download.docker.com/mirrors.aliyun.com/docker-ce/g’ /etc/yum.repos.d/docker-ce.repo
yum makecache fast #提高速度
清华大学源
$ sudo yum-config-manager
–add-repo
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

启动docker
  1. 启动docker前一定关闭防火墙
    systemctl stop firewalld #关闭
    systemctl disable firewalld 禁止开机启动防火墙

  2. 启动docker
    systemctl start docker

  3. 停止docker服务
    systemctl stop docker

  4. 重启docker服务
    systemctl restart docker或者
    systemctl restart docker.service

镜像命令

拉取镜像 docker pull
docker pull nginx

推送镜像 docker push

查看镜像 docker images
docker images nginx

删除镜像 docker rmi
docker rmi nginx:latest

保存镜像为一个压缩包docker save
docker save -o [保存的目标文件名称] 镜像名称+版本
docker save -o nginx.tar nginx:latest

加载压缩包为镜像 docker load
docker load -i nginx.tar
-i:–input string :读取一个tar文件,取代标准输入
-q: --quiet:简化输出信息

容器运行

docker run --name ng -p 80:80 -d nginx
docker run :创建并运行一个容器
–name:给容器起一个名字;比如叫ng
-p将宿主机端口与容器端口映射;冒号左边的为宿主机端口,右侧为容器端口
-d :后台运行容器
nginx:镜像名称。例如nginx

容器操作命令

docker run:创建并运行
docker pause 让运行的容器暂停
docker unpause 恢复运行
docker stop停止一个运行的容器
docker start让停止的容器再次运行
docker rm 删除一个容器
docker system prune 命令会删除所有停止的容器
需要加上容器名称

docker ps 查看运行的容器
docker ps -a查看所有的容器

查看容器log日志
docker logs [容器名称] 查看容器log日志,注不是实时
docker logs -f [容器名称] 查看容器log日志,注,实时

修改容器内容,首先先进入容器

docker exec -it ngi bash
docker exec 进入容器内部
-it,给当前进入的容器创建一个标准的输入输出终端,允许我们与容器交互
ngi 要进入的容器的名称
bash 进入容器后执行的命令,bash是一个linux终端交互命令

容器内容修改,修改Welcome to Nginx!修改为你好!

cd usr/share/nginx//index下的nginx.html
如果没有vi命令使用

什么是数据卷

在之前的nginx案例中,修改nginx的html页面时,需要进入nginx内部 没有编辑器,修改文件比较麻烦
这就是容器与数据耦合带来的后果

  1. 不利于修改,修改需要进入nginx的html内容时,需要进入容器 内部修改 ,很不方面
  2. 数据不可复用,容器内的修改对外是不可见的,所有修改的容器对新创建的容器是不可复用的
  3. 升级维护困难,如果要升级容器就要删除旧容器所有的数据就跟着删除了。

    如果要修改一个容器里面的html下面的内容
    可以生成一个数据卷
    数据卷关联容器
    一个数据卷可以关联多个容器
    我们可以通过修改数据卷里面的html下的文件从而使得与这个数据卷关联的容器html下的文件发生改变。
    查看数据卷
    docker volumn ls

创建数据卷
volume create nhtml

查看数据卷的基本信息,宿主机
docker volumn inspect nhtml

挂载数据卷
创建容器的时候挂载一个数据卷到某个容器内目录
比如创建并运行一个容器
docker run --name ng -p 80:80 -d nginx
创建运行并挂载数据卷
docker run --name ng -v nhtmlz:/usr/share/nginx/html -p 80:80 -d nginx
数据卷本地就会有与容器一样/usr/share/nginx/html下的相同文件
只需要修改数据卷的本地文件,与之数据卷关联的容器的相应的内容也会修改

docker使用 dockerfile自定义镜像

常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像。
镜像结构
镜像就是在系统函数库、运行环境基础上,
添加应用程序文件、配置文件、依赖文件等组合
然后编写好启动脚本打包在一起形成的文件

Dockerfile语法
我们只需要告诉Docker,我们的镜像的组成,需要哪些baseImage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么,将来Docker会帮助我们构建镜像,

dockerfile

通过docker把jar包部署
就是一个文本文件,其中包含一个个的指令,用指令来说明要执行什么操作来构建镜像,每一个指令都会形成一层Layer

运行命令产生镜像 docker build -t javaweb:1.0 .
后面是名称加版本
将镜像封装为容器
docker run --name javaw -p 8090:8090 -d javaweb:1.0

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

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

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