Docker入门

Docker是一个开放源代码软件,是一个开放平台,用于开发、交付(shipping)、运行应用。

简介

Docker

Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。

Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。

Docker 利用Linux核心中的资源分离机制,例如cgroups,以及Linux核心名字空间(namespaces),来创建独立的容器(containers)。这可以在单一Linux实体下运作,避免启动一个虚拟机造成的额外负担。

Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括行程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPU、存储器、block I/O与网络。从0.9版本起,Dockers在使用抽象虚拟是经由libvirt的LXC与systemd - nspawn提供界面的基础上,开始包括libcontainer库做为以自己的方式开始直接使用由Linux核心提供的虚拟化的设施。


1.Docker:

  • Docker项目
  • Docker引擎:Docker引擎(Docker Engine)是一个服务端-客户端结构的应用,主要有这些部分:Docker守护进程、Docker Engine API、Docker客户端。
    • Docker守护进程(Docker daemons),也叫 dockerd ,是一个持久化的进程,用户管理容器。守护进程会监听Docker Engine API 的请求。
    • Docker Engine API是用于与Docker守护进程交互用的的API。它是一个RESTful API,因此它不仅可以被Docker客户端调用,也可以被wget 和 curl等命令调用。
    • Docker客户端,也叫docker,是大部分用户与Docker交互的主要方式。用户通过客户端将命令发送给守护进程。命令会遵循Docker Engine API。

2.Docker注册中心
Docker注册中心(Docker registry)是用于存储Docker的镜像。Docker Hub 是一个公共的注册中心,任何人都可以使用,默认配置下,Docker将会在这里寻找镜像。另外,用户可以自行构建私有注册中心。Docker Datacenter (DDC)的用户,可以直接使用 Docker Trusted Registry (DTR)。

3.对象
Docker的对象是指Images、Containers、Networks、Volumes、Plugins等等。

  • 容器(Containers)是镜像的可运行的实例。容器可通过API或CLI(命令行)进行操控。
  • 镜像(Images)是一个只读模板,用于指示创建容器。镜像分层(layers)构建的,而定义这些层次的文件叫Dockerfile
  • 服务(Services)允许用户跨越不同的Docker守护进程(Docker daemons)的情况下增加容器,并将这些容器分为管理者(managers)和工作者(workers),让他们为swarm共同工作。

Docker是一个应用打包(将应用运行需要的依赖、第三方库、应用打包到一起)、分发(将”安装包(Docker镜像)”上传至镜像仓库便于他人获取和安装)、部署(可以使用命令运行应用,模拟出相同的运行环境)的工具。

用途:

  • 应用分发和部署
  • 快速测试和学习相关技术,无需关注软件的环境搭建
  • 软件版本共存
特性 虚拟机 Docker
启动 慢(启动操作系统) 快(进程)
性能 弱于 接近原生
自动化 手动安装 命令直接部署环境
系统支持量 一般是几十个 单机支持上千个容器
资源占用 较高 很少
安全性 较高 较弱


安装

Install Docker Desktop on Windows


WSL的手动安装

1.启用适用于Linux的Windows子系统

1
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

2.启用虚拟机功能

1
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

3.下载Linux内核更新包

wsl

4.将WSL2设置为默认版本

1
wsl --set-default-version 2

5.安装Linux分发


国内镜像源 国内镜像源地址
Docker 中国官方镜像 https://registry.docker-cn.com
DaoCloud 镜像站 http://f1361db2.m.daocloud.io
Azure 中国镜像 https://dockerhub.azk8s.cn
中科大镜像站 https://docker.mirrors.ustc.edu.cn
阿里云 https://.mirror.aliyuncs.com
七牛云 https://reg-mirror.qiniu.com
网易云 https://hub-mirror.c.163.com
腾讯云 https://mirror.ccs.tencentyun.com
1
2
3
4
5
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com",
"https://mirror.ccs.tencentyun.com"
],

Settings->Docker Engine


镜像安装

Docker Hub Container Image Library

Docker Documentation

Docker从入门到实践

1.Redis

1
docker run -d -p 6379:6379 --name redis redis:latest

2.[WordPress](Wordpress - Official Image | Docker Hub)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# docker-co
version: '3.1'

services:

wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress:/var/www/html

db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql

volumes:
wordpress:
db:
1
docker-compose up -d