欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker——简单部署及基础操作

程序员文章站 2022-04-19 10:29:14
...


Docker——简单部署及基础操作

什么是Docker?

  • 是一种轻量级的“虚拟机”
  • 在linux容器里运行应用的开源工具

官网:www.docker.com

官方文档网站:www.docs.docker.com

一、docker概述

1、Docker概念

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

  • 镜像
  • 容器
  • 仓库

2、Docker设计的目标

  • 提供简单的应用程序打包工具
  • 开发人员和运维人员逻辑分离
  • 多环境保持一致性

3、docker的应用场景

  • 打包应用程序简化部署

  • 可脱离底层硬件任意迁移

  • 应用程序打包和发布

  • 应用程序隔离

  • 持续集成

  • 部署微服务

  • 快速搭建测试环境

  • 提供PaaS产品(平台即服务)

4、Docker的组成

Docker——简单部署及基础操作

  • Docker Client:客户端
  • Docker Daemon:守护进程
  • Docker Images:镜像
  • Docker Container:容器
  • Docker Registry:镜像仓库

客户端,客户操作的界面环境——会与守护进程daemon对接——下达指令创建镜像,可以直接执行,也可以从仓库中直接拉取到本地然后下载(防火墙原因,所以下载需要用第三方加速器,如阿里云加速器)

不同的镜像制作不同的容器,会提供一个端口,通过端口可以访问应用容器

彼此应用间是隔离的,也就是解耦

具备弹性伸缩

5、docker与虚拟机的区别

Docker——简单部署及基础操作

vm→物理环境→宿主系统(linux)→虚拟化监控平台(加载虚拟化资源:硬盘 网卡 内存)→安装系统(完整的主机)

容器→物理环境→宿主系统(linux)→docker引擎(进程的管理机制)

docker 与宿主系统共享内核资源,如果某个容器资源悲情如,很容易影响到宿主系统,则会影响到其他的应用

面试中的注意点:

VM Container容器
启动速度 分钟级 秒级
运行性能 5%左右损失 接近原生
磁盘占用 GB MB
数量 一般几十台 成百上千
隔离性 系统级(更彻底) 进程级别
操作系统 几乎所有 主要支持linux
封装程度 完整的操作系统 只打包项目代码和依赖关系,共享宿主机内核

6、支持平台

  • Linux(CentOS,Debian,Fedora,Oracle Linux,RHEL,SUSE和Ubuntu)
  • Mac
  • Windows
    Docker——简单部署及基础操作

CentOS安装Docker的两种方式

  • 使用curl 获得Docker的安装脚本进行安装
  • 使用yum仓库来安装Docker

二、部署19版Docker

1、环境部署

#关闭防火墙及核心防护

[aaa@qq.com ~]# systemctl stop firewalld.service 
[aaa@qq.com ~]# systemctl disable firewalld.service 

[aaa@qq.com ~]# setenforce 0
[aaa@qq.com ~]# sed -i '7s/enforcing/disabled/' /etc/selinux/config

#安装依赖包

[aaa@qq.com ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

2、设置阿里云镜像源

Docker——简单部署及基础操作

[aaa@qq.com yum.repos.d]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Docker——简单部署及基础操作

3、安装Docker-CE

[aaa@qq.com ~]# yum install -y docker-ce
[aaa@qq.com ~]# systemctl starat docker.service
[aaa@qq.com ~]# systemctl enable docker.service

这时docker就已经启动了,但是里面是全空的。可以查到docker命令的位置,在/usr/bin中可以被系统所识别
Docker——简单部署及基础操作

4、镜像加速

到目前为止,只是将docker引擎开起来了

下载镜像资源是从官方公有的仓库,下载会很慢,会卡死,所以需要使用镜像加速

[aaa@qq.com docker]# tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://7rp8a2t8.mirror.aliyuncs.com"]
}
EOF
[aaa@qq.com docker]# systemctl daemon-reload 
[aaa@qq.com docker]# systemctl restart docker.service 

Docker——简单部署及基础操作

这时下载镜像就会很快,不会卡死

5、网络优化

在下载镜像资源时会出现克重报错,很大可能就是没开启数据包转发功能

[aaa@qq.com ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[aaa@qq.com ~]# sysctl -p		//生效

#重启网卡及docker

[aaa@qq.com ~]# service network restart
[aaa@qq.com ~]# systemctl restart docker.service

目前为止docker引擎及环境全部部署好了

三、镜像的操作管理

docker version //查看版本
docker search //搜索镜像
docker pull //下载镜像
docker images //查看已有镜像***
docker inspect 231d //获取镜像信息

docker tag //添加新标签,相当于定义了一个别名

docker rmi //删除镜像:rmi i相当于image

docker save -o 文件名 镜像
docker save -o nginx nginx:latest //存出镜像命名为nginx存在当前目录下

docker load < nginx //镜像导入,建议使用load(docker --input nginx)

#查看版本信息:docker version
Docker——简单部署及基础操作

#需要安装nginx应用,首先要搜索并下载nginx镜像

语法:docker search 名称 //搜索镜像

[aaa@qq.com ~]# docker search nginx			//搜索关于nginx的所有镜像,遍历公有仓库中所有nginx镜像

Docker——简单部署及基础操作

#语法:docker pull 名称 //下载镜像

[aaa@qq.com ~]# docker pull nginx			//下载nginx镜像

Docker——简单部署及基础操作

#语法:docker images //查看已有镜像

Docker——简单部署及基础操作
Docker——简单部署及基础操作
#语法:docker inspect 镜像ID //获取镜像信息

[aaa@qq.com ~]# docker inspect ed21b7a8aee9

Docker——简单部署及基础操作

#语法:docker tag 原本标签 更改后标签 //添加新标签,相当于定义了一个别名

[aaa@qq.com ~]# docker tag nginx:latest nginx:web	//新定义了一个web标签

Docker——简单部署及基础操作

#语法:docker rmi 镜像名 //删除镜像:rmi i相当于image

也可使用:docker rmi 镜像ID

当前镜像如果有多条标签别名,按名称标签删除只是删除该条标签的镜像

如果只有最后一条镜像,按名称删除后则彻底删除了

[aaa@qq.com ~]# docker rmi nginx:latest 

Docker——简单部署及基础操作

#语法:docker save -o 定义文件名 镜像 //导出镜像并保存
[aaa@qq.com abc]# docker save -o nginx nginx:latest //导出镜像命名为nginx保存在当前目录下
Docker——简单部署及基础操作
#镜像导入(不需要使用仓库,之前已经保存在/abc中,现在可以直接执行导入),建议使用方法一

方法一:语法:docker load < 镜像名

方法二:语法:docker --input 镜像名

[aaa@qq.com abc]# docker load < nginx

Docker——简单部署及基础操作

四、容器的操作管理

1、查看容器运行状态

语法: docker ps [选项]

-a 列出最近一次启动的容器

[aaa@qq.com ~]# docker ps -a 		//查看容器状态

Docker——简单部署及基础操作

此时并没有容器

2、创建容器

语法:docker create [选项] 镜像运行的程序

  • -i 让容器的标准输入保持打开
  • -t 让docker分配一个伪终端
[aaa@qq.com ~]# docker create -it nginx:latest /bin/bash

Docker——简单部署及基础操作

#现在在看一下,已经有容器了
Docker——简单部署及基础操作

3、启动容器

语法:docker start 容器ID

Docker——简单部署及基础操作
Docker——简单部署及基础操作

4、run一次性执行

容器运行三部曲:下载镜像——创建容器——启动容器

比如下载一个centos7的容器

原本步骤应该是:

docker pull centos:7

docker create -it centos:7 /bin/bash

docker start 容器id

现在使用docker run 命令,一次性执行,执行完成直接关闭,状态是exited,不会持续占用系统资源

[aaa@qq.com ~]# docker run centos:7 /usr/bin/bash -c ls

-c 启动完成后会去执行ls

Docker——简单部署及基础操作

使用run命令:run会自动去找本地中有没有需要的镜像,如果有,则不会再去下载,会直接执行下面的创建启动等操作,如果没有,则会去仓库中下载镜像,然后继续执行后面的操作

Docker——简单部署及基础操作

5、run持续后台执行

使用dockrt run执行完成后是直接退出的,如果加上一个while死循环,则可以保持执行完成后不退出,继续保持进程

[aaa@qq.com ~]# docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"

Docker——简单部署及基础操作

6、终止运行

语法:docker stop 容器ID

[aaa@qq.com ~]# docker stop dd034572ae67

Docker——简单部署及基础操作

7、进入容器

进入有两种方式

run:可以在容器未开启,直接使用run进入

[aaa@qq.com ~]# docker run -it nginx:latest /bin/bash

Docker——简单部署及基础操作

exec:只有在容器up开启状态才能进入

[aaa@qq.com ~]# docker exec -it f169ab57906f /bin/bash

Docker——简单部署及基础操作

8、退出容器

exit就可以直接退出
Docker——简单部署及基础操作

9、容器导出

语法:docker export 容器ID > 自定义名称

[aaa@qq.com ~]# docker export f169ab57906f > nginx_ml

Docker——简单部署及基础操作

10、容器导入

会生成镜像,而不会创建容器

语法:cat 容器名称 | docker import - 定义镜像名称

[aaa@qq.com ~]# cat nginx_ml | docker import - nginx:web

Docker——简单部署及基础操作

11、删除容器

语法:docker rm 容器ID

Docker——简单部署及基础操作

12、批量删除容器

容器在up开启状态是无法删除的

如果想要批量删除,仅保留up状态的容器,其余全部删除,就可以使用批量删除,提高效率
docker ps -a | awk ‘{print "docker rm "$1}’ | bash
Docker——简单部署及基础操作
以上均为docker的基本操作,后续还会继续学习并发布