十号

vuePress-theme-reco 十号    2022
十号

Choose mode

  • dark
  • auto
  • light
主页
分类
  • 《小狗钱钱》
  • 浏览器
  • Docker
  • note
  • 微前端
  • javascript
  • React
  • 工具
  • 工具函数
  • vue
TimeLine
简介

十号

20

Article

19

Tag

主页
分类
  • 《小狗钱钱》
  • 浏览器
  • Docker
  • note
  • 微前端
  • javascript
  • React
  • 工具
  • 工具函数
  • vue
TimeLine
简介

初识Docker

vuePress-theme-reco 十号    2022

初识Docker

十号 2020-05-28 docker容器化部署

# Docker 是什么?

Docker 学习记录, 相关Docker资源

  • 文档·中文 (opens new window)
  • Docker — 从入门到实践 (opens new window)

# 概念

  • 一次封装,到处执行
  • 基于Linux的高效、敏捷、轻量级的容器(轻量虚拟)方案

虚拟技术

  • 完全虚拟化VMware Workstation VirtualBox
  • 硬件辅助虚拟化InterVT AMD-V
  • 超虚拟化Xen
  • 操作系统级Docker LXC 容器

# 特点

  • 高效利用系统资源
  • 快速启动时间
  • 一致的运行环境
  • 持续交付和部署
  • 更轻松的迁移

# 对比传统虚拟机总结

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为MB 一般为GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般为几十个

# Docker 安装

# 前期准备

  • Ubuntu

  • docker镜像

  • 阿里云系统的各个区别

# apt 升级
sudo apt-get update
sudo apt-get install \
		apt-transport-https \
		ca-certificates \
		curl \
		software-properties-common

# 下载软件包的合法性,需要添加软件源的GPG密钥
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# source.list 中添加 Docker 软件源
# 在软件源列表中没有Docker, 所以需要添加下
sudo add-pet-repository \
		"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
		$(lsb_release -cs) \
		stable"
		
# 安装 Docker CE
sudo apt-get update
sudo apt-get install docker-ce

# 脚本自动安装(不需要)
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

# 启动Docker CE
sudo systemctl enable docker
sudo systemctl start docker

# 建立docker用户组(附加)
sudo groupadd docker
sudo usermod -aG docker $USER

# Helloworld 测试
docker run hello-world
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
33
34
35
36

# 镜像加速

  • Azure中国镜像 (opens new window)
  • 阿里云加速器(需要登陆账号获取)
  • 七牛云加速器 (opens new window)
# /etc/docker/daemon.json
{
	"registry-mirrors": [
		"https://dockerhub.azk8s.cn",
		"https://reg-mirror.qiniu.com"
	]
}

sudo systemctl daemon-reload
sudo systemctl restart docker

1
2
3
4
5
6
7
8
9
10
11

# 简单Nginx 服务

# 拉取nginx官方镜像
# nginx 镜像是面向docker的只读模版
# 直接运行nginx, 如果没有, docker可以自动拉取, 所以拉取nginx 镜像这步操作可以省略
docker pull nginx

# 查看
docker images nginx

# 创建文件夹
mkdir www

# 查看当前目录(可以省略, 这步主要是看创建后的 www 文件夹)
ls

# 在www文件夹中写入index.html
echo 'hello docker!' >> www/index.html

# 查看刚刚写入的index.html内容(非必要,可以省略)
cat www/index.html

# 运行
# -p 标识会将容器的端口暴露给主机,这样可以通过访问实体机(服务器)的端口访问docker中运行的服务
# -p number:number 表示端口映射。
# 因为nginx 默认是80端口
# 所以 -p 8000:80 这句话意思是: 将实体机(服务器)的8000端口映射到docker下nginx 80端口
# docker -v 命令?
# $PWD/www 表示实体机(服务器)的目录
# $PWD/www:/usr/share/nginx/html 命令含义为:
# 将实体机下的www目录映射到nginx的html目录
# nginx 结尾表示使用镜像的名字
docker run -p 8000:80 -v $PWD/www:/usr/share/nginx/html nginx

# 上述步骤已经可以运行了, 浏览器访问http:ip地址:端口号

# 后台模式执行
# -d 标识可以让容器在 docker run 命令完成之后继续在后台运行
docker run -p 8000:80 -v $PWD/www:/usr/share/nginx/html -d nginx

# 查询docker下的运行进程
# 在liunx 系统下 ps 命令表示查看运行进程
docker ps

# 根据container id停止Nginx服务
# c99 表示CONTAINER ID 的前三位
docker stop c99
# 根据CONTAINER ID 运行Nginx服务
docker start c99

# 在docker下查询所有没有运行的服务
docker ps -a

# 进入docker虚拟机服务
docker exec -it c99 /bin/bash

# 退出
exit

# 删除c99服务
docker rm c99
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

# Docker 运行过程

  • 镜像(Image)

    面向Docker的只读模版

  • 容器(Container)

    镜像的运行实例

  • 仓库(Registry)

    存储镜像的服务器

# 定制镜像

镜像的定制实际上就是定制每一层所添加的配置、

# 定制NodeJs 镜像