docker 基础操作
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 基础操作的更多相关文章
- 二、Docker基础操作
原文:二.Docker基础操作 一.下载镜像 命令:docker pull xxxxxx(镜像名) docker pull training/weapp 二.运行镜像 docker run -d -P ...
- Docker基础操作
安装 ubuntu16.04安装docker sudo apt-get update sudo apt-get install docker sudo apt-get install docker.i ...
- Docker 基础概念科普 和 常用操作介绍
Docker 基础概念 Docker是什么? Docker的思想来自于集装箱,集装箱解决了:在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之 ...
- docker基础命令和操作
前言 之前在部署个人网站的时候,需要打包maven,在生产环境,需要使用到docker去做服务器和端口的守护. 于是在查阅了相关资料,学习了docker一些基本命令行操作,包括对镜像的查看,修改和添加 ...
- docker基础命令,常用操作
docker基础命令 使用docker镜像 获取镜像 从docker registry获取镜像的命令是docker pull.命令格式是: docker pull [选项][docker regist ...
- Docker基础技术:Linux Namespace(下)
在 Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中,主 ...
- Docker 基础技术:Linux Namespace(下)
导读 在Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中 ...
- Docker基础入门及示例
Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...
- Docker 基础 : 镜像
目录 获取镜像 查看镜像信息 搜索镜像 删除镜像 创建镜像 导出和导入镜像 上传镜像 总结 镜像是 Docker 的三大核心概念之一.Docker 运行容器前需要本地存在对应的镜像,如果本地没有对应的 ...
随机推荐
- oracle 统计sql
最近在研究项目时发现如下sql, select 3 agentOfGCount, 0 workingCount, 0 restingCount, 0 busyingCount, 0 connectin ...
- Ubuntu:系统启动服务
系统启动服务 针对Ubuntu 5级别服务的说明 安装sysv-rc-conf sudo apt-get install sysv-rc-conf acpi-support 高级电源管理支持 acpi ...
- Codeforces Round #252 (Div. 2) D
http://codeforces.com/problemset/problem/441/D 置换群的基本问题,一个轮换内交换成正常顺序需要k-1次,k为轮换内元素个数 两个轮换之间交换元素,可以把两 ...
- 【error】Invalid ADAPTORNAME specified. Type 'imaqhwinfo' for a list of available ADAPTORNAMEs.
前言 使用matlab通过摄像头获取图像进行处理: 问题描述 使用matalb调用摄像头时出现错误: >> imaqhwinfo Warning: No Image Acquisition ...
- [LeetCode&Python] Problem 463. Island Perimeter
You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represen ...
- [转载]redis持久化的两种操作RDB和AOF
Redis 持久化: 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AO ...
- hdu 5185 dp(完全背包)
BC # 32 1004 题意:要求 n 个数和为 n ,而且后一个数等于前一个数或者等于前一个数加 1 ,问有多少种组合. 其实是一道很水的完全背包,但是没有了 dp 的分类我几乎没有往这边细想,又 ...
- Vue2.x directive自定义指令
directive自定义指令 除了默认设置的核心指令( v-model 和 v-show ),Vue 也允许注册自定义指令. 注意,在 Vue2.0 里面,代码复用的主要形式和抽象是组件——然而,有的 ...
- 【转】每天一个linux命令(8):cp 命令
原文网址:http://www.cnblogs.com/peida/archive/2012/10/29/2744185.html cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一 ...
- spring 注解列表
table th:first-of-type { width: 15%; } table th:nth-of-type(2) { } 注解 作用 例子 @SuppressWarnings 忽略警告 类 ...