【应用容器引擎】Docker笔记
一.Docker是什么?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化。它是一个轻量级容器技术。
二.Docker应用场景
Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
三.核心概念
Docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
Docker客户端(Client):连接docker主机进行操作;
Docker仓库(Registry):用来保存各种打包好的软件镜像;
Docker镜像(Images):软件打包好的镜像;放在docker仓库中;
Docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用.
四.为什么要用Docker
1、简化程序:Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
2、避免选择恐惧症:如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
3、节省开支:一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
五.如何使用Docker
1.docker的安装并启动(这里使用CentOS7安装的)
(1)查看当前linux的内核版本(Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。)
uname -r
如下图所示:

(2)如果内核版本过低,可以更新系统(更新软件和系统)
yum -y update
(3)安装Docker(默认安装路径是/var/lib/docker)
yum install docker
(4)安装完成后启动Docker进程
systemctl start docker
(5)查看Docker版本号
docker -v
如下图所示:

(6)Docker设置开机自启
systemctl enable docker
2.Docker命令(想了解全部命令的话可以参考其官方文档)
输入 docker 命令来查看到 Docker 客户端的所有命令选项(通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法)
.Docker的镜像操作
(1)查看镜像(查看docker仓库中的mysql)
docker search mysql
(2)下载镜像(下载mysql)
docker pull mysql
(3)使用 docker images 来列出本地主机上的镜像。(如下图)

REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
(4)删除指定id的镜像
docker rmi image-id
4.Docker容器操作(以下列举额的都是常见的操作)
软件镜像——运行镜像——产生一个容器(正在运行的软件)
常见的容器操作:
(1)运行容器(可以不自定义名字,可能需要某些参数,例如mysql需要MYSQL_ROOT_PASSWORD):(一个镜像可以启动多个容器)
docker run --name 自定义运行后容器的名字 -d 镜像的名字:镜像的标签
(2)查看运行中的容器(搭配参数-a可以看到全部容器):
docker ps
如下图:

其中CONTAINER ID是容器的ID
NAMES是容器的名字
(3)停止运行当前容器
docker stop CONTAINER ID/NAMES
(4)删除容器
docker rm CONTAINER ID
(5)端口映射(在启动的时候添加端口映射:-p是将主机的端口映射到容器内部的端口 -d是后台运行)
docker run --name -d -p 8081:8080 镜像的名字:镜像的标签
(6)查看容器日志
docker logs CONTAINER ID/NAMES
(7)进入容器
docker exec -it mysql /bin/bash
(8)docker inspect : 获取容器/镜像的元数据。
(9)docker system prune:清理未使用的容器数据。
【应用容器引擎】Docker笔记的更多相关文章
- 你不得不了解的应用容器引擎---Docker
最近突然想搭一个redis集群玩玩,因为公司的电脑同时开2个虚拟机就卡的不行,所以我就想到用Docker开启多个redis-server来搭建.然后在网上找着找着发现,使用Docker,哪需要搭建啊, ...
- 【开发工具 docker】值得学习的应用容器引擎docker安装
概述: Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何 ...
- Java框架Spring Boot & 服务治理框架Dubbo & 应用容器引擎Docker 实现微服务发布
微服务系统架构实践 开发语言Java 8 框架使用Spring boot 服务治理框架Dubbo 容器部署Docker 持续集成Gitlab CI 持续部署Piplin 注册中心Zookeeper 服 ...
- Kubernetes将弃用Docker!与 containerd容器引擎
时间戳:2022-06-07 20:32:19 星期二 撰写文档参考:(阿良-腾讯课堂)Kubernetes将弃用Docker 参考博客k8s入坑之路(3)containerd容器 container ...
- Docker笔记(八):数据管理
前面(哪个前面我也忘了)有说过,如果我们需要对数据进行持久化保存,不应使其存储在容器中,因为容器中的数据会随着容器的删除而丢失,而因通过将数据存储于宿主机文件系统的形式来持久化.在Docker容器中管 ...
- Docker笔记(九):网络管理
Docker的应用运行在容器中,其相互之间或与外部之间是如何通信的,涉及到哪些知识点,本文对相关内容进行整理.因网络这块牵涉的面较多,因此只从日常使用或理解的角度出发,过于专业的就不深入探讨了. 1. ...
- Docker笔记(十一):Dockerfile详解与最佳实践
Dockerfile是一个文本文件,包含了一条条指令,每条指令对应构建一层镜像,Docker基于它来构建一个完整镜像.本文介绍Dockerfile的常用指令及相应的最佳实践建议. 1. 理解构建上下文 ...
- 史上最全面的Docker容器引擎使用教程
目录 1.Docker安装 1.1 检查 1.2 安装 1.3 镜像加速 1.4 卸载Docker 2.实战Nginx 3.Docker命令小结 4.DockerFile创建镜像 4.1 Docker ...
- Centos7下安装与卸载docker应用容器引擎
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...
随机推荐
- swift模式和模式匹配
模式和模式匹配 模式: 代表单个或者复合值得结构,也就是说模式不是一个特定的值,它是一种抽象的结构,[一句话,不是特指,是泛指].这样就可以用模式来匹配各种各样的值. 例如:(x,y)可以匹配元祖(1 ...
- oj.1677矩形嵌套,动态规划 ,贪心
#include<iostream> #include<algorithm> #include<cstring> using namespace std; stru ...
- leetcode-easy-dynamic-53 Maximum Subarray
mycode 66.85% class Solution(object): def maxSubArray(self, nums): """ :type nums: L ...
- leetcode 83删除排序链表中的重复元素
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...
- 搭建SVN服务器时报错:0x80004002
一.错误信息 Cannot query proxy blanket: no such interface supported (0x80004002) 二.解决方案 这个错误只会在有NVIDIA独立显 ...
- flutter routes跳转
flutter可以通过push pop跳转到上一级或者下一级 基本push跳转方法 此时仍然有返回按钮 Navigator.push( context, MaterialPageRoute( buil ...
- Kafka集群搭建和配置
Kafka配置优化 https://www.jianshu.com/p/f62099d174d9 1.安装&配置 下载tar包 解压后即可使用 修改配置文件 将server.propertie ...
- upd通讯Recvfrom设置阻塞不起作用
把自己踩到的坑记录一下,在做UDP通讯的时候,发现自己的程序没有收数据居然也有百分之十二的cpu占用率,通过性能分析工具了解到时recvfrom函数一直在执行,虽然设置阻塞并且确认成功了, ;//阻塞 ...
- lua基础学习(一)
设计目的: 为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. 特性: 1.编译之后仅仅100k,可以很方便嵌入别的程序里. 2.可扩张性,Lua提供了非常易于使用的扩展接口和机制:由宿 ...
- 关于add migration 报错的问题解决方案
The current CSharpHelper cannot scaffold literals of type 'Microsoft.EntityFrameworkCore.Metadata.In ...