[comment]: # Docker on CentOS for beginners

Introduction

The article will introduce Docker on CentOS.

Key concepts

Docker

Docker is the world's leading software containerization platform.

Docker is using union file systems which is a layered file system.

When docker run a container, every image consists of a serials of read-only layers,

and the container provides a read-write layer, and Docker combines these layers into one image,

and forms a single coherent file system on the host OS.

Q: What is the relationship between the docker host OS and the container base image OS?

A: The container's kernel is going to be the one from ubuntu, but nothing more.

Docker for Windows and Docker for Mac

Docker only support applications on Linux.

Docker cannot run on Windows and Mac directly. Docker will create a VM via Virtual Box, and run command in the VM.

Docker engine

Docker engine is a light weight Docker, is used to create Docker images and run Docker containers.

Docker daemon and Docker client

Docker uses a client-server architecture. The Docker client talks to the Docker daemon, which does the heavy lifting of building, running, and distributing your Docker containers.

Docker registries

Docker has a good ecological environment, there are some registries that store images and other materials on the Internet.

Docker Hub is a public registry and stores images.

images

An image is a file and is a read-only template, Docker can use it to create containers.

Docker images can be built from 2 ways.

  • Build it from Dockfile
  • Build it from a container.

containers

Docker containers are similar to a directory. A Docker container holds everything that is needed for an application to run. Each container is created from a Docker image. Docker containers can be run, started, stopped, moved, and deleted. Each container is an isolated and secure application platform. Docker containers are the run component of Docker.

Dockerfile

Dockerfile files can be used to create images by Docker.

Dockerfiles are files whose names are 'Dockerfile'. A Dockerfile is a scripts to create an image.

In general, a Docker file is based on another image. For example: a image inheritance chain is:

spark : hadoop : centos : scratch.

Base images like 'centos' are images that are from the scratch image which is an explicitly empty image from the official Docker.

We can consider 'scratch' is a reversed word by Docker. (You cannot pull, push an image named as 'scratch'.)

In fact, base images are not always OS images. like hello-world image, its Dockerfile is

FROM scratch
COPY hello /
CMD ["/hello"]

Why Docker is better than VMs

  • Performance

    It is said that the performance of running applications in Docker is same as running them on native machine.

    Meanwhile, VMs performance is slower twice times than native machines.

Installation & configuration the Docker repository file

Method 1: Run the Docker installation scripts

curl -fsSL https://get.docker.com/ | sh

Method 2: From scripts

  • Install Docker
$ sudo yum install docker

or light weight docker

$ sudo yum install docker-engine
  • Create Docker repository file

    The configuration can help Docker to pull images from a registry.
sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

Configuration Docker service

# configure load the Docker service at boot
sudo chkconfig docker on
# start Docker
sudo service docker start
# create a Docker group
sudo groupadd docker
# alow non-root user to run Docker
sudo usermod -aG docker $(whoami)

Verify Docker is installed

docker run hello-world
docker version
docker info

Docker key commands

Docker help

docker --help
docker [command] --help

Search an image

You may go to Docker Hub, search an image you want to use.

or

# search images related to 'spark'
docker search spark

Output;

INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED

docker.io docker.io/sequenceiq/spark An easy way to try Spark 287 [OK]

docker.io docker.io/gettyimages/spark A debian:jessie based Spark container 27 [OK]

docker.io docker.io/singularities/spark An Apache Spark development Docker image 12 [OK]

docker.io docker.io/shopkeep/spark Docker container with Spark, Scala, SBT, a... 7 [OK]

Pull an image

# pull the image named 'sequenceiq/spark'
docker pull sequenceiq/spark

List local images

docker images

Output:

REPOSITORY TAG IMAGE ID CREATED SIZE

docker.io/hello-world latest c54a2cc56cbb 8 weeks ago 1.848 kB

docker.io/shopkeep/spark latest 4be7b9be182e 12 months ago 1.693 GB

Create a container

# create a container from image name
docker create -t -i shopkeep/spark # Or create a container from image id
docker create -t -i c54

Output:

5bb2d0aaa227154920733fb9f13e1571fe40254dd1b3373b617550cdde71e57e

List local containers

# Show all containers
docker ps -a

Output:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

5bb2d0aaa227 shopkeep/spark "/bin/bash" 15 minutes ago Created insane_kowalevski

# Show running containers
sudo docker ps

Run a container

docker start -a -i 5bb

Output:

root@5bb2d0aaa227:/opt/spark#

Note: Docker is smart enough to match partial container id 5bb with the container id 5bb2d0aaa227...

Enter a running container with the existing TTY

# in most cases, the running container was started with a command 'docker start 5bb'
docker attach 5bb

Enter a running container with new TTY

docker exec -ti 5bb bash

Exit from a running container

root@5bb2d0aaa227:/opt/spark# exit

NOTE: the exit command from the last TTY will stop the container.

Stop a container

docker stop 5bb

Save a container as an image

docker commit 5bb my/image1

Output:

sha256:5cf350490e9e8b7495acb753f4041e34788e4881300b28ffc958db06d45fb4b3

Save an image to a tar archive

docker save my/image1 > ~/my_image1.tar

Load an image from a tar archive

docker load -i ~/my_image1.tar

Docker images/containers locations

  • /var/lib/docker
  • C:\Users[user name].docker

References

Docker on CentOS for beginners的更多相关文章

  1. Docker安装CentOS

    系统环境: 腾讯云公共镜像 CoreOS 7.1 X64 #docker 下载centos镜像docker  pull   centos   #下载centos所有的镜像docker  pull   ...

  2. 关于Docker官方CentOS镜像无法启动mysqld的总结

    很多童鞋反映,在Docker官方CentOS镜像中安装了Mysql server后,无法正常启动. 无法正常启动表现为两种情况: 1> 初始完数据库后,mysqld启动报错 2> syst ...

  3. docker on centos

    docker最好在centos7上安装,centos6.5上似乎麻烦不少 这里直接在centos7上安装,要提前装一下epel的repo yum install docker 安装就行 chkconf ...

  4. docker~在centos容器中安装新程序

    上一篇我们使用了阿里加速器安装了centos镜像,然后创建了一个新容器,运行了这个镜像,这一讲我们来为这个镜像添加一些应用程序,然后再保存容器,push容器到仓储,大家就可以直接pull我生产的容器了 ...

  5. 使用docker搭建centos虚拟机

    网上有很多安装linux的,这里不记录; windows安装docker 转自:https://www.cnblogs.com/samwu/p/10360943.html(windows是家庭版的) ...

  6. docker安装centos后没有ifconfig命令解决办法

    使用docker pull centos命令下载下来的centos镜像是centos7的最小安装包,里面并没有携带ifconfig命令,导致我想查看容器内的ip时不知道该怎么办 yum provide ...

  7. 使用Docker搭建CentOS 7 + Apache 2.4+ PHP7

    从Docker Hub上Pull最新的CentOS 7镜像并新建容器 # sudo docker pull centos docker run -p 8082:80 --name centos_c - ...

  8. docker打包centos增加中文支持

    docker打包centos增加中文支持 前言 使用的某个包的返回值,在本机测试时返回结果是中文,结果打包到docker后返回结果变英文了:猜测是系统语言的问题,进入docker测试了一下,发现果然是 ...

  9. docker pull centos慢问题的解决方案

    1.现象 如果直接docker pull centos 两个小时才down下来8M,很慢 2.解决 [root@localhost network-scripts]# cd /etc/docker [ ...

随机推荐

  1. HTML5 Canvas实战之刮奖效果

    近年来由于移动设备对HTML5的较好支持,经常有活动用刮奖的效果,最近也在看H5方面的内容,就自己实现了一个,现分享出来跟大家交流. 1.效果 2.原理 原理很简单,就是在刮奖区添加两个canvas, ...

  2. What's New in iOS9 iOS9功能改进

    What's New in iOS9 This article summarizes the key developer-related features introduced in iOS 9, w ...

  3. JIRA数据库切换(HSQL Database到MySQL)

    没试过的版本,但是看着靠谱: 注:如果你之前配置过hsql版本,这次修改mysql数据操作会导致配置数据丢失,所以请注意备份 一. 创建名为jiradb的mysql数据,编码格式为utf-8 二.修改 ...

  4. BZOJ 1001 [BeiJing2006] 狼抓兔子(平面图最大流)

    题目大意 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的.而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...

  5. jquery的ajax提交时loading提示的处理方法

    方法1:使用ajaxStart方法定义一个全局的“加载中...”提示 $(function(){     $("#loading").ajaxStart(function(){   ...

  6. WCF多种调用方式兼容

    1.能被ajax get 2.能post 3.wcf正常调用 实现: [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompati ...

  7. 如何复制DataRow(dataTabel中的行)

    由于需要对dataTabel中的行进行上移和下移操作: row 1      行号0 row2       行号1 row3       行号2 例如将row3上移一行,即row2和row3对调位置. ...

  8. Android代码优化工具——Android lint

    作为移动应用开发者,我们总希望发布的apk文件越小越好,不希望资源文件没有用到的图片资源也被打包进apk,不希望应用中使用了高于minSdk的api,也不希望AndroidManifest文件存在异常 ...

  9. ASP.NET绑定控件语法

    1.DropDownList 前端代码aspx: <asp:DropDownList ID="ddl_meetingroom" runat="server" ...

  10. MyBatis知多少(17)MyBatis和JDBC

    有了MyBatis,就不再需要编写JDBC代码了.像JDBCT这样的API的确非常强大,但使用起来总不免觉得太过繁琐.代码清单给出了一个使用JDBC的示例. 从这个例子中很容易看出,JDBC API会 ...