什么是docker
先摘抄一段话说一下什么是docker:
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
docker的优点
从前端开发到项目的部署学习了很多服务端知识,对于docker的学习要从公司开发的一个电子合同平台开始,也是公司人员的欠缺使得开发者也参与项目的部署,部署方案大概就是用docker的统一部署,也方便之后的项目整体迁移。学习docker之后让我感觉docker作为服务端部署工具意义重大,结合网上查阅的资料总结docker的优点如下:
一致的运行环境
开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这类问题。
更轻松的迁移
由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。
更方便的运维管理
用docker统一进行服务管理,很快速的查看、启动、关闭程序,如服务器上装有node端口3000 php端口8088 nginx端口80 apache端口8090 还有一些数据库的 mysql3306 用docker就很方便的统一命令对他们进行管理
docker 安装nginx
进入正题,说一下docker安装nginx,由于nginx作为静态资源服务器优点突出,因此作为常常用它作为web服务器。docker安装nginx的hello wold很是简单列一下步骤
- 查看可用版本:docker search nginx
- 取最新版的 Nginx 镜像:docker pull nginx:latest
- 查看本地镜像:docker images
- 运行容器:docker run --name nginx-test -p 8080:80 -d nginx
- 安装成功访问 curl localhost:8080
helloworld已经安装完成,但是咱们安装的nginx,大多都是需要我们进行配置。修改nginx.conf文件,
方法一:就是进入容器内部修改对应的文件 docker attach 1e560fca3906
方法二:就是用docker run 的 -v 命令进行映射这样修改服务器文件 对应文件就一起修改了
详细说一下方法二 以nginx安装为例
- 创建一个容器名为nginx-test (该服务只为复制conf文件)
docker run --name nginx-test -p 8080:80 -d nginx
- 创建服务nginx目录和映射文件
mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf ~/nginx/conf.d
- 拷贝文件
docker cp 7e9ff3dc701d:/etc/nginx/conf.d/default.conf ~/nginx/conf.d docker cp 7e9ff3dc701d:/etc/nginx/nginx.conf ~/nginx/conf
- 运行并添加映射
docker run -d -p 80:80 --name runoob-nginx-web -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx -v ~/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf nginx
这样咱们的nginx/www目录就是容器内的 html路径,也是默认的根路径 修改配置也只修改nginx/conf.d/default.conf文件。
docker 其他常用命令
查看镜像:docker images
查看所有容器 docker ps -a
查看运行中容器 docker ps
容器启动 docker start 容器Id
停止容器 docker stop 容器Id
删除容器 docker rm -f 容器Id
容器重命名 docker rename 原容器名 修改容器名
进入容器 docker attach 容器Id(不推荐) docker exec -it 容器Id /bin/bash(推荐)
离开容器 docker exec(不推荐) exit(推荐)
打包镜像 docker save 镜像id> /root/nginx.tar
加载镜像 docker load < /root/nginx.tar
打包容器 docker export 容器id > ubuntu.tar
导入容器 cat docker/ubuntu.tar | docker import - test/ubuntu:v1