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 别名指向第一个容器

docker 基础操作的更多相关文章

  1. 二、Docker基础操作

    原文:二.Docker基础操作 一.下载镜像 命令:docker pull xxxxxx(镜像名) docker pull training/weapp 二.运行镜像 docker run -d -P ...

  2. Docker基础操作

    安装 ubuntu16.04安装docker sudo apt-get update sudo apt-get install docker sudo apt-get install docker.i ...

  3. Docker 基础概念科普 和 常用操作介绍

    Docker 基础概念 Docker是什么?         Docker的思想来自于集装箱,集装箱解决了:在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之 ...

  4. docker基础命令和操作

    前言 之前在部署个人网站的时候,需要打包maven,在生产环境,需要使用到docker去做服务器和端口的守护. 于是在查阅了相关资料,学习了docker一些基本命令行操作,包括对镜像的查看,修改和添加 ...

  5. docker基础命令,常用操作

    docker基础命令 使用docker镜像 获取镜像 从docker registry获取镜像的命令是docker pull.命令格式是: docker pull [选项][docker regist ...

  6. Docker基础技术:Linux Namespace(下)

    在 Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中,主 ...

  7. Docker 基础技术:Linux Namespace(下)

    导读 在Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中 ...

  8. Docker基础入门及示例

    Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...

  9. Docker 基础 : 镜像

    目录 获取镜像 查看镜像信息 搜索镜像 删除镜像 创建镜像 导出和导入镜像 上传镜像 总结 镜像是 Docker 的三大核心概念之一.Docker 运行容器前需要本地存在对应的镜像,如果本地没有对应的 ...

随机推荐

  1. hibernate级联 cascade属性(转)

    在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当 前实体时,针对当前实体的操作会影响到相应配置的关联实体.比如针对当前实体进行保存操作 ...

  2. Linux便捷命令

    快捷键: tab:命令和文件名称补齐功能快捷键 Ctrl + c:中断当前程序 Ctrl + d:退出当前终端 求助快捷键: man:manual的简写,如man ls man命令: / string ...

  3. 【设计模式】 模式PK:工厂模式VS建造者模式

    1.概述 工厂方法模式注重的是整体对象的创建方法,而建造者模式注重的是部件构建的过程,旨在通过一步一步地精确构造创建出一个复杂的对象.我们举个简单例子来说明两者的差异,如要制造一个超人,如果使用工厂方 ...

  4. REST easy with kbmMW #14 – DB Controlled login

    介绍 关于如何使用授权和登录管理来构建应用服务器还存在一些问题,其中之一就是用户及其角色如何在在数据库中定义.该文将解释使用TkbmMWAuthorizationManager解决此问题的一种方法.有 ...

  5. Kali Liunx 2.0震撼来袭(附下载地址、新特性和更新日志)

    Kali 2.0昨天已经在BlackHat 2015 USA上正式发布了.无论是粉丝们还是Kali官方都对这个2.0版本抱有极大的期待和热情.这是第一个基于Debian Jessie的Kali版本,此 ...

  6. php require include 区别

    php提供了两种包含外部文件的方法:include()和require().include()语句是一个常规的php函数:而require() 是一种特殊的语言结构,它的使用受到一些限制.对这两者来说 ...

  7. iOS 去除警告 看我就够了

    你是不是看着开发过程中出现的一堆的警告会心情一阵烦躁,别烦躁了,看完此文章,消除警告的小尾巴. 一.SVN 操作导致的警告 1.svn删除文件后报错 ”xx“is missing from worki ...

  8. mos如何工作参考地址

    https://wenku.baidu.com/view/c118c3fb360cba1aa811da9d.html?qq-pf-to=pcqq.c2c

  9. Mongodb $setOnInsert操作符 和upsert:true

    upsert:true:如果要更新的文档不存在的话会插入一条新的记录 $setOnInsert操作符会将指定的值赋值给指定的字段,如果要更新的文档存在那么$setOnInsert操作符不做任何处理: ...

  10. 对象Date的方法

    Date()对象是js提供给我们的日期对象,可以利用它获取关于时间的量. var myDate = new Date() //首先构造一个时间对象,然后用对象的方法获取时间: 1.获取年份: var ...