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

Docker image 是 Docker container 最基本的模板。image 通用容器使系统和应用易于安装,Docker image 是用来运行的容器,你可以找到许多 images (多种操作系统和软件已经被安装好了的 Docker)在这里 https://hub.docker.com/

Docker 容器(Docker Container)是一个 Image,在运行的 Docker image 上读取和写入。Docker 是一个联合的文件系统作为容器后台,容器的任何变化,都将被保存在一个基本 image 新的层上。我们安装应用程序的层就是容器。每个在主机机上运行的容器都是独立的,因此,提供了一个安全的应用平台。

Docker registry 是为 Docker images 提供的库。它提供了公共和私有库。公共 Docker 库被叫做 Docker Hub。这里我们能够上传 push 和 pull 我们自己的 images.

安装

安装 Docker 需要 64 位架构的系统和 Linux 3.10 内核或更高版本。这里使用了 Ubuntu 14.04 系统的 3.13 内核版本。

可以使用uname -a命令查看 Linux 内核版本。

  • 首先需要执行下面的命令,以便能获取到最新的软件包:

    sudo apt-get update
  • 然后安装docker-io包:

    sudo apt-get install docker.io
  • 安装之后使用下面的两条命令为docker.io创建链接符(我的是Ubuntu 14.04没有执行下面的命令):

    sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
    sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
  • 最后可以把Docker 服务设为开机启动(可选的):

    # Ubuntu 14.04使用update命令,Ubuntu 15.04及其它系统使用systemctl命令
    update-rc.d docker.io defaults

安装容器

下面开始正式使用Docker,需要下载Docker image 打造一个容器。

我们可以使用基本的 Docker 搜索命令搜索Docker image :

sudo docker search ubuntu

可以使用pull命令下载一个Docker image,在这里我们下载一个Ubuntu系统镜像。

sudo docker pull ubuntu

你也可以使用下列命令查看所有已经下载好的Docker image:

sudo docker images

使用容器

从Docker Hub/Docker Registry下载 Ubuntu 镜像之后,下一步是创建该镜像的容器。

要创建容器,可以使用docker create 或 docker run命令:

sudo docker create ubuntu:14.04

docker create 命令会创建一个新的容器,但不会启动它。所以现在你需要使用运行命令:

sudo docker run -i -t ubuntu:14.04 /bin/bash

此命令将创建并运行一个基于 Ubuntu 14.04 镜像的容器,也可以不指定系统版本(使用标准容器),其中 -i 附加 stdinstdout输入输出, -t 分配一个 tty/bin/bash代表在容器内运行一个bash命令,以便可以在容器内使用命令行。

当你输入 exit 命令退出容器时,容器也是停止运行,如果你想容器在后台运行需要在命令后面添加 -d 参数。

如果不想退出,可以顺序使用Ctrl - PCtrl - Q快捷键分离容器shell。

下面是Docker容器的一些简单用法;

  • 你可以使用docker ps命令看到在后台运行的容器:

    sudo docker ps
  • 如果你想查看bash日志结果,可以使用下列命令,其中NAME代表容器名,ContainerID代表容器id:

    sudo docker logs NAME/ContainerID
  • 如果你想后台访问容器 shell可以实现,exec命令:

    sudo docker exec -i -t NAMES/ContainerID COMMAND
    • 这时当你在shell 上键入exit命令,会离开shell,但容器仍在运行。
  • 如果你想停止一个容器,可以使用下列命令,这将停止容器而不将其删除:

    sudo docker stop NAME/ContainerID
  • 如果你想重新启动上面的停止的容器,可以使用下列命令重新启动它:

    sudo docker start NAME/ContainerID
  • 如果你想删除的容器,先停止它,然后用命令将其删除:

    sudo docker rm NAME/ContainerID

如果想了解更多Docker使用方法,可以访问 Engine user guide 查看更完全的指导。

数据持久化

在 Docker 容器中存储的文件,当容器关闭后就会自动删除,但是可以通过挂在本地目录的方式将数据保存到本地存储中。

在启动Docker的时候使用-v参数挂在本地目录,目录如下:

sudo docker run -i -t --name hz_nginx -v /home/cjx/www:/data ubuntu/hz-nginx /bin/bash

更详细的介绍请参看这篇文章,写的非常详细,也可以查看Docker官方教程Manage data in containers

备份、恢复和迁移

Docker容器的备份、恢复和迁移可以参考下面的两篇文章:

Docker的使用

  • 在使用Docker容器中使用apt-get update命令时遇到了Could not resolve 'archive.ubuntu.com'错误,使用这个方法解决了。
  • 启动docker容器

    # 启动docker容器
    sudo docker run -i -t --name hz_nginx -v /home/cjx/www:/data -p 80:80 ubuntu/hz_nginx env LANG=C.UTF-8 /bin/bash
  • Docker备份、恢复和迁移

    # 将容器生成镜像
    sudo docker commit -p hz_nginx ubuntu/hz_nginx
    
    # 备份容器镜像到本地
    sudo docker save -o /home/cjx/ubuntu-hz-nginx ubuntu/hz_nginx

标签: Ubuntu, Docker

添加新评论