Docker 初探

本贴最后更新于 3437 天前,其中的信息可能已经物是人非

原则

  • 不是虚拟机,而是带独立文件系统、网络的进程(Container not VM)
  • 如果在 container 中创建进程,则该进程跑在 host 上
  • 使用非 root 用户运行容器(在 Dockerfile 中先创建用户)
  • Dockerfile 中尽量减少层,比如 RUN 后的命令进行 && 合并

安装

使用 docker 官方在线脚本进行安装:curl -sSL https://get.docker.com/ | shwget -qO- https://get.docker.com/ | sh

docker run

  • -u {username} 以指定用户运行容器。为安全起见,一定不要用 root 用户跑容器。
    在 Dockerfile 中 RUN useradd {username} 建立用户,host 上也建立一个相应用户。
  • -v /host:/container 挂载 host 目录到容器中,要挂载多个目录的话 -v 多次。
  • -p ip:hostPort:containerPort 将容器使用的端口暴露到 host 端口上,要暴露多个端口的话 -p 多次。

体验

  • Docker 降低了应用的更新/部署难度,Dockerfile -> Image -> Pull -> Run
  • Docker Hub 集成了 GitHub,项目代码提交后自动构建 Image
  • 从 Docker Hub 上 pull 略慢,但总的来说效率还是高于手工部署的方式且不易出错
  • 使用最新 Docker,以前的坑大(比如 1.2 前 pull 失败会 stop 容器)
  • Wide 的 Dockerfile
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    476 引用 • 899 回帖 • 3 关注

相关帖子

2 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone

    只会弄弄简单的,这些复杂的留给你们大神吧。

  • someone

    [em01]