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来实现,但是附带的如端口转发会降低效率. 新型 ...
随机推荐
- The main roles of LTE eNodeB.
eNB的功能包括: RRM(无线资源管理) IP头压缩 用户数据流加密 UE附着时的MME选择 寻呼信息的调度传输 广播信息的调度传输 设置和提供eNB的测量 CMC(连接移动性控制) 动态资源分配 ...
- H264相关代码
H.264格式的视频打包成RTP后进行发送,编译环境为VC6++ #include <stdio.h> #include <stdlib.h> #include <str ...
- jsp分页代码之pageUtil类
pageUtil类负责得到每页的开始数和结束数 package control; public class PageUtil { private int pageSize;//每页显示的条数 priv ...
- iOS 深复制&浅复制
1.无论是深复制还是浅复制,被复制的对象类型是不变的.此对象类型具有什么功能就具有什么功能,不会因为自行修改了返回对象的指针类型而改变. 比如: 这里的str和str1的值和指针地址完全一 ...
- 【BZOJ 2301】[HAOI2011]Problem b
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...
- Critical Rendering Path
1.生成 dom & cssom https://developers.google.com/web/fundamentals/performance/critical-rendering-p ...
- JQuery 知识点
1:animate 动画效果 $(function () { $(".sidebar-nav a").mouseover(function () { $(this).animate ...
- 我又回来了,这回是带着C++来的
一晃就是5年,之前在博客园开这个博客主要是跟着大牛学习C#,那个时候自己偏重于asp.net,后来开发了一段时间的Winform.近几年由于工作原因,偏重于测试仪器开发,属于工控行业,主要使用的是C+ ...
- 谈谈js中for in 需要注意的地方
js中for in 可以遍历对象或数组的显性属性,也就是说我们自己定义的属性是可以遍历的,那些原型上默认已有的属性,例如:Object.prototype.toString.Object.protot ...
- Nagios : Verifying Your Configuration
Every time you modify your configuration files, you should run a sanity check on them. It is importa ...