参考地址
什么是docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。不仅对文件,对网络端口、进程都封装隔离,区别于虚拟机,不涉及操作系统,用的是宿主的内核
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
安装docker
- windows:
- 卸载旧版本
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
- 查看仓库中所有docker版本,并选择特定版本
yum list docker-ce –showduplicates | sort –r
yum install docker-ce-17.12.1.ce
- 启动docker并设置开机启动
systemctl start docker
systemctl enable docker
- 验证docker安装是否成功
docker version
- mac
brew cask install docker
docker --version
Docker 是一个典型的 C/S 架构的应用
项目中的应用
创建镜像前准备:
1. 配置daemon.json
docker安装后默认没有daemon.json这个配置文件,需要进行手动创建。配置文件的默认路径:/etc/docker/daemon.json 需要配置上私有库的地址
如果用的是mac,需要给docker加注册地址
2. docker info查看安装信息
比如想看docker镜像存储的目录 docker info | grep "Docker Root Dir"
3. 创建镜像
- 编写Dockfile
# 设置基础镜像
FROM nginx:1.17.6
# 定义作者
MAINTAINER Jean
RUN mkdir -p /etc/nginx/logs/ && touch /etc/nginx/logs/access.log \
&& mkdir -p /app/Argus/ \
&& mkdir -p /app/nginx/ssl/_.chinaamc.com/ \
&& apt-get update && apt-get install -y procps \
&& apt-get install -y vim
# 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面
COPY ./dist /app/dist
COPY nginx.conf /etc/nginx/nginx.conf
COPY ./https-key/ /app/nginx/ssl/_.test.com/
# CMD ["nginx", "-g", "daemon off;"]
- 创建镜像 docker build -t test -f ./Dockerfile-test .
- 创建容器 docker run --name test-container -p 443:443 -d d292f588a09f
docker ps -a 查看所有容器 如果创建失败,
docker logs 容器id
可以手动复制 docker cp ./nginx.conf e21aba3e3387:/etc/nginx/nginx.conf
如果创建成功,状态是 Up
- 进入容器 docker exec -it e21aba3e3387 /bin/bash
- 对容器的操作 docker start/stop/restart/rm 容器id
- 创建tag docker tag d292f588a09f 1.2.3.158/web-front/test:0.1
4. 推送镜像到远程
- 首先,保证登陆远程私有库 docker login 1.2.3.158
- 将本地创建的tag推送到远程 docker push 1.2.3.158/web-front/test:0.1
- 远程查看 咱们docker库的远程地址是:http://1.2.3.158/harbor/
5. 拉取远程镜像
一样的,需要先登陆上去,然后pull,如果拉取和部署不在同一服务器上,需要将镜像保存成jar,然后再加载
- 拉取镜像 docker pull 1.2.3.158/web-front/test:0.1
- 保存镜像为文件 docker save -o web.tar web-front/work
- 将*.tar拷贝至目标内网服务器中
- 加载镜像 docker load < web.tar
docker与kubernetes(k8s)
Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。
使用Kubernetes可以:
- 自动化容器的部署和复制
- 随时扩展或收缩容器规模
- 将容器组织成组,并且提供容器间的负载均衡
- 很容易地升级应用程序容器的新版本
- 提供容器弹性,如果容器失效就替换它,等等.
前端一般要配合nginx使用
1、常用命令
nginx -t
nginx -v
nginx -c
nginx -s reload/stop
2、平滑重启
启动前先nginx -t -c aa.conf 看配置文件是否正确,再nginx -s reload
3、https
首先看需求是否要将80跳转成443,rewrite
然后将ssl证书放到目录中,在nginx设计ssl对应路径
ssl_certificate /app/nginx/ssl/***/***.cer;
ssl_certificate_key /app/nginx/ssl/***/***.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;