Docker快速入门

来源:互联网 发布:手机模板源码 编辑:程序博客网 时间:2024/06/07 16:16

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

 

Docker架构

Docker 使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。Docker容器通过Docker镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

Docker采用C/S架构Docker daemon作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API来进行通信。

Docker daemon一般在宿主主机后台运行,等待接收来自客户端的消息。Docker客户端则为用户提供一系列可执行命令,用户用这些命令实现跟Docker daemon交互。

 

DockerVM区别

可以看出,DockerVM比较,用Docker引擎替代了Hyper-v,没有Guest OS,应用是放到容器里,直接运行在宿主机的OS上。

这样做的好处是,各容器间虽然隔离,但共享系统资源和公用库,剥离了Guest OS这层,系统资源利用率更高。

 

另外,因为Docker容器的灵活性,在程序的开发→测试→发布,整个流程能保证环境的一致性,并大大减少工作量和时间。这也是Docker十分火爆的主要原因。

 

安装Docke前提条件

       Docker支持很多操作系统,这里我们使用Ubuntu Xenial 16.04 (LTS)给大家演示一下搭建Docker

1.    前提条件

操作系统必须为64位,而且内核版本不低于3.10

可以通过如下命令查看内核版本号:

# uname -r

4.4.0-36-generic

 

2.    更新apt来源

# apt-get update

# apt-get install apt-transport-https ca-certificates

 

3.    添加新的GPG key

# apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

 

4.    打开/etc/apt/sources.list.d/docker.list文件,如果不存在则创建。

删除文件任何存在的entry

针对Ubuntu Xenial16.04 (LTS)操作系统,添加如下内容:

deb https://apt.dockerproject.org/repo ubuntu-xenial main

 

5.    更新APT包索引

# apt-get update

 

6.    清除旧的repo,如果没有安装则不执行

# apt-get purge lxc-docker

 

7.    验证APT能够从正确的repository拉取docker可用版本

# apt-cache policy docker-engine

 

8.    安装linux-image-extra-*内核包,允许使用aufs存储驱动

# apt-get update

# apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

 

正式安装和启动Docker

       安装:

       # apt-get update

       # apt-get install docker-engine

 

       启动:

       # service docker start

 

       验证:

       # docker run hello-world

       返回结果为:

Hello from Docker!

This message shows that your installation appears to be working correctly.

 

To generate this message, Docker took the following steps:

 1. The Docker client contacted the Docker daemon.

 2. The Docker daemon pulled the"hello-world" image from the Docker Hub.

 3. The Docker daemon created a new container from that image which runs the

    executable that produces the output you are currently reading.

 4. The Docker daemon streamed that output to the Docker client, which sent it

    to your terminal.

 

To try something more ambitious, you can run an Ubuntu container with:

 $ docker run -it ubuntu bash

 

Share images,automate workflows, and more with a free Docker Hub account:

 https://hub.docker.com

 

For more examples and ideas, visit:

 https://docs.docker.com/engine/userguide/

 

        如果使用普通用户执行的话,报错如下:

$ docker run hello-world

docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.

See 'docker run --help'.

       需要将当前用户加入到组docker下,该组是在安装docker的时候自动建立的。

       # usermod -aG docker zhangyun

       然后切换到普通用户zhangyun下面再次执行就可以了。

      $ docker run hello-world

 

       设置Docker开机自启动服务:

       # systemctl enable docker

 

升级Docker

       # apt-get upgrade docker-engine

 

       卸载Docker

       卸载Docker包:

       # apt-get purge docker-engine

 

       卸载Docker包和不需要的依赖包:

       # apt-get autoremove --purge docker-engine

      

上面的操作不会删除镜像,容器,卷组以及用户创建的配置文件。如果你希望删除所有的镜像,容器等,执行下面的命令:

# rm -rf /var/lib/docker

用户创建的配置文件可能需要手工删除。

 

使用Docker案例

       官方的Docker Hub上面有很多公共的镜像可以使用,下面我们演示一个nginx容器的使用。

1.    Docker Hub上查找nginx镜像

 

2.    拉取镜像

我们下载上面查找的第一个官方nginx镜像:

# docker pull nginx

 

3.    查看镜像

# docker images

 

4.    指定镜像创建容器并启动

# docker run -d -p 80:80 --name mynginx nginx

231091f0f20f85374c2ab6d10fba9642155d6fc45b67b85c8dfe730a0e4b2f66

 

 

解释一下上面的参数含义:

-d 放在后台执行

-p 主机端口:容器端口将容器的端口映射到主机上,目的是可以直接对外提供访问

--name 指定容器名

 

5.    查看创建的容器

# docker ps

 

6.    访问容器中的nginx

在浏览器访问服务器的IP,可以打开nginx的默认页面:

到此,一个nginx容器已经创建好了,并且运行正常。

 

7.    再补充一些Docker针对容器的常用命令

停止容器:

# docker stop mynginx

 

启动容器:

# docker start mynginx

 

删除容器:

# docker rm mynginx

 

查看正在运行的容器:

# docker ps

 

查看所有容器,包括运行和停止的容器:

# docker ps -a

 

更多的docker命令可以执行docker --help查看帮助或者查看Docker官方网站文档。

 

0 0
原创粉丝点击