Docker使用

发布时间:2024年01月05日

学习目标:

1、什么是docker,docker和其他的k8s等虚拟化技术区别

2、docker的基本概念

3、docker的安装

4、docker的基本操作,查询、添加、编辑和删除docker镜像

5、本地镜像如何放到docker上

6、docker的容器集群编排方法

学习内容:

1、什么是docker,docker和其他的虚拟化技术区别

1.1 什么是docker?

docker是属于linux容器的一种封装,上目前比较流行的linux容器解决方案。Linux容器是Linux的一种虚拟化技术,它实现了对进程的隔离。

1.2 docker解决的问题:

对比解决安装多款相同的应用程序给不同的用户场景:

1、在没有虚拟化技术的时候,只能在一台物理服务器上,先安装一个操作系统,然后在操作系统上运行我们的应用程序。

2、有了虚拟化的技术后,我们可以在同一个物理主机上,使用虚拟化技术虚拟化不同的互相隔离的物理资源(例如CPU、内存、网卡)这些资源,然后搭建不同的虚拟机。在这些隔离的虚拟机上创建需要的应用程序

3、docker技术,docker利用底层的linux技术,对进程进行隔离封装,被隔离出来的进程被称为容器,完全独立于宿主机的进程。

1.3 docker和k8s区别:

k8s实际上是基于容器的集群管理平台,主要解决docker应用于具体业务的编排、管理和调度的问题。

K8s主要由两个部分组成:mater节点和node节点

Master节点主要是负责管理和控制,node节点是工作负载节点,里面是具体的容器。

2、docker的基本概念

docker的三大概念:镜像、容器、仓库

下述资料参考资料来源博客:

https://mp.weixin.qq.com/s/r_xNmvmG2Hm17yXNzRJuwg

docker镜像:

Docker本质上是一个运行在Linux操作系统上的应用,而Linux操作系统分为内核和用户空间,无论是CentOS还是Ubuntu,都是在启动内核之后,通过挂载Root文件系统来提供用户空间的,而Docker镜像就是一个Root文件系统。

Docker镜像是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等文件,另外还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

镜像是一个静态的概念,不包含任何动态数据,其内容在构建之后也不会被改变。

容器:

镜像就是创建出容器的目标,docker镜像和容器的关系和面向对象编程里面类和对象的关系一样。Docker先构建出镜像,利用镜像创建我们需要的容器。

仓库:

在前面的例子中,我们使用两种方式构建镜像,构建完成之后,可以在本地运行镜像,生成容器,但如果在更多的服务器运行镜像呢?很明显,这时候我们需要一个可以让我们集中存储和分发镜像的服务,就像Github可以让我们自己存储和分发代码一样。

Docker Hub就是Docker提供用于存储和分布镜像的官方Docker Registry,也是默认的Registry,其网址为https://hub.docker.com,前面我们使用docker pull命令便从Docker Hub上拉取镜像。

3、docker的安装

在linux上安装docker:Docker 运行在 CentOS 7 (64-bit)上,要求系统为64位、系统内核版本为 3.10 以上

3.1 查看系统版本:cat /etc/centos-release或者上uname a
3.2 安装docker:

1.安装依赖包: sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2.添加docker 下载源地址: sudo yum-config-manager --add-repo ?http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.更新yum缓存 sudo yum makecache fast

4.安装docker : sudo yum install docker-ce

5.或者指定版本安装 sudo yum install docker-ce-17.12.1.ce

6、给docker配置镜像加速器:

https://www.cnblogs.com/yoyoketang/p/12913776.html

4、docker的基本操作,查询、添加、编辑和删除docker镜像

4.1 docker的操作:

1.启动docker

# ?sudo systemctl start docker

查看状态

# sudo systemctl status docker

停掉服务

# sudo systemctl stop docker

2.加入开机启动项

# ?sudo systemctl enable docker

3.查看docker版本

# docker version 或者是docker info

4.卸载docker

?sudo yum remove docker ?docker-client ??docker-client-latest ?docker-common ?docker-latest ?docker-latest-logrotate ??docker-logrotate ??docker-selinux ??docker-engine-selinux ?docker-engine

4.2 镜像的操作:
操作镜像:

查看本地镜像:docker images

查看docker仓库拥有的镜像:https://hub.docker.com/

docker search 镜像名字 :去docker hub上查询某镜像的名字

下载镜像:

docker pull 镜像名字 参数 :下载镜像,没有参数的话就会下载最新版的镜像

删除镜像:

docker rmi 镜像名字 参数 :删除某个镜像,没有参数,

???????????????????????????默认删除最新版的镜像。

??-f:强制删除,如果镜像在使用中不能非强制删除

??删除多个,镜像之间打空格

??删除全部:docker rmi -f $(docker images -qa)

容器的操作:

查看容器:

docker ps或者是查看包括停止状态的所有容器docker ps –a

启动容器:

使用交互的方式启动容器(这种方式exit就会退出容器):docker run -it 镜像名称?/bin/bash

后台运行方式启动容器:docker run -itd --name 自定义容器名称?镜像名称?/bin/bash

启动已经停止的容器:docker start 容器id(容器id可以使用docker ps –a 查看到)

停止容器:

docker stop 容器id

进入容器:

docker exec -it 容器id?/bin/bash(退出直接exit就可以了)

删除容器:

docker rm –f 容器id

清理掉所有处于停止状态的容器:docker container prune

导出容器:

docker?export id > 名称.tar

导入容器:

cat 容器tar包?| docker import – 镜像名称:tag

也可以通过指定 URL 或者某个目录来导入,例如:

docker import http://example.com/exampleimage.tgz example/imagerepo

查看容器端口映射:

通过 docker ps 命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号

docker port 容器id

5、本地镜像如何放到docker上

参考博客:https://www.cnblogs.com/lsgxeva/p/8746644.html

6、docker的容器集群编排方法

6.1 docker-compose介绍:

Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。

Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡。

Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。

6.2 docker-compose操作

安装:pip3?install docker-compose

查看版本:docker-compose?version

常用操作:

后台启动:docker-compose up?–d

查看项目中所有的容器:docker-compose ps

停止启动:docker-compose stop

重新运行:docker-compose start/restart

停止和删除容器、网络、卷、镜像:docker-compose down

查看容器日志输出:docker logs 容器名称

拉起服务依赖的镜像:docker-compose pull

删除所有停止状态的容器:docker-compose rm

在指定服务上执行一个命令:docker-compose run,例如docker-compose run ubuntu ping www.baidu.com

暂停服务容器:docker-compose pause

其他的命令:https://www.cnblogs.com/minseo/p/11548177.html

  1. docker目录爆满,需要迁移到新的目录处理时

http://www.manongjc.com/detail/17-zumrciuaavlgvbx.html

文章来源:https://blog.csdn.net/weixin_39366308/article/details/135405510
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。