docker基本操作

一、为什么使用容器

1. 解决上线流程繁琐问题

开发-->测试--> 申请资源-->审批-->部署-->测试等环节(传统部署环节)

2. 资源利用率低

普遍服务器利用率低,造成过多浪费

3.扩容/缩容不及时

业务高峰期扩容流程繁琐,上线不及时

4.服务器环境臃肿

服务器环境越来越臃肿,对维护、迁移带来困难

5.环境不一致

二、Docker是什么

1.使用最广泛的开源容器引擎

2.一种操作系统级的虚拟化技术

3.依赖Linux内核特性Namespace(资源隔离)和Cgroups(资源限制)

4.一个简单的应用程序打包工具

拓展:

Docker本质 用namespace 和 cgroups隔离的“沙盒”

容器是一种沙盒技术,通过约束和修改进程的动态表现,从而为其创造出一个“边界”,

Namespace 技术则是用来修改进程视图的主要方法。帮助容器实现各种计算资源的隔离。

 

Cgroups 技术是用来制造约束的主要手段。对容器使用某种资源量的多少做一个限制。

Cgroups有V1和V2版本
Cgroups v2的五点改进:
-  Cgroups v2 中所有的controller都会被挂载到一个unified hierarchy下,不在存在像v1中允许不同的controller挂载到不同的hierarchy的情况
- Proess只能绑定到cgroup的根(“/“)目录和cgroup目录树中的叶子节点
- 通过cgroup.controllers和cgroup.subtree_control指定哪些controller可以被使用
- v1版本中的task文件和cpuset controller中的cgroup.clone_children文件被移除
- 当cgroup为空时的通知机制得到改进,通过cgroup.events文件通知

 

三、Docker命名

Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布

较旧的Docker版本称为docker或docker-engine或docker.io(docker.io是由ubuntu统一管理)

docker-ce是由docker团队管理,后面分为社区版(docker-ce)和企业版(docker-ee),Docker CS(商业支持)是版本低于1.13的旧版Docker EE版本。

四、安装Docker

# 安装前建议关闭selinux和firewalld

# 安装依赖包

yum install -y yum-utils

# 添加Docker软件包源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装Docker CE

yum install -y docker-ce

# 启动Docker服务并设置开机启动

systemctl enable docker --now

官方文档:

https://docs.docker.com

https://docs.docker.com/engine/install

https://docs.docker.com/engine/install/centos/

阿里云源:

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

五、Docker使用

Docker常用命令

 

指令

描述

docker ls

列出镜像

docker version

显示当前docker版本

docker info

显示docker 信息

 

docker build

构建镜像来自Dockerfile

docker history

查看镜像历史

docker inspect

显示一个或多个镜像详细信息

docker rmi

移除一个或多个镜像

docker rm

移除一个或多个容器

docker prune

移除没有被标记或者没有被任何容器引用的镜像

docker tag

创建一个引用源镜像标记目标镜像

docker save

保存一个或多个镜像到一个tar归档文件

docker load

加载镜像来自tar归档或标准输入

docker exec

在运行容器中执行命令

docker commit

创建一个新镜像来自一个容器

docker cp

拷贝文件/文件夹到一个容器

docker logs

获取一个容器日志

docker port

列出或指定容器端口映射

docker top

 

显示一个容器运行的进程

 

docker stats

显示容器资源使用统计

docker stop/start/restart

停止/启动一个或多个容器

 

 

 

指令

描述

docker ps

查看当运行的docker

 docker ps -a

 查看所有的docker

 docker images

 查看docker镜像

 docker search mysql

 搜索镜像(从官方仓库找)

 docker pull mysql

 下载(默认从docker-hub拉取 速度比较慢)

一般配置阿里云加速(https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)

docker pull hub.c.163.com/library/mysql:latest

 指定pull的地址下载

docker push

推送一个镜像到镜像仓库

 docker history docker.io/mysql

 docker 层次结构

Docker创建容器常用选项

选项

描述

-i

-interactive 交互式

-t

-tty 分配一个伪终端

-d

-detach 运行容器到后台

-e

-env 设置环境变量

-p

-publish list 发布容器端口到主机

-P

-publish-all布容器所有EXPOSE的端口到宿主机随机端口

--name string

指定容器名称

-h

-hostname 设置容器主机名

--ip string

指定容器IP,只能用于自定义网络

--network

连接容器到一个网络

-v

-volume list

--mount

mount(新方式)将文件系统附加到容器

--restart string

容器退出时重启策略,默认no,可选值:[always|on-failure]

 

Docker创建容器常用选项--资源限制

选项

描述

-m

-memory 容器可以使用的最大内存量

-memory-swap

允许交换到磁盘的内存量

-memory-swappiness=<0-100>

容器使用SWAP分区交换的百分比(0-100,默认为-1)

-oom-kill-disable

禁用OOM Killer

--cpus

可以使用的CPU数量

-cpuset-cpus

限制容器使用特定的CPU核心,如(0-3, 0,1)

-cpu-shares

CPU共享(相对权重)

 

 

 

上一篇:kubernetes环境宿主机异常关机导致重新部署harbor失败解决案例


下一篇:C# 类型转换