Docker

什么是Docker?

  1. Docker就是一种虚拟化的技术

  2. 可以通过Docker快速的下载使用第三方技术,方便搭建环境

  3. 目的:Securely build,share and run any application,anywhere(在任何地方安全地构建、共享、运行任何应用)

为什么选择Docker?

  1. 更高效利用系统资源

    1. 不需要硬件虚拟及运行完整操作系统

  2. 更快速的启动时间

  3. 一致的运行环境

  4. 持续交付和部署

  5. 更轻松的迁移

    Docker快速上手入门_docker

    Docker快速上手入门_mysql_02

Docker组件

  1. C/S架构

    Docker快速上手入门_elasticsearch_03

  2. 镜像与容器

    1. 镜像是构建Docker的基石,用户基于镜像运行自己的容器

      1. 镜像是容器的模板

      2. 镜像是容器的类

      3. 主要作用是构建打包

    2. 容器是基于镜像启动的

      1. 容器是镜像的实例

      2. 主要作用是启动执行

    3. 注册中心

      1. 用来保存用户构建的镜像

        1. 公共:DockerHub(类似github)

        2. 私有

Docker安装

 

建议在ubuntu中安装

 

1 yum update
2 yum install -y yum-utils device-mapper-persistent-data lvm2
3 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4 yum -y install docker-ce
5 6 docker -v # 查看版本号

 

设置ustc镜像

mkdri -p    /etc/docker
vim /etc/docker/daemon.json
​
# daemon.json中编辑
{
"registry-mirrors":["https://"]
}

Docker服务命令

命令 作用
systemctl start docker 启动docker服务
systemctl stop docker 停止docker服务
systemctl status docker 查看docker服务状态
systemctl restart docker 重启docker服务
systemctl enable docker 开机自启动docker服务
docker --help 查看操作文档
docker info 查看docker对应的信息


Docker常用命令

 

镜像

命令 作用
docker images 查看镜像
docker search 镜像名 在网络上搜索镜像
docker pull 镜像名:版本 拉取(下载)镜像,不加版本号下载的是最新版本

docker rmi 镜像Id

docker rmi `docker images -q`

删除镜像
删除所有镜像

容器

命令 参数 作用

docker ps

  查看正在运行的容器
-a 查看所有容器
docker start 容器Id   启动容器
docker stop 容器Id   停止容器

docker cp 

文件名 容器Id:容器中的目录

将文件从宿主机拷贝到容器中
容器Id:容器中的文件名 宿主机路径 将文件从容器拷贝到宿主机中
docker exec   在运行的容器中执行命令
docker inspect   查看容器中运行的数据
  --format="{{.字段名.字段名}}" 查看容器中指定的数据
docker rm 容器Id   删除容器(必须先停止了再删)

docker run

  创建容器

-i

运行容器

-t

为容器重新分配一个伪输入终端,通常与 -i 同时使用

--name 为创建的容器命名
-v 目录映射(挂载)关系(宿主机目录:容器目录)
-d 创建一个守护式容器在后台运行(不会自动登陆容器)
-p 端口映射(宿主机端口:容器端口)
-e 设置容器的环境变量
# 将宿主机的目录和容器中的目录相互映射
mkdir -p /usr/local/mydata
docker run -div /usr/loacl/mydata:/usr/local/mydata --name=mycentos3 centos:7

 

部署

MySQL

# 下载镜像
docker pull mysql:5.7
# 创建容器,并将宿主机的3306端口和容器的端口映射
docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7

Nginx

docker pull nginx
docker run -di --name=nginx -p 80:80 nginx
# 将容器中的配置目录拷贝到宿主机
docker cp nginx:/etc/nginx /usr/local/mydata/nginx/# 挂载
docker stop nginx
docker rm nginx
docker run -di --name=nginx -p 80:80 -v /usr/local/mydata/conf/:/etc/nginx nginx

Redis

docker pull redis
docker run -di --name=redis -p 6379:6379 redis

RabbitMQ

docker pull rabbitmq:3.7.12
docker run -di --name=rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:3.7.12
docker exec -it rabbitmq /bin/bash
#启动rabbitmq的UI插件
rabbitmq-plugins enable rabbitmq_management

Elasticsearch

docker pull elasticsearch:7.5.0
# 修改虚拟内存大小
sysctl -w vm.max_map_count=262144
# 创建容器
docker run -di --name=elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single.node" -e "=elasticsearch" -v /usr/local/elasticsearch/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.5.0
# 登陆启动容器
docker exec -it elasticsearch /bin/bash
# 安装IK中文分词器
elasticsearch-plugin install https:///medcl/elasticsearch-analysis-id/releases/download/v7.5.0/elasticsearch-analysis.ik.7.5.0.zip
# 重启
exit
docker restart elasticsearch

Zookeeper

docker pull zookeeper:3.4.13
docker run -di --name=zookeeper -p 2181:2181 zookeeper:3.4.13

迁移与备份

命令 作用
docker commit 容器名 镜像名 将容器打包成为镜像
docker save -o 镜像名.tar 镜像名 镜像打包(备份)
docker load -i 镜像名.tar 加载镜像(还原)

Dockerfile

 

由一系列命令和参数构成的脚本,应用于基础镜像并最终创建一个新的镜像

 

 

  1. 对开发:提供完全一致的开发环境
  2. 对测试:直接拿开发构建的镜像开始工作
  3. 对运维:实现应用的无缝移植

 

 

常用命令

命令 作用
FROM image_name:tag 定义使用哪个基础镜像启动构建流程
MAINTAINER username 声明镜像的创建者
ENV key value 设置环境变量(可以写多条)
RUN command 是Dockerfile核心部分(可以写多条)
ADD source_dir/file dest_dir/file 将宿主机的文件位置到容器内,若是压缩文件,会自动解压
COPY source_dir/file dest_dir/file 和ADD相似,但是不能自动解压
WORKDIR path_dir 设置工作目录

 

例子

mkdir -p /usr/local/dockerjdk8
mv jdk.8u202.linus.x64.tar.gz /usr/local/dockerjdk8/
​cd /usr/local/dockerjdk8
# 创建Dockerfile
vim Dockerfile FROM centos:
7 MAINTAINER xxx WORKDIR /usr RUN mkdir /usr/local/java ADD jdk.8u202.linus.x64.tar.gz /usr/local/java ENV JAVA_HOME /usr/local/java1.8.0_202 ENV PATH $JAVA_HOME/BIN:$PATH# 执行当前路径下的Dockerfile,进行构建 docker build -t='jdk1.8' .

Docker私有仓库

 

搭建与配置

  1. docker pull registry:拉取私有仓库的镜像

  2. docker run -di --name=registry -p 5000:5000 registry:启动私有仓库容器

  3. 修改/etc/docker/daemon.json(设置信任)

    {"insecure-registres":["192.168.10.101:5000"]}
  4. systemctl restart docker:重启docker服务

  5. docker start registry:启动容器

 

上传至私有仓库

 

  1. 打标签:docker tag jdk1.8 192.168.10.101:5000/jdk1.8

  2. 上传:docker push 192.168.10.101:5000/jdk1.8