docker-tutorial (2018-7-1)
This repo is a translation of the docs.docker.com.
Also, you can check the English version here.
0. Docker CE 安装
环境:ubuntu 16.04
Docker官网上有在不同系统上的详细安装步骤和多种安装方法,如果有需要可以浏览here.
删除旧版本
如果安装了旧版本请删除他们:
$ sudo apt-get remove docker docekr-engine docker.io
使用apt安装
配置ubuntu repository
$ sudo apt-get update # 更新一下源
# 安装需要的软件使apt能够在HTTPS传输
$ sudo apt-get install apt-transport-https
$ sudo apt-get install ca-certificates
$ sudo apt-get install curl
$ sudo apt-get install software-properties-common
添加docker官方GPG密钥
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
添加稳定版的repository
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
安装Docker CE
# 更新一下apt源
$ sudo apt-get update
# 安装最新版 Docker CE
$ sudo apt-get install docker-ce
测试Docker安装
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
如果有权限问题是应为当前用户没有执行docker命令的权限,可以在命令前加sudo
,或者把当前用户添加到docker用户组。
# 添加当前用户到docker组
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
执行完以上命令后登出在登入就完成了。
查看下载的镜像
$ docker image ls
查看容器,由于刚才运行的容器已经关闭了所以要添加参数才能看到
$ docker container ls -all
命令速记
# 查看Docker命令
$ docekr
$ docker container --help
# 查看Docker版本和安装信息
$ docker --version
$ docker version
$ docker info
# 运行Docker容器
$ docker run hello-world
# 查看已下载Docker镜像
$ docker image ls
# 查看Docker容器(运行中,所有,所有运行在quiet mode的)
$ docker container ls
$ docker container ls -all
$ docker container ls -aq
1. Orientation - 概述
Docker concepts - Docker概念
Docker是一个为开发者和运维提供开发、部署、运行容器化应用程序的框架平台。用Linux容器去部署应用程序这种方式被成为容器化(containerziation)。容器这个概念并不是新提出的,docker引入概念的是使用容器来使得部署应用更加简单。
Images and containers - 镜像和容器
一个容器(container)就是一个运行的镜像(image)。镜像(image)就是一个包含了需要运行的应用程序和他所需要的运行时环境、库、环境变量、配置文件等等。
容器(container)是一个镜像运行的实例,可以使用docker ps
命令来查看系统中运行的容器。
容器和镜像的关系可以对比OOP(面向对象编程)中类和对象的关系。
Containers and virtual machines - 容器和虚拟机
容器和虚拟机实现的功能是相似的,但他们本质上是有差别的。
虚拟机是在现有的系统上,再运行一个操作系统,这可以很好的隔离主机和虚拟机,但带来的开销也是非常大的。
容器则可以从应用程序这个角度来理解。容器可以是一个包含了程序运行所需要的库和依赖的一个应用程序,简单来说就是把库和依赖关系集成到应用程序中,而不是使用系统的库和依赖,这样也能实现隔离的功能。所以容器的系统开销是非常小的。
总之,虚拟机是一个隔离的操作系统,而容器则是一个应用程序。