1. 安装docker

  系统centos 7.2

  yum -y install docker-io

  service docker start

  安装完毕后执行 docker version 或者docker info 查看docker 信息是否安装成功

2. 下载镜像

  执行命令 docker search centos 查看centos的镜像资源, 选择一个镜像

  执行 docker pull docker docker.io/centos 下载镜像, docker.io/centos 就是上条命令查询出来的镜像名

  执行 docker images 查看我们本地的镜像资源

3.运行镜像

  执行命令 docker run -it docker.io/centos /bin/bash ,  意思是使用image创建container并进入交互模式, login shell是/bin/bash

  docker start/stop/restart <container> :开启/停止/重启container
    docker start [container_id] :再次运行某个container
(包括历史container)
    docker attach [container_id]
:连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach
一个container实例)
    docker start -i <container>
:启动一个container并进入交互模式(相当于先start,在attach)

docker run -i -t <image> /bin/bash
:使用image创建container并进入交互模式, login shell是/bin/bash
    docker run -i -t -p <host_port:contain_port>
:映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port
映射到一个动态端口。
   
注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container。

 docker ps -a 查看所有往过启动过的容器 

4.安装jdk

  首先本地某路径如 /root 下存放了jdk 安装包 jdk-7u80-linux-x64.tar.gz

  docker run -it -v /root:/root docker.io/centos /bin/bash , 启动一个镜像,并把本地/root 路径挂载到 镜像里的 /root路径下面, 并且进入交互模式

  cd /usr/local/

  tar zxf /root/jdk-7u80-linux-x64.tar.gz

  ln -s jdk1.7.0_0 jdk

  vi /etc/profile

  exit 退出容器

  exit退出容器会关闭容器,

  docker.ip/centos 镜像并不包含我们刚安装的jdk,  我们要制作一个包含了jdk的镜像给以后使用

  执行命令 docker commit e15e4ce2355 devil/jdk  ,生成一个新镜像, 指定创建的new iamge来自于container id e15e4ce2355,此外还为新建的image定义一个组合devil/jdk

  执行命令 docker run -it devil/jdk 就启动我们刚制作的镜像了, 如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器

5.环境变量

  在容器里配置的jdk环境变量在每次docker run启动的时候不会生效,需要外面传递环境变量  ,如 docker run -it -e "JAVA_HOME=/usr/local/jdk" -e "PATH=$PATH:/usr/local/jdk/bin" devil/jdk2 /bin/bash

6.端口映射

  如果我们容器里启动了一个tomcat ,8080端口,想外面也能访问到容器的8080端口,需要启动的时候指定端口映射

  如 docker run -it -p 8080:8080 -e "JAVA_HOME=/usr/local/jdk" -e "PATH=$PATH:/usr/local/jdk/bin" devil/jdk2 /bin/bash

  

7.后台启动

  docker run -d -e "JAVA_HOME=/usr/local/jdk" -e "PATH=$PATH:/usr/local/jdk/bin" devil/jdk2  /usr/bin/supervisord

  PS: docker run 要不就是-it 前段交互方式启动, 要不就是-d 后台运行,但是后台运行必须有一个一直挂起的进程 ,比如这里的/usr/bin/supervisord

  Docker容器后台运行,就必须有一个前台进程.
  容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的

8.启动多个容器

  我们在已经启动了一个容器的基础上再启动一个容器,使用同一个镜像

  docker run -it --name deviltest --link goofy_hypatia:tomcat -e "PATH=$PATH:/usr/local/jdk/bin" devil/jdk2 /bin/bash   ,  使用这个命令把两个容器连接起来

  docker attach 第二个容器id,  cat /etc/hosts ,可以看到 上面配置的tomcat 别名指向第一个容器

最新文章

  1. DataGridView中实现checkbox全选的自定义控件
  2. CSS盒子模型与box-sizing
  3. C# WPF 让你的窗口始终钉在桌面上
  4. python 语料处理(从文件夹中读取文件夹中文件,分词,去停用词,去单个字)
  5. 【转】SQL Server中关于跟踪(Trace)那点事
  6. qt QMetaObject::connectSlotsByName()自动关联失效问题解决
  7. ACCESS的参数化查询
  8. C++引用(References)
  9. zend studio一些常用配置
  10. 如何在Ubuntu上安装最新版本的Node.js
  11. 【暑假】[实用数据结构]UVAlive 3644 X-Plosives
  12. Gartner公布了集成系统的魔力象限 - Nutanix的关键技术是什么?
  13. 未能从程序集“System.ServiceModel, Version=3.0.0.0”中加载类型“System.ServiceModel.Activation.HttpModule” 的解决办法
  14. C++ 指针—02 指针与引用的对照
  15. 数据库数据导出成XML文件
  16. Http学习之使用HttpURLConnection发送post和get请求(2)
  17. 执行计划查看,autotrace工具的使用
  18. 3.1依赖注入「深入浅出ASP.NET Core系列」
  19. json模块及其API
  20. python基础学习(四)if判断语句

热门文章

  1. 【LeetCode 234_链表】Palindrome Linked List
  2. IOS的各种控件(转载,防止遗忘)
  3. 把腾讯云的ubuntu16.04升级到18.04
  4. ThreadLocal讲解
  5. HDU 3488
  6. vim configures for normal work
  7. [LeetCode&amp;Python] Problem 868. Binary Gap
  8. Codeforces123E. Maze【树形dp】【概率dp】【证明题】
  9. HihoCoder - 1051:补提交卡
  10. JAVA爬取百度贴吧图片