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

  1. Create a container from an Ubuntu image and run a bash terminal: docker run -i -t ubuntu:14.04 /bin/bash
  2. Inside the container, install curl: apt-get install curl
  3. Exit the container terminal
  4. Run docker ps -a and take note of your container ID
  5. 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
  6. Run docker images and verify that you can see your new image

Use New Image

  1. 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
  2. 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

  1. In your home directory, create a folder called test
  2. In the test folder, create a file called “Dockerfile”
  3. In the file, specify to use Ubuntu 14.04 as the base image: FROM ubuntu:14.04
  4. Write an instruction to install curl and vim after an apt-get update: RUN apt-get update && apt-get install -y curl vim
  5. 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 .
  6. Create a container using your newly built image and verify that curl and vim are installed

Try CMD

  1. Go into the test folder and open your Dockerfile from the previous exercise
  2. Add the following line to the end: CMD ping 127.0.0.1 -c 30
  3. Build the image: docker build -t <yourname>/textimage:1.1 .
  4. Execute a container from the image and observe the output: docker run <yourname>/testimage:1.1
  5. Execute another container from the image and specify the echo command: docker run <yourname>/textimage:1.1 echo “hello world”
  6. Observe how the container argument overrides the CMD instruction

Push to Docker Hub

  1. Login to your Docker Hub account
  2. Create a new public repository called “testexample”
  3. 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
  4. Push the new image to Docker Hub: docker push <yourname>/testexample:1.1
  5. 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

  1. 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
  2. Inside the container, verify that you can get to /www/website
  3. Create a file inside the /www/website folder
  4. Exit the container
  5. Commit the updated container as a new image called test and tag it as 1.0. docker commit <container ID> test:1.0
  6. Execute a new container with your test image and go into it’s bash shell. docker run -i -t test:1.0 bash
  7. Verify that the /www/website folder exists and the there are no files inside

EXPOSE net work port

Create a Link

  1. Create the source container first. docker run -d —name database postgres
  2. 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的更多相关文章

  1. Self-Paced Training (3) - Docker Operations

    AgendaTroubleshooting ContainersOverview of Security PracticesPrivate RegistryIntro to Docker Machin ...

  2. 在Docker中运行web应用

    启动一个简单的web 应用 使用社区提供的模板,启动一个简单的web应用,熟悉下各种Docker命令的使用: # docker run -d -P training/webapp python app ...

  3. 在生产环境使用Docker部署应用

    导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...

  4. Docker快速入门

    Docker已经火了很长一段时间,最近打算在阿里云上好好熟悉一下Docker的相关应用,为今后的工作做准备. 基本概念 Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是do ...

  5. Docker系统七:Docker数据管理

    Docker的数据管理 I. 基本概念 Docker容器一旦删除,其相关的rootf文件系统就会被删除,其容器内的数据将一并删除,为了保存相关数据,Docker提出了数据卷的概念. II. 数据卷 D ...

  6. Docker:Deploy your app

    Prerequisites Install Docker. Get Docker Compose as described in Part 3 prerequisites. Get Docker Ma ...

  7. Docker 核心技术与实现原理

    提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段使用的玩具了.作为在生产环境中广泛应用的产品,Docker 有 ...

  8. Docker技术入门与实战 第二版-学习笔记-7-数据管理(volume)

    Docker 数据管理 为什么要进行数据管理呢?因为当我们在使用container时,可能会在里面创建一些数据或文件,但是当我们停掉或删除这个容器时,这些数据或文件也会同样被删除,这是我们并不想看见的 ...

  9. learning docker steps(8) ----- docker network 初次体验

    参考: docker network 主要是介绍了docker 容器之间的组网模式, 一般来说实像组网主要是依赖于bridge iptalbes vlan来实现,但是附带的如端口转发会降低效率. 新型 ...

随机推荐

  1. uva401 - Palindromes结题报告

    题目地址 :  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  2. CC2640-之功耗

    一.测量方式,以DEMO板测量,以消除其它外围不同造成的电流不同. 二.测量结果 以原厂simpleBLEperipheral工程为例 1.如果在低功耗模式下,+5DB发射,最小电流为1.66MA 2 ...

  3. spot 5、ALOS监督分类波段组成

    spot 5监督分类RGB:412 ALOS分类波段RGB:432

  4. 新的MOVE结构,和在项目中实际的感受

    关于MVC/MVP的瑕疵 MVC 和 MVP是最简单,最脍炙人口的框架结构. 有一段时间, 凡事有一定规模的代码,我都会架在上面,甚至后台程序也不例外(预留出可以注册的用户交互接口,作为后台控制器). ...

  5. mysql group by优化

    mysql> explain select actor.first_name,actor.last_name,count(*) from sakila.film_actor inner join ...

  6. javascript高级编程笔记06(面相对象2)

    1)  构造函数模式 es中的构造函数可以用来创建特定类型的对象,像Object和Array这样的原生构造函数,在运行时会自动出现在执行环境中,此外,也可以创建自定义的构造函数,从而定义自定义对象类型 ...

  7. HTML网页中添加音频视频动画...(转)

    在网页中适当嵌入音频和视频能够充分显示网页的多媒体特性,特别是随着宽带网的普及,使得网络广播和网络视频成为现实,网页音频和视频的重要性也日益突显.具体来说,网页音频和视频的嵌入方法主要有三种: 一.b ...

  8. 3111: [Zjoi2013]蚂蚁寻路 - BZOJ

    题目描述 Description在一个 n*m 的棋盘上,每个格子有一个权值,初始时,在某个格子的顶点处一只面朝北的蚂蚁,我们只知道它的行走路线是如何转弯,却不知道每次转弯前走了多长.蚂蚁转弯是有一定 ...

  9. 1198: [HNOI2006]军机调度 - BZOJ

    Description 凯萨拥有一支由n个人组成的雇佣军,他们靠在威尼斯商行接任务过活.这支军队的成份比较复杂,不同的人往往具有不同的技能,有的人还拥有多项技能.威尼斯商行的任务也参差不齐,有的需要几 ...

  10. [转载]JS对URL的编码

    虽然escape().encodeURI().encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤.但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编 ...