『暴力學習 docker ,后附视频版』
docker-png.png
各位好,我是谢伟,是一名程序员。
程序员需要持续不断的学习,这一点已经是成为共识.
我也在不斷的學習新的學習方式,不斷的更新自己的學習方式. 於是有了下文, 稱之爲暴力學習方法.
其實這些也不是我自己原創的,我只是結合自己的學習方式和一些接觸的厲害的人之後總結出來的.
下面的方法,不適合精深某一領域,但是非常適合從不懂到懂操作的階段. 所以称之爲 暴力學習. 但往往就是這麼一次的入門, 就成了...
阻擋你入門的, 往往是那些原理.
注意: 上手是一切的开始, 是一切的可能性的开始
下面的這些方法有幾點需要說明:
- 忽略絕大多數細節
- 了解這門技術的最小知識集
- 實踐, 實踐, 再實踐
- 了解和精進原理
即:把對原理的吸收放到已經能操作這麼技術之後再進行, 這樣的好處是: 你知道你想了解什麼...
下面的演示實例即: 暴力學習 docker.
1. Docker
一句話說明: Docker 是一種容器技術, 允許開發者把程序打包進容器, 之後可以跨平臺使用.
在雲計算 , 微服務領域有着廣泛的使用. 而且扮演着越來越重要的角色.
2. 暴力学习法 docker
- 忽略细节
- 最小知识集
- 实践
2.1 最小集知识
- 使用场景
- 弹性云服务
- 环境一致
- 组件微服务架构
- 基本概念
- 镜像:image: 分层 72
- 容器:container
- 仓库:repository
- Docker registry: 提供集中存储、分发镜像的服务
- 服务和非服务
- .dockerignore 忽略文件
使用場景
- 一個容器提供一個服務, 多個容器提供多個服務, 容器的停止運行即減少服務, 容器的啓動運行即增加服務, 完成彈性暈服務.
- 開發者將程序放入容器中, 可以跨平臺使用. 執行 docker 命令即可使用. 環境一致性.
- 容器啓動提供服務, 服務見相互交互, 完成微服務架構組織.
基本概念
image 鏡像: 即一些文件, 可以理解爲一個比較小的系統的文件系統
container容器: 即一個進程, 即鏡像啓動, 提供相應服務, 開啓進程
registry 倉庫: 鏡像的存儲和分發
docker 的操作即在執行這三者.
安裝
根據自己電腦的操作系統選擇對應的版本, 其中不建議使用 Windows 系統. Docker 在Linux 系統下使用更佳.
加速器
之所以需要使用加速器是因爲Docker 是國外的產品, 默認提供的鏡像倉庫地址是在國外, 所以拉取或者推送鏡像存在一個問題: 慢. 所以使用一些國內的加速器, 拉取鏡像更 快.
2.2 常用命令
- image
- container
- registry
- version
- info
之前說過 docker 的操作基本上是在操作: 鏡像, 容器, 倉庫
命令分這麼幾個類別:
- 系統
docker info
docker version
- 镜像
docker images
docker rmi
docker save
docker load
docker import
docker export
- 容器
docker run
docker stop/start/create/stats
docker ps
docker kill
- 仓库
docker pull
docker push
- 运维
docker exec
docker attach
docker inspect
2.3 Dockerfile
docker 核心是制作鏡像,啓動容器,提供服務.
那嘸如何制作鏡像, 啓動容器, 提供服務呢? 核心又是編寫 Dockerfile 文件.
執行 docker build 成爲鏡像, docker run 成爲容器. 啓動容器後即可以提供服務.
- FROM: scratch
- MAINTAINER
- RUN
- COPY:通配符
- ADD:更高级的COPY:自动解压缩
- CMD:容器启动后的命令执行
- ENTRYPOINT:入口点,容器启动后的命令执行, 方便添加参数
- VOLUME 挂载数据卷
- WORKDIR 指定工作目录
- EXPOSE 暴露端口
- USER 指定当前用户
- HEALTHCHECK 容器健康检查
熟悉shell 命令的, 可以很容易的理解這些命令的含義, 無非是出品docker 的這家公司制定這麼一套規則,我們學會這個規則,完成文件的拷貝,或者執行些命令, 就可以構建鏡像.
實踐
核心是編寫Dockerfile , 會寫Dockerfile , 就會制作鏡像, 就會啓動容器. 就能入門docker.
3.1 設置加速器實例
訪問:
https://www.daocloud.io/mirror#accelerator-doc
https://www.daocloud.io/mirror#accelerator-doc
3.2 拉取鏡像, 啓動服務實例
docker run -d -p 9200:9200 elasticsearch
訪問: localhost:9200
docker pull ubuntu
docker run -it ubuntu sh
#
即: 容器內具備ubuntu 的基礎功能
#!/usr/bin/env bash
echo "hello world"
- 編寫Dockerfile 文件
docker build -t my_hello_world:0.0.1 .
啓動容器:
docker run my_hello_world
輸出: hello world
3.4 Dockerfile 執行提供 API 服務的鏡像
制作步驟: 使用 golang 編寫一個簡單的API 服務
FROM ubuntu
MAINTAINER XieWei
EXPOSE 8080
RUN mkdir -p /usr/src/app
COPY . /usr/src/app
WORKDIR /usr/src/app
CMD ls
ENTRYPOINT ["/bin/bash", "-c", "/usr/src/app/main"]
即: 以ubuntu 爲基礎鏡像, 開放端口 8080, 創建目錄 /usr/src/app , 拷貝本地Dockerfile 所在目錄的所有文件至該文件夾下.
切換至該文件夾, 入口執行 /usr/src/app/main
即: 啓動容器會執行: /usr/src/app/main
- 制作鏡像
docker build -t my_api:0.0.1 .
- 啓動容器, 映射端口 8080
docker run -d -p 8080:8080 my_api:0.0.1
訪問: localhost:8080/user/xiewei
輸出: hello xiewei
视频地址: docker 学习
视频不太清晰,看百度网盘分享的视频吧.
链接: https://pan.baidu.com/s/1afYadQy1C7ym0AgNx7aXNg 密码: 5rcr
http://www.bilibili.com/video/av22701812
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux关机命令及步骤
- Java实现二叉树层次遍历:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
- Django 用户认证系统使用总结
- 前端综合面试题(9道)
- 用SQL查询Oracle数据库名和实例名
- Hadoop历史服务器配置详细步骤
- MySQL常见关键字优先级
- Linux进程管理命令及状态详解
- sqoop把hive数据导入mysql出现中文乱码
- Flink实现WordCount(实操详细步骤)
- 在客户端创建要素图层 (FeatureLayer)
- 11.深入k8s:kubelet工作原理及其初始化源码分析
- 关于搜索,你不知道的是.....
- oracle查询表前十条数据
- sql语句查oracle版本号