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. mdev 响应热插拔事件

    热插拔事件是从内核空间发送到用户空间的通知,一般这时候系统配置出现了变化,比如插入/移除耳机,插入/移除SD卡或者USB存储设备等. 热插拔事件默认会调用/sbin/hotplug来加载驱动程序,创建 ...

  2. nvidia-msi命令解读

    nvidia-msi 或者 watch -n 1 nvidia-smi 打印出表格中: 第一栏的Fan:N/A是风扇转速,从0到100%之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转 ...

  3. Redis去重方法

    目录 1.基于 set 2.基于 bit 3.基于 HyperLogLog 4. 基于bloomfilter 这篇文章主要介绍了Redis实现唯一计数的3种方法分享,本文讲解了基于SET.基于 bit ...

  4. 🏆【JVM深层系列】「云原生时代的Java虚拟机」针对于GraalVM的技术知识脉络的重塑和探究

    GraalVM 背景 新.旧编程语言的兴起躁动,说明必然有其需求动力所在,譬如互联网之于JavaScript.人工智能之于Python,微服务风潮之于Golang等等.大家都清楚不太可能有哪门语言能在 ...

  5. C++ 内存四区 理解总结

    内存模型图(4G) 整体简单说明 32位CPU可寻址4G线性空间,每个进程都有各自独立的4G逻辑地址,其中 03G是用户空间**,**34G是内核空间即3G用户空间和1G内核空间,不同进程相同的逻辑地 ...

  6. 基于ABP开发框架的技术点分析和项目快速开发实现

    在我们开发各种项目应用的时候,往往都是基于一定框架进行,同时配合专用的代码生成工具,都是为了快速按照固定模式开发项目,事半功倍,本篇随笔对基于ABP开发框架的技术点进行分析和ABP框架项目快速开发实现 ...

  7. SpringBoot 整合 Docker

    最近备忘录新加的东西倒是挺多的,但到了新环境水土不服没动力去整理笔记 1. Demo Project 首先准备一个简单的项目,用来部署到 Docker 主机上,并且能验证该项目是否成功运行 1.1 接 ...

  8. java自定义序列化

    自定义序列化 1.问题引出 在某些情况下,我们可能不想对于一个对象的所有field进行序列化,例如我们银行信息中的设计账户信息的field,我们不需要进行序列化,或者有些field本省就没有实现Ser ...

  9. 大爽Python入门教程 3-3 循环:`for`、`while`

    大爽Python入门公开课教案 点击查看教程总目录 for循环 可迭代对象iterable 不同于其他语言. python的for循环只能用于遍历 可迭代对象iterable 的项. 即只支持以下语法 ...

  10. eclipse下的python环境安装

    添加python开发环境到eclipse:   点击help--install New Software 点击add,弹出新窗口: Name:填PyDev Location:填 http://pyde ...