飞污熊博客

静下心来做一件事

这一篇学习容器之间、容器和外界之间怎样相互通信。Docker 网络从覆盖范围可分为单主机的容器网络和跨主机的容器网络, 本章重点讨论前一种。对于更为复杂的多主机容器网络,后面的文章会专门讲。

阅读全文 »

这一篇学习容器的各种操作,容器的状态之间如何转换,以及实现容器的底层技术。

运行容器

1
docker run -d --name "node001" httpd

查看当前正在运行的容器

1
2
docker ps
docker container ls
阅读全文 »

前面已经学会怎样构建镜像了,这一章介绍怎样分发镜像给多个Docker Host使用, 可以通过复制Dockerfile、将镜像上传至公共Registry、搭建私有Registry三种方式。

这里将后面两种方式,怎样使用公共Registry和搭建私有Registry。

阅读全文 »

镜像是 Docker 容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。

如果我们想要创建自己的镜像,肯定要先了解镜像的内部结构。

hello-world 是 Docker 官方提供的一个镜像,通常用来验证 Docker 是否安装成功。 我先从这个最小镜像开始说下,之前已经把它下载下来了。

hello-world 的 Dockerfile 内容如下:

1
2
3
FROM scratch    # 此镜像是从白手起家,从 0 开始构建。
COPY hello / # 将文件"hello"复制到镜像的根目录。
CMD ["/hello"] # 容器启动时,执行 /hello

镜像 hello-world 中就只有一个可执行文件 “hello”,其功能就是打印出 “Hello from Docker ……” 等信息。

阅读全文 »

Docker 的核心组件包括:

  1. Docker 客户端 - Client
  2. Docker 服务器 - Docker daemon
  3. Docker 镜像 - Image
  4. Docker 注册中心 - Registry
  5. Docker 容器 - Container(镜像的运行实例)

Docker 架构图如下:

Docker 采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。 客户端和服务器可以运行在同一个 Host 上,客户端也可以通过 socket 或 REST API 与远程的服务器通信。

阅读全文 »

容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。 开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。

可以将容器想象成运输行业中的集装箱,Docker 将集装箱思想运用到软件打包上,为代码提供了一个基于容器的标准化运输系统。 Docker 可以将任何应用及其依赖打包成一个轻量级、可移植、自包含的容器。容器可以运行在几乎所有的操作系统上。

其实,”集装箱” 和 “容器” 对应的英文单词都是 “Container”。”容器” 是国内约定俗成的叫法, 可能是因为容器比集装箱更抽象,更适合软件领域的原故吧。Docker 的 Logo 不就是一条鲸鱼上面一堆集装箱吗?

第一篇我先搭建实验环境,尽快让一个容器运行起来,我使用的操作系统是CentOS7.2,安装的是免费的社区版CE。

阅读全文 »

今天一个传递依赖问题搞了我半天,终于搞明白原因了。一个jar包A依赖了httpclient,然后另一个jar包B引入A, 在IDEA里面只能看到依赖A,不管咋样都看不到依赖httpclient。

我在IDEA的项目B里面,打包后在控制台发现一个告警:

1
2
the POM for A is invalid, transitive dependencies (if any) will not be available, 
enable debug logging for more details

原来是jar包A的pom依赖有问题。

阅读全文 »