Docker

什么是Docker?

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

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

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

为什么选择Docker?

  1. 更高效利用系统资源

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

  2. 更快速的启动时间

  3. 一致的运行环境

  4. 持续交付和部署

  5. 更轻松的迁移

Docker组件

  1. C/S架构

  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.mirrors.ustc.edu.cn"]
}

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 "cluser.name=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://github.com/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

Docker快速上手入门的更多相关文章

  1. smarty半小时快速上手入门教程

    http://www.jb51.net/article/56754.htm http://www.yiibai.com/smarty/smarty_functions.html http://www. ...

  2. [Docker]Docker快速上手学习笔记

    0. 学习的一些疑问 如何热更新镜像(images)?(你可以快速启动或者销毁容器.这种时间几乎是实时的) 如何热更新游戏服? 好处在于各个应用之间环境相互独立,即使某一个容器崩溃也不会影响到其它容器 ...

  3. Docker快速上手之搭建SpringBoot项目

    Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期 ...

  4. Docker快速上手之部署SpringBoot项目

    Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期 ...

  5. docker 快速上手

    Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口 安装 docker 设置仓库 $ sudo yum install -y yum-utils $ sudo yum-conf ...

  6. R中的data.table 快速上手入门

    data.table包提供了一个非常简洁的通用格式:DT[i,j,by]. 可以理解为:对于数据集DT,选取子集行i,通过by分组计算j. 对比与dplyr等包,data.table的运行速度更快. ...

  7. 必会技能!Docker助你快速上手玩转HBase!

    前言:本文主要讲述了如何使用Docker快速上手HBase,省去繁杂的安装部署环境,直接上手,小白必备.适合HBase入门学习及简单代码测试. 1. Docker 安装 参考地址: https://y ...

  8. smarty 快速上手

    smarty半小时快速上手入门教程 投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-10-27我要评论 这篇文章主要介绍了smarty半小时快速上手入门教程,以实例的形 ...

  9. 【干货合集】Docker快速入门与进阶

    收录待用,修改转载已取得腾讯云授权 Docker 在众多技术中,绝对是当红炸子鸡.这年头,如果你不懂一点容器,不学一些Docker,还怎么出去跟人炫耀技术? Docker 也是云计算技术中较为热门的一 ...

随机推荐

  1. linux wifi热点服务脚本

    最近有关wifi热点的驱动,启动参数都调试完了,验证可以连接传输数据. 首先要在系统启动脚本中插入wifi驱动,配置wlan0的ip insmod /system/vendor/modules/818 ...

  2. Swarm+Docker+Portainer(集群,图形化)

    参考文章 https://blog.csdn.net/u011781521/article/details/80469804 https://blog.csdn.net/u011781521/arti ...

  3. IP数据报中如果不分片,分片标志值是什么?

    过了好久才解决这个简单的问题,罪过罪过- 答案:如果IP数据报不分片,分片标志DF(Don't Fragment)会被设置为1.分片标志MF(More Fragment)设置为0. 下面是详细解释: ...

  4. springboot使用之请求参数与基本注解

    @PathVariable 作用:@PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值,将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariabl ...

  5. React项目打包并部署到 Github 展示预览效果

    React项目打包并部署到 Github 展示预览效果 当开发者模式结束,准备打包的时进行以下步骤: 在package.json配置文件中加一句: "homepage": &quo ...

  6. 【完虐算法】LeetCode 接雨水问题,全复盘

    大家好! 动态规划题目是总结的比较完整了.下面是自从和大家刷开题总结的动态规划解题方法. 今年全国夏天雨是真的多,突然想到今年北京的夏天也不像往年那么热.不知不觉就稳稳地度过了夏天来到秋天. 恰巧前几 ...

  7. 日志框架-logtube

    Logtube 是什么 logtube 框架是基于 slf4j的一个日志框架封装, 源码地址: https://github.com/logtube 基于 SLF4J框架, 扩展了日志输出格式 (兼容 ...

  8. Django笔记&教程 1-1 一 新建项目

    Django 自学笔记兼学习教程第1章第1节--一 新建项目 点击查看教程总目录 1- 命令行新建Django项目 新建项目命令(project_name处为项目名) django-admin sta ...

  9. Django 项目配置拆分独立

    目录 一.创建配置目录 二.创建基础配置文件 三.创建各个环境的配置 四.调整settings.py 五.程序使用 六.目录结构 Django 项目中,我们默认的配置是都在 settings.py 文 ...

  10. [Aizu1410]Draw in Straight Lines

    注意到当操作确定后,显然操作顺序总是涂黑色的1操作->涂白色的1操作->2操作 用$b/w_{r/c}(i,j)$表示$(i,j)$是否被黑色/白色 横着/竖着 涂过(1表示涂过,0表示没 ...