一、Docker概述:

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器 [2]

Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发,
源代码托管在 Github 上, 遵从Apache2.0协议开源。Docker的目标是实现轻量级的操作系统虚拟化解决方案。

学习Docker首先要了解几个概念:

镜像—Docker的镜像和常见的系统ISO镜像类似,包含了应用程序的信息;

容器—容器相当于一个可以运行起来的虚拟机,应用程序运行在容器中,Docker运行在“Docker”上;

仓库—仓库是存放镜像的地方,有类似git的版本控制,同样分为公开仓库(Public)和私有仓库(Private)两种形式;

Docker支持大部分的Linux发行版,通过使用Docker容器,就可以在不同的操作系统,

不同的机器上运行自己的应用,不用关心硬件、运行环境之类的配置,应用程序的迁移变得非常简单。

二、Docker和传统虚拟化技术的对比

相比传统虚拟机技术,Docker资源占用少,启动更快,很大的方便了项目的部署和运维。
Docker是在操作系统层面上实现虚拟化,复用本地主机的操作系统,传统方式是在硬件的基础上,虚拟出多个操作系统,然后在系统上部署相关的应用。

下面的这张图片参考相关博文,很形象的说明了Docker和VM之类的传统虚拟化技术的区别:

docker搭建前端开发 docker是前端还是后端_docker

 vs

docker搭建前端开发 docker是前端还是后端_docker_02

 

就像一个集装箱一样,不管需要运送服装还是化工产品,还是汽车,只需要放在集装箱里面,不管到那个船上,也不管到那个铁路上,我直接机械化的搬运就行了。很简单。

三、实践

Linux 下的 Docker 安装与使用

一、安装与配置

1.安装依赖包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2.设置阿里云镜像源

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.安装 Docker-CE

  • 重建 Yum 缓存。
  • 安装 Docker-CE ,请执行一下命令进行安装:sudo yum install docker-ce

4.启动 Docker-CE

sudo systemctl enable docker 

sudo systemctl start docker

二、配置 Docker 容器与镜像

拉取微软在 Docker 上的 aspnetcore 镜像:

docker pull microsoft/aspnetcore

之后执行以下命令查看是否拉取成功:docker images

docker搭建前端开发 docker是前端还是后端_docker_03

Docker 安装 Nginx

docker pull nginx 命令安装

nginx 部署

首先,创建目录 nginx, 用于存放后面的相关东西。


$ mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf


拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器 ID 可以查看 docker ps 命令输入中的第一列:


docker cp 6dd4380ba708:/etc/nginx/nginx.conf ~/nginx/conf


  • www: 目录将映射为 nginx 容器配置的虚拟目录。
  • logs: 目录将映射为 nginx 容器的日志目录。
  • conf: 目录里的配置文件将映射为 nginx 容器的配置文件。

docker搭建前端开发 docker是前端还是后端_docker搭建前端开发_04

部署命令


$ docker run -d -p 8082:80 --name runoob-nginx-test-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


命令说明:

  • -p 8082:80: 将容器的 80 端口映射到主机的 8082 端口。
  • --name runoob-nginx-test-web:将容器命名为 runoob-nginx-test-web。
  • ~/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。
  • -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。
  • -v ~/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。

      将容器的 9090端口映射到了主机的默认80端口,如果你之前没有用过docker而是装了nginx直接放前端项目这里你需要注意的是你要停掉或者换掉nginx web服务指向的80端口不然会被占用,之所以我要用80 端口是因为我不想在域名后面加上端口号码

 

docker搭建前端开发 docker是前端还是后端_nginx_05

然后在/nginx/conf/nginx.conf 中配置nginx相关配置

docker搭建前端开发 docker是前端还是后端_nginx_06

 

相关命令

如果要重新载入 NGINX 可以使用以下命令发送 HUP 信号到容器:

$ docker kill -s HUP container-name

  • 重启 NGINX 容器命令: $ docker restart container-name

Docker 常用命令

1.拉取镜像

docker pull

2.删除容器

docker rm <容器名 or ID>

3.查看容器日志

docker logs -f <容器名 or ID>

4.查看正在运行的容器

docker ps
docker ps -a # 为查看所有的容器,包括已经停止的。

5.删除所有容器

docker rm $(docker ps -a -q)

6.停止、启动、杀死指定容器

docker start <容器名 or ID> # 启动容器
docker stop <容器名 or ID> # 启动容器
docker kill <容器名 or ID> # 杀死容器

7.查看所有镜像

docker images

8.拉取镜像

docker pull <镜像名:tag>
# 例如以下代码
docker pull sameersbn/redmine:latest

9.后台运行

docker run -d <Other Parameters>
# 例如
docker run -d -p 127.0.0.1:33301:22 centos6-ssh

10.暴露端口

# 一共有三种形式进行端口映射
docker -p ip:hostPort:containerPort # 映射指定地址的主机端口到容器端口
# 例如:docker -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口
docker -p ip::containerPort # 映射指定地址的任意可用端口到容器端口
# 例如:docker -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口
docer -p hostPort:containerPort # 映射本机的指定端口到容器的指定端口
# 例如:docker -p 3306:3306 # 映射本机的3306端口到容器的3306端口