Docker 基础(一)- 镜像、容器、仓库、数据卷以及常用命令

Build, ship and run any App, Anywhere.

一次镜像,处处运行。从搬家到搬楼。

为什么需要 docker

传统上认为,如软件开发测试完成之后,所产生的成果即是程序或者是能够执行的二进制字节码等。而为了让这些程序能够顺利执行。开发团队也要准备完整的部署文件,让运维团队得以部署应用程序,开发需要清楚地告诉部署团队,用的全部的部署文件以及所有的软件环境。不过即便如此,仍然会常常发生部署失效的问题。Docker的出现使得它得以打破 “程序即应用” 的观念。通过 “镜像” images 将应用程序及其所需要的系统环境,由下而上打包,达到应用的跨平台间的无缝接轨目标。

Docker 官网Docker 镜像仓库Docker 文档


使用iptables实现端口转发

SSH 也能实现本机的端口转发,只不过原来的 1 条连接会变成 3 条。而 iptables 的端口转发则是在内核进行(netstat是看不到的),效率相对更高。下面介绍其典型的几种端口转发形式。

将本地的端口转发到本机端口

设置端口转发

将本机的 7777 端口转发到 6666 端口(该设置方式在机器重启之后失效):

1
root@host01$ iptables -t nat -A PREROUTING -p tcp --dport 7777 -j REDIRECT --to-port 6666


SSH隧道详解

场景一:本地端口转发实现跳板机

场景描述

想象一个业务场景,我的电脑想访问host03的9000端口,但是网络不通,但是我有host02的ssh登录权限,并且host02能够访问host03的9000端口,那么能不能通过host02作为跳板机直接让我的电脑访问host03:9000呢?

其实这个就是ssh本地端口转发的典型应用,可以实现跳板机的功能,如上图所示。


Java NIO - Netty 支持 WebSocket 详细案例以及深度优化方案

从简单案例开始

WebSocket 协议在握手阶段使用的是 HTTP 协议,握手成功后会升级(Upgrade)为双向通道,数据传输不再使用普通的字节流,而是使用名为 Frame(数据帧)的基本单位。Netty 贴心地为我们提供了很多开箱即用的编解码器,使得我们只需要几行配置就能搭建好它。以下是完整的服务端代码实现: