api大全-提供全网api api大全-提供全网api

吉他和弦,生育津贴,中天科技-api大全-提供全网api

Docker简介

Docker是容器技能的一个代表,容器的技能从本质上讲是程序打包、阻隔的技能,不是一个很新的技能,中心的技能在内核中现已存在很久了。但容器技能被群众所用,变成这么盛行,这么火爆的技能是由于Docker。Docker在13年被开源,变得越来越盛行,Docker在微服务范畴、云核算范畴有着广泛的运用。这是为什么呢。任何技能的盛行或许的原因有两点,一是能够处理咱们的痛点,二是能够能够习惯潮流.docker理顺了软件包的问题,有了docker运转一个镜像是十分简略的,不需要做各种环境的装备。

什么是Docker?官方的解说如下:

an open resource project to pack,ship and run any application as a lightweght containner.

Build, Manage and Secure Your Apps Anywhere. Your Way.

能够粗糙的认为是一个轻量级的虚拟机,由于在某种程度上来讲,docker和虚拟机是有十分多的类似点。它们都是讲运用放在相对独立的环境里,调度主机的内核来运转。但Docker的确不是虚拟机,这张图是虚拟机和Docker的比照图,左面这张图是虚拟机,右边是Docker,左面的虚拟机子宿主机上有一层Hypervisor虚拟层,虚拟出了硬件和设备,在虚拟层上面会装置GuestOs,然后再运转各式各样的程序,docker 是不一样的,docker是不一样的,它在宿主机上有一个Docker engine,然后再运转各式各样的运用程序。由于它没有虚拟机层,它会比虚拟机轻量许多,包含程序运转速度也十分的快。

Docker为何这么火?天时地利人和。Docker 不是什么新技能,Docker的镜像版别办理是其火的根本原因。

Docker装置

Centos装置:

装置:
yum search docker
yum -y install docker-io
检查基本信息:docker info
发动:servie start docker

Docker架构

从这张图能够看出,Docker的架构是十分简答的。中心是Host,上面装了一个Docker daemon的看护进程,看护进程运用做许多docker的操作,那么谁让 docker daemon来做这些操作呢,是最左面client,比方咱们再终端操作输入dokcer的指令,客户端讲指令发送给docker看护进程,让docker去做一些操作,比方从最右边的镜像库房拉取镜像到宿主机上,然后在宿主机上跑镜像,运转容器。

常见的Docker指令

docker run -p 80:80 -d docker.io/nginx
docker cp index.html containerId://usr/share/nginx/html
docker exec -it containeId /bin/bash
docker images
docker ps [-a -q]
docker stop containerId
docker rm containerId
docker rmi imagesId
docker commit –m ’msg’ containerId [name]
docker build
docker pull
docker push
docker login

Dockerfile

常用指令

指令用处WORKDIRRUN ENTRYPINT CMD履行的作业目录ENV增加环境变量ADD增加文件,会解压压缩包COPY仿制文件ONBUILD触发器VOLUME挂载卷FROM根底镜像ENTRYPOINT根底指令RUN履行指令CMD发动程序指令,拼接在根底指令后EXPOSE露出端口MAINTAINER维护者

假如不理解能够参阅博客https://www.cnblogs.com/51kata/category/789766.html

第一个Dockerfile

FROM alpine:latest
MAINTAINER fzp
CMD echo 'hello docker'

这个镜像的根底镜像是alpine:latest,一切者是fzp,容器发动的时分会履行echo指令。

履行:

docker build -t hello-img .
docker run hello-img

控制台输出: hello docker

第二个Dockerfile

FROM ubuntu
MAINTAINER fzp
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html /var/www/html
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
EXPOSE 80

这个镜像略微复杂点,根底镜像是ubuntu,镜像所属者fzp,再一下一层是设置镜像加快的地址。将index.html拷贝到镜像的目录下。最终以前台进程的方法发动。

index.html

today i'm happy

履行指令:

docker build -t forezp/hello.nginx .
docker run forezp/hello.nginx

curl localhost

控制台输出:today i’m happy

Docker存储

独立于容器之后的独立化存储

第一种方法:

docker run -p 80:80 -d -v $PWD/code:/var/www/html nginx

-v指令 宿主的途径:容器途径

将容器的途径的文件夹或许文件挂载到宿主机的途径。

第二种方法:

docker run -volumes-from …

docker create -v $PWD/data:/var/mydata --name data_container ubuntu
docker run -it --volumes-from data_container ubuntu /bin/bash
cd /var/mydata
touch what.txt
exit
cd data
ls

能够检查宿主机的data目录有what.txt文件

镜像库房

Regiestry,运用官方的docker hub。

docker search whalesay
docker pull dokcer/whalesay
docker run dokcer/whalesay cowsay docker is fun
docker tag dokcer/whalesay forezp/whalesay
dcoker push forezp/whalesay
docker login

Docker Compose

docker compose是Docker 官方的一个容器编列东西,现在以一个简略的建立博客的比如来解说。

装置

所以的比如都是在linux体系下完结的,docker compose在linux下的装置:

curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose

验证装置成了没:

docker-compose --version

Docker Compse常用指令

  • docker-compose build
  • docker-compose up
  • docker-compose stop
  • docker-compose rm

事例实战

工程架构:

分为3个容器,最外层一个服务为ngixn,下一层服务为ghost app,最底层容器是Mysql

在作业目录ghost下,有三个文件夹分别为ngix、ghost、db和一个docker-compose.yml文件,目录结构为:

-ghost
- nginx
- Dockerfile
- nginx.conf
- ghost
- Dockerfile
- config.js
- db
- docker-compose.yml

docker-compose.yml编写

version: '2'
networks:
ghost:
services:
ghost-app:
build: ghost
networks:
- ghost
depends_on:
- db
ports:
- "2368:2368"
nginx:
build: nginx
networks:
- ghost
depends_on:
- ghost-app
ports:
- "80:80"
db:
image: "mysql:5.7.15"
networks:
- ghost
environment:
MYSQL_ROOT_PASSWORD: mysqlroot
MYSQL_USER: ghost
MYSQL_PASSWORD: ghost
volumes:
- $PWD/data:/var/lib/mysql
ports:
- "3306:3306"

nginx相关

dockerfile编写:

FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80

装备文件文件编写nginx.conf

worker_processes 4;
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
proxy_pass http://ghost-app:2368;
}
}
}

ghost app相关

Dockerfile编写:

FROM ghost
COPY ./config.js /var/lib/ghost/config.js
EXPOSE 2368

装备文件config.js:

var path = require('path'),
config;
config = {
production: {
url: 'http://mytestblog.com',
mail: {},
database: {
client: 'mysql',
connection: {
host: 'db',
user: 'ghost',
password: 'ghost',
database: 'ghost',
port: '3306',
charset: 'utf8'
},
debug: false
},
paths: {
contentPath: path.join(process.env.GHOST_CONTENT,'/')
},
server: {
host: '0.0.0.0',
port: '2368'
}
}
};
module.exports = config;

docker-compose打镜像,打完镜像之后运转.

docker-compose buid
docker-compose up

运转之后在浏览器上拜访:http://119.23.221.204/

显现界面如下:

代码方位

/usr/dockerstudy/ghost

常用指令

  • docker stop $(docker ps -q) & docker rm $(docker ps -aq) 删去一切容器
作者:admin 分类:我们的头条 浏览:237 评论:0