Docker快速上手入门
Docker
什么是Docker?
Docker就是一种虚拟化的技术
可以通过Docker快速的下载使用第三方技术,方便搭建环境
目的:Securely build,share and run any application,anywhere(在任何地方安全地构建、共享、运行任何应用)
为什么选择Docker?
更高效利用系统资源
不需要硬件虚拟及运行完整操作系统
更快速的启动时间
一致的运行环境
持续交付和部署
更轻松的迁移


Docker组件
C/S架构

镜像与容器
镜像是构建Docker的基石,用户基于镜像运行自己的容器
镜像是容器的模板
镜像是容器的类
主要作用是构建和打包
容器是基于镜像启动的
容器是镜像的实例
主要作用是启动和执行
注册中心
用来保存用户构建的镜像
公共:DockerHub(类似github)
私有
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
由一系列命令和参数构成的脚本,应用于基础镜像并最终创建一个新的镜像
- 对开发:提供完全一致的开发环境
- 对测试:直接拿开发构建的镜像开始工作
- 对运维:实现应用的无缝移植
常用命令
| 命令 | 作用 |
|---|---|
| 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私有仓库
搭建与配置
docker pull registry:拉取私有仓库的镜像
docker run -di --name=registry -p 5000:5000 registry:启动私有仓库容器
修改/etc/docker/daemon.json(设置信任)
{"insecure-registres":["192.168.10.101:5000"]}systemctl restart docker:重启docker服务
docker start registry:启动容器
上传至私有仓库
打标签:docker tag jdk1.8 192.168.10.101:5000/jdk1.8
上传:docker push 192.168.10.101:5000/jdk1.8
Docker快速上手入门的更多相关文章
- smarty半小时快速上手入门教程
http://www.jb51.net/article/56754.htm http://www.yiibai.com/smarty/smarty_functions.html http://www. ...
- [Docker]Docker快速上手学习笔记
0. 学习的一些疑问 如何热更新镜像(images)?(你可以快速启动或者销毁容器.这种时间几乎是实时的) 如何热更新游戏服? 好处在于各个应用之间环境相互独立,即使某一个容器崩溃也不会影响到其它容器 ...
- Docker快速上手之搭建SpringBoot项目
Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期 ...
- Docker快速上手之部署SpringBoot项目
Docker是基于Go语言实现的云开源项目. Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装.分发.部署.运行等生命周期 ...
- docker 快速上手
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口 安装 docker 设置仓库 $ sudo yum install -y yum-utils $ sudo yum-conf ...
- R中的data.table 快速上手入门
data.table包提供了一个非常简洁的通用格式:DT[i,j,by]. 可以理解为:对于数据集DT,选取子集行i,通过by分组计算j. 对比与dplyr等包,data.table的运行速度更快. ...
- 必会技能!Docker助你快速上手玩转HBase!
前言:本文主要讲述了如何使用Docker快速上手HBase,省去繁杂的安装部署环境,直接上手,小白必备.适合HBase入门学习及简单代码测试. 1. Docker 安装 参考地址: https://y ...
- smarty 快速上手
smarty半小时快速上手入门教程 投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-10-27我要评论 这篇文章主要介绍了smarty半小时快速上手入门教程,以实例的形 ...
- 【干货合集】Docker快速入门与进阶
收录待用,修改转载已取得腾讯云授权 Docker 在众多技术中,绝对是当红炸子鸡.这年头,如果你不懂一点容器,不学一些Docker,还怎么出去跟人炫耀技术? Docker 也是云计算技术中较为热门的一 ...
随机推荐
- 0x04
二分: while(l<r) { int mid=(l+r)/2; if(符合条件) r=mid; else l=mid+1; } 固定下二分的写法: 终止条件:l==r: 取mid=(l+r) ...
- hdu 1166 敌兵布阵(简单线段树or树状数组)
题意: N个工兵营地,第i个营地有ai个人. 三种操作: 1.第i个营地增加x个人. 2.第i个营地减少x个人. 3.查询第i个到第j个营地的总人数. 思路: 线段树or树状数组 代码:(树状数组) ...
- Zabbix webhook 自定义报警媒介
场景一:使用企业微信机器人报警 图中的token是:在群组中添加机器人,机器人的webhook地址的key var Wechat = { token: null, to: null, message: ...
- openstack 后期维护(四)--- 删除僵尸卷
前言: 在长时间使用openstack之后,删除虚机后,经常会有因这样那样的问题,导致卷处于僵尸状态,无法删除! 状态一: 虚机已近删除,然而卷却挂在到了 None上无法删除 解决办法: 1.# ci ...
- 开发属于自己的包,并上传到npm上
1.DIY开发包 1.1符合标准的包结构 一个规范的包,它的组成结构,必须符合以下3点要求: 包必须以单独的目录而存在 包的顶级目录下,必须包含package.json这个包管理文件 package. ...
- Oracle Error while trying to retrieve text for error ORA-01804
我在Linux上编译C++程序,有这个错误. 本机情况: Linux上Oracle的安装情况,服务器上有两个Client版本.我在Makefile中使用了高版本的动态库. 原因: 1.首先排查下 tn ...
- C# WINFORM进销存系统开发(内涵免费源码+部分实操视频讲解)
互联网的时代,电商火爆,大家都开始进行线上销售货品,那你是如何管理你的商品库存和进销问题?软积木--小敏用的是C# WINFORM进销存系统来管理我的数据,给我带来了很多便利. 它是高频需求项目,很多 ...
- win10开机自启
所有用户的开机自启文件夹 英文路径 # ProgramData目录是隐藏的 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 中 ...
- [hdu6326]Monster Hunter
考虑树是以1为中心的菊花图的情况,也即如何安排打怪兽的顺序 用二元组$(a,b)$来描述怪兽,则对于两个怪兽$(a_{1},b_{1})$和$(a_{2},b_{2})$,交换两者不会影响血量的变化量 ...
- [cf1495F]Squares
令$nex_{i}=\min_{i<j,p_{i}<p_{j}}j$(即$i$的第2类边),若不存在此类$j$则$nex_{i}=n+1$ 建一棵树,其以0为根,且$1\le i\le n ...