记录一下自己的学习过程,避免以后学起来一脸茫然
Docker 官网:www.docker.com
Docker是什么?
(Docker)容器是一个标准的软件单元,它将代码及其所有依赖关系打包,以便应用程序从一个计算环境快速可靠地运行到另一个计算环境。Docker容器映像是一个轻量级,独立的可执行软件包,包含运行应用程序所需的一切:代码,运行时,系统工具,系统库和设置。
Docker的应用场景
-
Web 应用的自动化打包和发布。
-
自动化测试和持续集成、发布。
-
在服务型环境中部署和调整数据库或其他的后台应用。
Docker的优点
- 1、简化程序:
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何平台上,实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。
- 2、让你不再无法选择:
Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
- 3、节省开支:
一方面,云计算时代到来,Docker使开发者不必为了追求效果而配置高额的硬件。Docker 与云的结合,不仅解决了硬件管理的问题,也改变了虚拟化的方式。
对比虚拟机
- 更小的体积
- 更快的启动速度
- 更方便的操作
- 更便捷的移植
如何安装
(以下仅为Mac安装等一系列操作)
Docker 官网:www.docker.com 直接下载
docker --version
复制代码
通过以上命令行进行校验是否已安装
镜像加速(必备操作)
由于国内网络问题,拉取镜像速度之慢无法忍受,需要配置加速器来解决,我使用的是网易的镜像http://hub-mirror.c.163.com(具体步骤如下)
可以通过以下命令进行验证加速器是否成功
docker info
复制代码
镜像的使用
Docker 允许在容器内运行应用程序, 使用 docker run
命令来在容器内运行一个应用程序。 比如:docker run ubuntu:16.04 /bin/echo 'hello my docker'
先解释下参数
-
docker: Docker的可执行命令。
-
run:配合 docker 运行一个容器。
-
ubuntu:16.04指定要运行的镜像
-
/bin/echo "Hello my docker": 在启动的容器里执行的命令
看上面的图中,可以发现 第二行
原因
Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。)
我们可以通过docker images
查看本地是否有镜像
最后下载完成后再次执行命令就可以看到有ubuntu16.04的镜像了
最后使用docker run ubuntu:16.04 /bin/echo 'hello my docker'
就可以成功输出我们想要的内容了
到此为止,是不是很简单,但是这些都没有什么大的作用。。。。接下来我们来做点有意义的事情(划重点,要考~~)
容器可以做什么
既然是容器,总要做点容器该做的事,比如跑一个程序
docker run -d ubuntu:16.04 /bin/sh -c "while true; do echo hello my docker; sleep 1; done"
复制代码
这里多了一个参数-d
- -d :让容器在后台运行
比较常用的命令行(详细的命令直接输入docker)
docker pull 镜像名 // 拉取镜像
docker run // 启动容器
docker ps // 查看应用容器
docker port // 查看应用容器的端口
docker top // 查看容器的进程
docker logs 容器ID // 查看容器的日志
docker stop 容器ID // 停止容器
docker start 容器ID // 重启容器
docker rm 容器ID //移除应用容器!!!(移除前必须先停止,否则会直接报错)
docker rmi 镜像ID //删除镜像
docker inspect 容器ID // 查看容器的底层信息
复制代码
Docker安装Nginx
1.查找 Docker Hub 上的 nginx 镜像
docker search nginx
2.拉取镜像
docker pull nginx
3.拉取完成后让我们运行一下
docker run --name nginx-test -p 8081:80 -d nginx
参数介绍:
- --name: 表示容器的名称
- -p: 表示将本地的8081端口映射到容器内部的80端口上(nginx默认80)
- -d:前面说过了,后台运行
运行结果如下:(返回一个容器ID)
127.0.0.1:8081
nginx 部署
-
首先,创建目录 nginx, 用于存放后面的相关东西。
mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf
www: 目录将映射为 nginx 容器配置的虚拟目录。
logs: 目录将映射为 nginx 容器的日志目录。
conf: 目录里的配置文件将映射为 nginx 容器的配置文件。
-
拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录
docker cp xxxxxxxxxxx:/etc/nginx/nginx.conf ~/nginx/conf
xxxxxx为容器ID
命令部署
docker run -d -p 8081:80 --name nginx-test-web -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx
命令说明: -v : 挂载到宿主目录上
例如:-v ~/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。
cd ~/nginx/www
创建一个index.html的文件
vim index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>docker初探</title>
</head>
<body>
<h1>Docker初探</h1>
<p>成功了!!!</p>
</body>
</html>
复制代码
保存刷新一下页面
非常简单对不对~~下次再安装点数据库,就可以直接跑测试了,哈哈哈哈哈~~~(手动狗头)