Self-Paced Training (2) - Docker Fundamentals
Agenda-
Building Images
Dockerfile
Managing Images and Containers
Distributing Images on Docker Hub
Docker Volumes
Basic Container networking
Docker in continuous integration
Build New Image
- Create a container from an Ubuntu image and run a bash terminal: docker run -i -t ubuntu:14.04 /bin/bash
- Inside the container, install curl: apt-get install curl
- Exit the container terminal
- Run docker ps -a and take note of your container ID
- Save the container as a new image. For the repository name use <yourname>/curl. Tag the image as 1.0: docker commit <container ID> <yourname>/curl:1.0
- Run docker images and verify that you can see your new image
Use New Image
- Create a container using the new image you created in the previous exercise. Run /bin/bash as the process to get terminal access: docker run -i -t <yourname>/curl:1.0 /bin/bash
- Verify that curl is installed: which curl
Dockerfile Instructions
Instructions specify what to do when building the image
FROM instruction specifies what the base image should be
RUN instruction specifies a command to execute
#Example of a comment
FROm ubuntu:14.04 RUN apt-get install vim RUN apt-get install curl
Docker Build
docker build [options] [path]
Common option to tag the build: docker build -t [repository:tag] [path]
docker build -t johnnytu/myimage:1.0 . docker build -t johnnytu/myimage:1.0 myproject
Build from Dockerfile
- In your home directory, create a folder called test
- In the test folder, create a file called “Dockerfile”
- In the file, specify to use Ubuntu 14.04 as the base image: FROM ubuntu:14.04
- Write an instruction to install curl and vim after an apt-get update: RUN apt-get update && apt-get install -y curl vim
- Build an image from the Dockerfile. Give it the repository <yourname>/textimage and tag it as 1.0: docker build -t johnnytu/textimage:1.0 .
- Create a container using your newly built image and verify that curl and vim are installed
Try CMD
- Go into the test folder and open your Dockerfile from the previous exercise
- Add the following line to the end: CMD ping 127.0.0.1 -c 30
- Build the image: docker build -t <yourname>/textimage:1.1 .
- Execute a container from the image and observe the output: docker run <yourname>/testimage:1.1
- Execute another container from the image and specify the echo command: docker run <yourname>/textimage:1.1 echo “hello world”
- Observe how the container argument overrides the CMD instruction
Push to Docker Hub
- Login to your Docker Hub account
- Create a new public repository called “testexample”
- Tag your local image to give it the same repo name as the repository you created on Docker Hub: docker tag <yourname>/testimage:1.1 <yourname>/testexample:1.1
- Push the new image to Docker Hub: docker push <yourname>/testexample:1.1
- Go to your Docker Hub repository and check for the tag
Mount a Volume
Volumes are mounted when creating or executing a container
Can be mapped to a host directory
Volume paths specified must be absolute
Execute a new container and mount the folder /myvolume into its file system
docker run -d -P -v /myvolume nginx:1.7
Execute a new container and map the /data/src folder from the host into the /test/src folder in the container
docker run -i -t -v /data/src:/test/src nginx:1.7
Create and test a Volume
- Execute a new container and initialise a volume at /www/website. Run a bash terminal as your container process. docker run -i -t -V /www/website ubuntu:14.04 bash
- Inside the container, verify that you can get to /www/website
- Create a file inside the /www/website folder
- Exit the container
- Commit the updated container as a new image called test and tag it as 1.0. docker commit <container ID> test:1.0
- Execute a new container with your test image and go into it’s bash shell. docker run -i -t test:1.0 bash
- Verify that the /www/website folder exists and the there are no files inside
EXPOSE net work port
Create a Link
- Create the source container first. docker run -d —name database postgres
- Create the recipient container and use the —link option. docker run -d -P —name website —link database:db nginx
Self-Paced Training (2) - Docker Fundamentals的更多相关文章
- Self-Paced Training (3) - Docker Operations
AgendaTroubleshooting ContainersOverview of Security PracticesPrivate RegistryIntro to Docker Machin ...
- 在Docker中运行web应用
启动一个简单的web 应用 使用社区提供的模板,启动一个简单的web应用,熟悉下各种Docker命令的使用: # docker run -d -P training/webapp python app ...
- 在生产环境使用Docker部署应用
导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...
- Docker快速入门
Docker已经火了很长一段时间,最近打算在阿里云上好好熟悉一下Docker的相关应用,为今后的工作做准备. 基本概念 Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是do ...
- Docker系统七:Docker数据管理
Docker的数据管理 I. 基本概念 Docker容器一旦删除,其相关的rootf文件系统就会被删除,其容器内的数据将一并删除,为了保存相关数据,Docker提出了数据卷的概念. II. 数据卷 D ...
- Docker:Deploy your app
Prerequisites Install Docker. Get Docker Compose as described in Part 3 prerequisites. Get Docker Ma ...
- Docker 核心技术与实现原理
提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段使用的玩具了.作为在生产环境中广泛应用的产品,Docker 有 ...
- Docker技术入门与实战 第二版-学习笔记-7-数据管理(volume)
Docker 数据管理 为什么要进行数据管理呢?因为当我们在使用container时,可能会在里面创建一些数据或文件,但是当我们停掉或删除这个容器时,这些数据或文件也会同样被删除,这是我们并不想看见的 ...
- learning docker steps(8) ----- docker network 初次体验
参考: docker network 主要是介绍了docker 容器之间的组网模式, 一般来说实像组网主要是依赖于bridge iptalbes vlan来实现,但是附带的如端口转发会降低效率. 新型 ...
随机推荐
- Python数据结构——二叉树的实现
1. 二叉树 二叉树(binary tree)中的每个节点都不能有多于两个的儿子. 1.1 二叉树列表实现 如上图的二叉树可用列表表示: tree=['A', #root ['B', #左子树 ['D ...
- Java中的异常处理(一)
package second; public class C { public static void main(String[] args){ String name = null;//定义一个nu ...
- Web Api 控制器
Web Api 控制器 文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简 ...
- jQuery的on方法和bind绑定多个事件
on方法是官方推荐使用的方法比较新 1. on: 多个事件绑定同一个函数 $(document).ready(function(){ $("p").on("mouseov ...
- 商品库存SKU
一种解决方案(性能垃圾,基本实现功能)商品表 属性集表 属性表 属性值表 SKU表 SKU选项表 属性集和属性之间的中间表表关系商品表 *--------------1 属性集表属性集表 *- ...
- multimap和multiset 认知和使用
之前只是在C++ Primer里面看过关联容器,可能因为没有实际用过,只是看看,所以导致用的时候并不熟悉: 在这之前,map和set的特性应该要了解,map是关联数组,也就是由键值对组成的,而set只 ...
- php实现调用微信上传照片然后保存至服务器与数据库
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <s ...
- poj City Horizon (线段树+二分离散)
http://poj.org/problem?id=3277 City Horizon Time Limit: 2000MS Memory Limit: 65536K Total Submissi ...
- Linux的安装 CentOS-7.1
说明: 首先,版本:7.1版:CentOS-7-x86_64-Everything-1503-01.iso 下载自:http://mirrors.163.com/centos/7/isos/x86_6 ...
- Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定
一放假就高产似母猪了. 00.混乱的前端界 Angular1.x确实是个学习成本很高的框架,刚开始实习那会儿,前端啥也不懂,工头说用Angular,我们这群小弟也只能硬着头皮学.在这之前,前端的东西大 ...