1.docker简介
1.1docker是什么
Docker 是一个开源的应用容器引擎,基于Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
可参考:
docker官方文档:https://docs.docker.com/engine/
如何通俗解释Docker是什么? - 刘允鹏的回答 - 知乎 https://www.zhihu.com/question/28300645/answer/67707287
①docker的集装箱思想:
不同的应用程序可能会有不同的应用环境。我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高,docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小。
虚拟机,就是在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。“子电脑”和“子电脑”之间,是相互隔离的,互不影响。虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化。容器技术不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境。
启动时间很快,几秒钟就能完成;对资源的利用率很高,一台主机可以同时运行几千个Docker容器;占用空间小,虚拟机一般要用GB-TB的空间,容易只需要MB级甚至KB级。
②Build, Ship and Run。(搭建、发射、允许)
Build once,Run anywhere(搭建一次,到处能用)。
Docker技术的三大核心概念,分别是:
- 镜像(Image),Docker 镜像(Image),就相当于是一个 root 文件系统
- 容器(Container),镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
- 仓库(Repository),仓库可看成一个代码控制中心,用来保存镜像
Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。可以根据仓库里的镜像,创建容器出来。
1.2docker的应用场景
-
Web 应用的自动化打包和发布。
-
自动化测试和持续集成、发布。
-
在服务型环境中部署和调整数据库或其他的后台应用。
-
从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境
2.安装Docker
在Ubuntu上安装docker:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
校验docker是否安装成功: sudo docker run hello-world
3.Docker Compose
使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具。
3.1安装Docker Compose
安装 Docker Compose 可以通过下面命令自动下载适应版本的 Compose,并为安装脚本添加执行权限
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
查看安装是否成功
docker-compose -v
工程、服务、容器
- Docker Compose 将所管理的容器分为三层,分别是工程(project)、服务(service)、容器(container)
- Docker Compose 运行目录下的所有文件(docker-compose.yml)组成一个工程,一个工程包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖,一个服务可包括多个容器实例
3.2使用docker-compose安装wordpress
①创建一个空的项目目录:my_wordpress : mkdir my_wordpress
②在该目录中创建一个docker-compose.yml
文件,内容如下:
version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
③运行:docker-compose up -d
从您的项目目录运行
3.3Docker Compose 常用命令与配置
常见命令:
- ps:列出所有运行容器
docker-compose ps
- logs:查看服务日志输出
docker-compose logs
- port:打印绑定的公共端口,下面命令可以输出 eureka 服务 8761 端口所绑定的公共端口
docker-compose port eureka 8761
- build:构建或者重新构建服务
docker-compose build
- start:启动指定服务已存在的容器
docker-compose start eureka
- stop:停止已运行的服务的容器
docker-compose stop eureka
- rm:删除指定服务的容器
docker-compose rm eureka
- up:构建、启动容器
docker-compose up
- kill:通过发送 SIGKILL 信号来停止指定服务的容器
docker-compose kill eureka
- pull:下载服务镜像
- scale:设置指定服务运气容器的个数,以 service=num 形式指定
docker-compose scale user=3 movie=3
- run:在一个服务上执行一个命令
docker-compose run web bash