Docker学习笔记

Docker简介

tourist/TOIMGaf9421117080724N.png
基于Go语言开发的开源项目

官网:https://www.docker.com/

文档地址:https://docs.docker.com/

仓库地址:https://hub.docker.com/

Docker为什么会出现?

叶檀财经:开发 —> 上线 两套环境!

开发 ··· 运维 问题:项目在我的电脑上可以运行

环境配置是十分麻烦的,每一个机器都需要部署集群,费时费力

我们发布一个(jar + (Redis、Mysql、jdk … )),项目能不能都带上环境打包部署

传统:开发jar,部署上线运维来做

现在:开发打包部署上线一条龙服务

Docker 给以上问题,提出了解决方案

Docker的核心思想

隔离机制:

例子:水果,生化武器

通过隔离机制,可以将服务器利用到极致

Docker的历史

2010年,几位怀揣着梦想的年轻人,创立了一家公司DotCloud,公司起初做的业务为即"DotCloud Paas"平台即服务供应商,底层技术上,dotCloud采用了Linux容器技术。为了方便创建和管理这些容器,dotCloud开发了一套自己的内部工具,Docker这就这样诞生的!

2013年,dotCloud业务发展并不景气,为了寻求新的突破,将Docker开源并公司重新命名为Docker,放弃了dotCloud平台,怀揣着"将Docker和容器技术推向全世界"的使命,开启了一段新的征程。

2014年,Docker1.0发布。

2018年,公司估值已为惊人的13亿美元

Docker为什么这么火?

Docker与传统虚拟机Vmware类比:

VM:隔离 需要开启多个虚拟机 每个虚拟机大小为几G不等 启动时间长达"几分钟"

Docker:隔离 镜像(最核心的环境 4m + jdk + mysql …)十分小巧,运行镜像就可以了 启动时间为"秒级"

Docker与JVM类比:

JVM:一次编译到处运行

Docker:一次构建到处运行

Docker能干嘛?

应用更快速的交付和部署

传统:环境部署,一堆帮助文档,安装配置运行

Docker:打包发布镜像测试,一键运行

更便捷的升级和扩缩容

使用Docker之后,部署应用升级就好比搭积木。

项目打包为一个镜像,需要扩展就直接复制粘贴到另一个服务器。

更简单的系统运维:

容器化之后,我们的开发、测试环境都是高度一致的。

更高效的计算机资源利用:

Docker是内核级别的虚拟化,可以在一个服务器上运行很多容器实例,把服务器性能利用到极致。

Docker安装与使用

参考文档:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

# 1、需要的安装包
yum install -y yum-utils

# 2、设置下载镜像的仓库(这里我们使用国内镜像仓库)
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo # 默认是国外的
yum-config-manager \
	--add-repo \
	http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 阿里云镜像地址
	# 2.1在 vim /etc/docker/daemon.json 添加镜像
  {
"registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com/","https://docker.mirrors.ustc.edu.cn/","https://hub-mirror.c.163.com","https://registry.docker-cn.com"]

# 3、安装Docker引擎 docker-ce 社区版 | docker-ee 企业版(这里安装最新版本)
yum install docker-ce docker-ce-cli containerd.io
	# 安装指定版本Docker
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

# 4、启动与停止Docker
systemctl start docker
systemctl stop docker

# 5、查看Docker当前版本号
docker --version

# 6、启动 hello world
docker run hello-world
1. Unable to find image 'hello-world:latest' locally # 没有找到 hello world
2. latest: Pulling from library/hello-world # 自动拉取镜像

# 7、查看下载的 hello world 镜像
docker images

# 8、卸载Docker
	# 卸载依赖
 1. yum remove docker-ce docker-ce-cli containerd.io
 	# 删除资源
 2. rm -rf /var/lib/docker
 
 # 9、Docker默认工作路径
 /var/lib/docker
 # 列出本机的所有容器文件。
docker image ls
docker images
# 删除容器文件
docker image rm [imageName]
# 查看当前正在运行的容器
docker ps# 列出本机正在运行的容器
docker ps -a  # 列出本机所有容器,包括终止运行的容器
# 手动从仓库中拉取镜像文件
docker image pull library/hello-world # 默认为最新版本

示例

一:安装nginx

# 从官网拉取nginx镜像
docker pull nginx

# 查看镜像库
docker images

# 使用nginx镜像创建nginx容器实例
docker run --name nginx-test -p 8080:80 -d nginx
	# run 创建容器实例
	# -- name 容器命名
	# -v 映射目录
	# -p 本机端口映射 将容器的80端口映射到本机的80端口
	# -d 设置容器后台运行
	# 语句最后一个nginx是使用镜像的名称

# 停止nginx容器
docker stop nginx-test
	
# 启动nginx容器
docker start nginx-test

二:将nginx关键目录映射到本机

# 在本机上创建目录
mkdir -p /root/nginx/www /root/nginx/logs /root/nginx/conf
	# www: nginx存储网站网页的目录
	# logs: nginx日志目录
	# conf: nginx配置文件目录
	
# 查看nginx容器ID
docker ps -a

# 将docker-test容器配置文件copy到本地
docker cp [容器ID]:/etc/nginx/nginx.conf /root/nginx/conf

# 创建新容器实例之前需要将当前正在运行的暂停(防止端口冲突)
docker stop [容器ID]

# 创建新nginx容器nginx-web,并将www,logs,conf目录映射到本地
docker run -d -p 8989:80 --name nginx-web -v /root/nginx/www:/usr/share/nginx/html -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log/nginx nginx

# 启动nginx
docker start nginx-web

# 在本机"www"创建docker首页 index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>docker</title>
</head>
<body>
    <h1>docker搭建nginx映射成功</h1>
</body>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值