带你进入Docker的世界
Docker优势
操作系统: debain/unbuntu /FreeBSD/Centos/openSUSE
编程语言: java、C /C++ python、Ruby、Golang
Web服务器:resin、tomcat、 apache、nginx、lighttpd、jetty
数据库:mysql、redis、mongoDB、sqlserver、H2、DB2、MariaDB
Docker是什么
应用容器
docker是一个开源的应用容器
Java:write once, run anywhere ; java的核心是jvm
docker:build once ,run any where ,configure once run anthing
软件的生态圈
Docker有自己的软件生态圈,那么应用是以镜像的方式存在于仓库上。然后用户可以根据需要去下载对应的镜像
Docker能够解决哪些问题
开发人员
- 为了节约成本,很多时候是一台虚拟机由多个人或者多个团队去做
使用docker容器虚拟化技术,那么每一个应用都可以运行在独立的虚拟化环境中。相互隔离的
一个开发团队往往只有一套开发或者测试环境,但是会存在同时有多个开发任务。所以会导致反复去修改环境或者软件包
-
多个开发团队可能对软件环境的版本有严格要求,但是在开发迭代的过程中,软件的升级或者各个团队对软件本本的升级都会导致环境的变化
这样就很容易引起虚拟机环境对我们应用产生影响
机器硬件故障,导致系统需要重装
测试人员
- 环境问题测试出bug
- 配置不同的测试环境所浪费的时间
运维人员
- 环境的安装、配置、部署、扩容、故障服务器迁移
Docker安装配置
Docker对操作系统的要求是,必须是64位的、以及是linux3.8以上版本的内核
Ubuntu 14.04 16.04 (使用apt-get进行安装)
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl
software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key
add -
# Step 3: 写入软件源信息
sudo add-apt-repository “deb [arch=amd64]
http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable”
# Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
# docker-ce | 17.03.1ce-0ubuntu-xenial |
http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# docker-ce | 17.03.0ce-0ubuntu-xenial |
http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION 例如上面的
17.03.1ce-0ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]
CentOS 7 (使用yum进行安装)
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager –add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
# 注意:
#
官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,你可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ee.repo
# 将 [docker-ce-test] 下方的 enabled=0 修改为 enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 –showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2 : 安装指定版本的Docker-CE: (VERSION 例如上面的
17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
安装校验
root@iZbp12adskpuoxodbkqzjfZ:$ docker version
Client:
Version: 17.03.0-ce
API version: 1.26
Go version: go1.7.5
Git commit: 3a232c8
Built: Tue Feb 28 07:52:04 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.0-ce
API version: 1.26 (minimum version 1.12)
Go version: go1.7.5
Git commit: 3a232c8
Built: Tue Feb 28 07:52:04 2017
OS/Arch: linux/amd64
Experimental: false
配置文件
一个阿里云、另一个是DaoCloud; 都是免费的
- 阿里云容器配置
- https://cs.console.aliyun.com/?spm=5176.2020520152.1001.44.RGHfhm#/repo
- 打开上面链接登录阿里云账户-点击镜像-点击右上角【容器镜像服务控制台】
- 第一次登录【容器镜像服务控制台】会初始化密码设置密码
- 选择【镜像加速器】复制加速器地址:https://0426y50l.mirror.aliyuncs.com
- 修改 vi /etc/docker/daemon.json 把加速器地址设置进去
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://0426y50l.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
测试安装成功
docker run hello-word
Docker安装tomcat
运行tomcat容器
docker run -it -d -p 8080:8080 tomcat:8.0
访问tomcat容器
Docker的操作指令
Docker中有三个重要的点:仓库(repository)、镜像(image)、容器(Container)
仓库是存储镜像的
而镜像是软件包
容器是基于镜像去创建的,基于一个镜像可以创建若干个不同名字但功能相同的容器
docker run / docker ps
查看tomcat的日志:docker logs -f [container id / name]
docker的指令
针对守护进程的系统资源设置和全局信息的获取: docker info /docker daemon
针对docker仓库的查询、下载:docker search / docker pull
针对docker镜像的查询、创建、删除: docker images , docker build ,docker delete
docker rmi [image id]
针对docker容器的查询、开启、停止: docker run /docker ps /docker stop [image id
/container id]
单个容器的详细信息: docker inspect f6071fc4ccc9
Docker容器管理
容器标识符
每个容器被创建以后,都会分配一个Container Id
作为容器唯一的标识符,后续对容器的所有操作命令都是通过container id来执行
使用dockerps查看容器的信息、 dockerps –no-trunc 查看containerid的完整形式
容器内部命令
有时候我们需要登录到容器内部执行一些命令或者配置,那么docker可以通过原生的方式去登录到容器
Docker exec 容器名 容器内部执行的命令
docker exec -it【container id/name】/bin/bash
执行完以后,通过exit来退出
多容器管理
安装WORDPRESS
-
安装mariaDb
Docker run –name mydb –env MYSQL_ROOT_PASSWORD=example -d
mariadb【mydb表示的自定义的那么 、 –env配置数据的帐号密码】 -
安装wordpress并关联mariaDb
Docker run –name myWordPress –link mydb:mysql -p 8080:80 -d
wordpress[myWordPress自定义名称]【mydb表示的是第一步所运行的容器名称】 Apache web服务器
Mariadb
Dockercompose
Docker提供了一个容器编排工具 docker
compose,允许用户在一个YAML的文件中定义一组相关联的应用容器
可以在:https://github.com/docker/compose/下载docker-compose
放在 /usr/local/bin/docker-compose ; chmod+xdocker-compose
创建文件 ~/wordpress/docker-compose.yml
wordpress: image: wordpress link: db:mysql ports: 8080:80 –后面的80是wordpress容器默认的端口。8080是映射出来的端口 db: image: mariadb environment: MYSQL_ROOT_PASSWORD: example
cd ~/wordpress && docker-compose up
docker-compose start/stop
docker-compose ~/wordpress/docker-compose.yml down
镜像管理
镜像可以认为是在docker上执行的软件包。通过docker image -a查看所有镜像
镜像分层的概念
mariaDB
Wordpress
应用层
系统
Ubuntu
{Union filesystem}
Docker镜像的层的特性:
- 已有的分层只能读不能修改
- 上层镜像的优先级高于底层镜像
搭建私有仓库
待续。。。。
有疑问加站长微信联系(非本文作者)