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. 机器人的运动范围 牛客网 剑指Offer

    机器人的运动范围 牛客网 剑指Offer 题目描述 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大 ...

  2. 国产新芯片连不上J-Link?芯海CS32L010系列芯片JLink配置方法

    疫情以来芯片供货紧张,特别是ST的MCU一芯难求.所以很多产品不得不切换成国产.不过也是经过使用后才发现,很多国产芯片的性能还是挺好的.由于芯片比较新,官方J-Link还没有支持,所以调试和烧录有些不 ...

  3. linux系列之: 你知道查看文件空间的两种方法吗?

    目录 简介 du命令 df命令 总结 简介 linux系统中查看文件空间大小应该是一个非常常见的命令了,今天给大家介绍linux系统中查看文件空间的两种方法和在使用中可能会遇到的奇怪问题. 为什么会有 ...

  4. this.$set用法

    this.$set()的主要功能是解决改变数据时未驱动视图的改变的问题,也就是实际数据被改变了,但我们看到的页面并没有变化,这里主要讲this.$set()的用法,如果你遇到类似问题可以尝试下,vue ...

  5. jmeter压测IP欺骗绕过服务端限流

    1.环境声明 jmeter3.0 后端为内网环境 2.检查内网闲置的ip 工具地址,无需复杂安装,解压点击就可以用啦~~ https://pan.baidu.com/s/1Yzs1vezfFMoy-m ...

  6. mbatis动态sql中传入list并使用

    <!--Map:不单单forech中的collection属性是map.key,其它所有属性都是map.key,比如下面的departmentId --> <select id=&q ...

  7. flower 指定app

    flower 指定app # tasks.py from celery import Celery celery = Celery(broker="amqp://", backen ...

  8. SpringCloud升级之路2020.0.x版-33. 实现重试、断路器以及线程隔离源码

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 在前面两节,我们梳理了实现 Feign 断路器以及线程隔离的思路,并说明了如何优化目前的负 ...

  9. 开发中常见的@NotNull,@NotBlank,@NotEmpty注解的区别

    开发中常看见@NotNull,@NotBlank,@NotEmpty三个注解,但却没有深入了解过,下面介绍一下他们的应用场景和区别 @NotNull:主要用在基本数据类型上(Int,Integer,D ...

  10. Effective Python(3)- 了解 bytes 与 str 的区别

    Python 有两种类型可以表示字符序列 bytes:实例包含的是原始数据,即 8 位的无符号值(通常按照 ASCII 编码标准来显示) str:实例包含的是 Unicode 码点(code poin ...