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 importdocker export
容器
docker run docker stop/start/create/stats docker ps docker kill
仓库
docker pull docker push
运维
docker execdocker 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 bashecho "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 8080RUN mkdir -p /usr/src/app COPY . /usr/src/app WORKDIR /usr/src/appCMD 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
作者:谢小路
链接:https://www.jianshu.com/p/237e7329f98c
共同学习,写下你的评论
评论加载中...
作者其他优质文章