Docker是什么

市面使用情况

【Docker】Docker应用_linux

理解

【Docker】Docker应用_docker_02

为什么需要

基于linux容器的 环境,类似于虚拟机,方便部署
【Docker】Docker应用_docker_03

用途

【Docker】Docker应用_centos_04

特点

【Docker】Docker应用_centos_05
好处开发同一份镜像
【Docker】Docker应用_linux_06

镜像images

【Docker】Docker应用_nginx_07
【Docker】Docker应用_docker_08
分层,在别人的镜像基础上做修改
【Docker】Docker应用_hadoop_09

容器

写在最上层,下面都是只读
【Docker】Docker应用_centos_10
【Docker】Docker应用_linux_11

仓库

hub.docker.com
https://c.163.com/hub#/m/home/

安装

centos7.6

Linux

// 查看系统版本号
[root@hadoop01 ~]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)

// 用root账户登录进去

// 配置国内yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache


//卸载旧版本
//较旧的Docker版本称为docker或docker-engine。如果已安装这些程序,请卸载它们以及相关的依赖项。
yum remove docker \
​         docker-client \
​          docker-client-latest \
​         docker-common \
​         docker-latest \
​         docker-latest-logrotate \
​         docker-logrotate \
​         docker-engine

//更新yum
yum check-update
yum update

//安装所需的软件包
yum install -y yum-utils \
 device-mapper-persistent-data \
 lvm2

//使用以下命令来设置稳定的存储库。
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

//查看docker版本
yum list docker-ce --showduplicates | sort -r

//安装指定的版本
sudo yum install docker-ce docker-ce-cli containerd.io
yum install docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io

//Docker 是服务器----客户端架构。命令行运行docker命令的时候,需要本机有 Docker 服务。用下面的命令启动
systemctl start docker

//安装完成后,运行下面的命令,验证是否安装成功。
docker version
或者
docker info
第一个docker容器

拉取、查看镜像
【Docker】Docker应用_nginx_12

//查看当前镜像
docker images

//拉取hello-world镜像
docker pull hello-world

//运行一个镜像,镜像会创造实例容器,通过容器返回流数据给客户端
docker run hello-world

Nginx下载

【Docker】Docker应用_hadoop_13

前台、后台的运行

// 拉取网易镜像https://c.163yun.com/hub
docker pull hub.c.163.com/library/nginx:1.13.0

//验证当前镜像
docker images

//运行时必须制定版本号,不然拉取最新
docker run hub.c.163.com/library/nginx:1.13.0

//查看当前正在运行的容器(比如前台运行那种)
docker ps

//ctrl+c停止前台运行(docker stop 容器id)

//重新,后台运行镜像,创建容器
docker run -d hub.c.163.com/library/nginx:1.13.0

访问到容器内部

//一般访问到容器内部都是通过命令行(shell)
//将容器映射到当前终端shell(启动容器 编号可以写缩写)
[root@hadoop01 ~]# docker exec -it  be2 bash
root@be28d0664f17:/#

//查看nginx所在位置
root@be28d0664f17:/# which nginx
/usr/sbin/nginx

三种网络模式

桥接
主机
没有

访问到docker内部的ngnix->端口映射

//启动指定端口的本机->容器的映射
 docker run -d -p 8080:80 hub.c.163.com/library/nginx:1.13.0

//验证端口的映射输出
docker ps
 0.0.0.0:8080->80/tcp

//验证本机端口处于监听中
[root@hadoop01 ~]# netstat -na|grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN

//当-P时大写,端口会自动映射。问题是不固定
docker run -d -P hub.c.163.com/library/nginx:1.13.0

//验证
docker ps
 0.0.0.0:49153->80/tcp

【Docker】Docker应用_docker_14

dockerfile实战

【Docker】Docker应用_linux_15
【Docker】Docker应用_nginx_16

//文件名约定俗成
[root@hadoop01 ~]# touch Dockerfile
[root@hadoop01 ~]# vim Dockerfile 

// vi 文件
FROM alpine:latest
MAINTAINER bennyrhys
CMD echo 'hello my dockerfile'

//docker编译文件
docker build -t hello_docker .

//查看已自定义的docker文件
docker images

//运行docker
[root@hadoop01 ~]# docker run hello_docker
hello my dockerfile
rabbitmq
#指定版本,该版本包含了web控制页面
docker pull rabbitmq:management

#方式一:默认guest 用户,密码也是 guest
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management

#方式二:设置用户名和密码
docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:management

# 验证
http://localhost:15672/