yanfei 发表于 2018-5-28 12:16:32

Docker快速入门(2)——Docker企业实战

1. Docker安装

Ubuntu
Ubuntu 14.04 版本官方源中已经自带了 Docker 包,可以直接安装,按照如下安装方式,Docker 版本相对较旧。
# apt-get update
# apt-get -y install docker.io
# ln -sf /usr/bin/docker.io /usr/local/bin/docker
# sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.i如果使用较低版本的 Ubuntu 系统,需要先进行内核更新并重启系统后再进行安装:

# apt-get -y install linux-image-generic-lts-raring linux-headers-generic-lts-raring
# rebootCentOS

Docker 支持 CentOS6 及以后的版本,对于 CentOS6 系统可使用EPEL库安装 Docker,命令:
# yum -y install http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noaarch.rpm
# yum -y install docker-io对于CentOS7系统,由于已内置Docker,可以直接使用命令安装
# yum -y install docker2. Docker镜像
获取镜像
镜像是 Docker 运行容器的前提,可以使用 docker pull 命令从网络上下载镜像,格式: docker pull NAME[:TAG],如果不指定 TAG,默认选择 latest 标签,即仓库中最新版本镜像,也可指定 TAG 下载某特定版本镜像
# docker pull ubuntu                  # 获取仓库中最新ubuntu的镜像
# docker pull ubuntu:14.04            # 获取仓库中14.04版本的ubuntu镜像镜像是 Docker 运行容器的前提,可以使用 docker pull 命令从网络上下载镜像,格式: docker pull NAME[:TAG],如果不指定 TAG,默认选择 latest 标签,即仓库中最新版本镜像。
上述命令实际上相当于 docker pull registry.hub.docker.com/ubuntu:latest 命令,即从默认的注册服务器 registry.hub.docker.com 下载最新的 ubuntu 镜像。下载镜像后,即可创建容器。
查看镜像信息
使用 docker images 可以列出本地主机上的已有的镜像。
# docker images
来自哪个仓库                  标签信息             镜像的ID(唯一)   创建时间             镜像大小
REPOSITORY                     TAG               IMAGE ID            CREATED             SIZE
mysql                        latest            cf725f136fd2      3 weeks ago         383.4 MB
mongo                        latest            092cc6fb995c      3 weeks ago         342.4 MB
tomcat                         8.0               729a53c7b338      4 weeks ago         355.3 MB
centos                         6.6               d03626170061      11 weeks ago      202.6 MB
swarm                        latest            942fd5fd357e      12 weeks ago      19.47 MB
centos                         6                   a3c09d36ab4a      3 months ago      194.6 MB其中 TAG 用来标识同一个仓库的不同镜像。有时候为了使用方便,还可以使用 docker tag 命令为镜像添加新的标签

# docker tag registry.hub.docker.com/ubuntu:latest ubuntu:latest使用 TAG 命令实际上是为一个镜像指定了一个别名,相当于 Linux 中的硬链接一样。
搜寻镜像
使用 docker search 命令可以搜索远程仓库中共享的镜像,默认搜索 Docker Hub 官方仓库中的镜像。

# docker search mysql                              (下载次数)
镜像名称                镜像描述                                       镜像星级是否官方是否自动创建
NAME                   DESCRIPTION                                     STARSOFFICIAL   AUTOMATED
mysql                  MySQL is a widely used, open-source relati...   3402         
mysql/mysql-server   Optimized MySQL Server Docker images. Crea...   221   
centurylink/mysql      Image containing mysql. Optimized to be li...   46   
sameersbn/mysql                                                      41   删除镜像

使用 docker rmi 命令可以删除镜像,命令格式:docker rmi IMAGE 其中 IMAGE 可以为标签或 ID。上述讲过,镜像可以有多个别名,即标签。删除镜像时,如果使用 TAG 删除,镜像文件实际不删除,而当最后一个 TAG 删除,镜像文件才会删除。如果使用镜像ID进行删除,则先删除所有标签,然后删除镜像文件。

# docker rmi ubuntu:latest有时候,可以指定 -f 参数删除镜像,此时如果有容器依赖此镜像,删除镜像时,镜像文件实际没删除,而是打了一个新标签 <none>:<none>。因此正确的做法是先删除该镜像的所有容器,再删除镜像。
创建镜像
创建镜像最常用的有两种方式,另外一种不常用,这里也不讲。分别是基于已有的镜像和使用 Dockerfile 创建镜像。其中,基于 Dockerfile 创建镜像会有专门一章并结合实例进行讲解。

基于已有容器创建镜像使用命令:docker commit CONTAINER ]

# docker commit -m "This is comment" a9234b34fe2334eb2 newimage此时,会创建一个新镜像 newimage,利用 docker images 可以进行查看
导出和载入镜像
可以使用 docker save 和 docker load 命令来导出和载入镜像。假设有一个 mysql 镜像
# docker images
REPOSITORY                     TAG               IMAGE ID            CREATED             SIZE
mysql                        latest            cf725f136fd2      3 weeks ago         383.4 MB
# docker save mysql:latest > mysql.tar# 导出 mysql 镜像
# docker save -o mysql.tar mysql:latest # 使用 -o 参数导出镜像
# docker load < mysql.tar               # 载入 mysql 镜像
# docker load --input mysql.tar         # 使用 --input 参数载入镜像上传镜像
当用户注册了 DockerHub 网站用户时,即可使用 docker push 命令上传镜像到仓库,例如用户 user 上传本地的 mysql:latest 镜像。可以添加新的标签 user/mysql:latest 然后使用 docker push 命令上传
# docker tag mysql:latest user/mysql:latest
# docker push user/mysql:latest3. Docker容器
创建容器
可以使用 docker create 创建容器,但是创建的容器处于停止状态,使用 docker start 命令启动,但是通常我们是创建并启动容器,就需要使用 docker run 命令,下面命令是根据 mysql:latest 创建一个容器
# docker run -it mysql:latest /bin/bash   # -it 选项指可以进行交互当使用 docker run 创建容器室,后台标准操作包括:

[*]检测本地指定的镜像是否存在,不存在就从公有仓库下载
[*]利用镜像创建并启动一个动气
[*]分配一个文件系统,并在制度的镜像层外面挂载一层可读写层
[*]从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中,并从地址池中配置一个 ip 地址给容器
[*]执行用户指定的应用程序,执行完毕终止容器
Docker 指出容器的功能应该单一,譬如只提供 mysql 数据库服务等等。如果还需要其他服务,譬如 Web 服务,需要另外一个容器提供服务。类似这样的容器,我们更需要让容器能够像后台服务一样以守护态启动并运行。用户可以使用 -d 参数来实现
# docker run -d -it mysql:latest /bin/bash终止容器
可以使用 docker stop 命令来终止容器的运行,终止后的容器状态处于 Exited 状态。处于运行状态中的容器处于 Up 状态。另外,可以使用 docker ps 查看所有处于运行状态中的 docker 容器,如果想查看所有容器,使用 docker ps -a
# docker stop 23ab3444ff2323进入容器
使用 -d 参数时,容器启动后会进入后台,用户无法看到容器中的信息。此时如果想进入容器中做一些操作,或者查看一些信息的话,可以使用 docker attach 或者 docker exec 命令。其中 attach 命令可以使所有到同一个容器的窗口保持同步状态。当某个窗口阻塞时,其它窗口也无法操作。为了避免 attach 带来的不便,可以使用 docker exec 命令进入容器操作
# docker attach 23ab3444ff2323
# docker exec -it 23ab3444ff2323 /bin/bash删除容器
可以使用 docker rm 命令删除处于终止状态的容器,如果要删除一个处于运行状态中的容器,使用 -f 参数。
# docker rm 23ab3444ff2323导出导入容器
导出容器是指导出一个已经创建的容器到一个文件,不管此时容器是否处于运行状态,可以使用 docker export 命令。

# docker export ce554267d9a8 > container.tar可以将导出的容器传输到其他机器上,在其他机器上导入成为镜像实现容器的前移,使用 docker import 命令
# cat container.tar | docker import - test/container:latest4. Docker仓库
目前 Docker 官方维护了一个公共仓库https://hub.docker.com ,其中已经包括15000多个镜像。大部分需求可以通过在其中下载镜像来实现。可以通过 docker login 命令输入用户名,密码和有些完成注册和登录。
私有仓库

安装 Docker 后,可以通过官方提供的 registry 镜像简单搭建一套本地私有仓库环境。

# docker run -d -p 5000:5000 registry这将自动下载并启动一个 registry 容器,并创建蹦迪的私有仓库服务。默认情况下,会将仓库创建在容器的 /tmp/registry 目录下。可以通过 -v 参数将镜像文件存放在本地的指定路径上,如下存放于 /opt/registry
# docker run -d -p 5000:5000 -v /opt/registry:/tmp/registry registry管理仓库
本人搭建的私有仓库,查看地址为 192.168.154.144:5000,然后再虚拟机 unbuntu 里测试和上传与下载镜像。
查看已有镜像
# docker images
REPOSITORY                     TAG               IMAGE ID            CREATED             SIZE
mysql                        latest            cf725f136fd2      3 weeks ago         383.4 MB使用 docker tag 命令给这个镜像标记为 192.168.154.144:5000/test
# docker tag mysql:latest 192.168.154.144:5000/mysql
# docker push 192.168.154.144:5000/mysql用 curl 查看仓库 192.168.154.144:5000 中的镜像
# curl http://192.168.154.144:5000/v1/search
{
    "num_results": 1,
    "query": "",
    "result": [{
      "description": "",
      "name": "library/test"
    }]
}下载就可以到任意一台能访问192.168.154.144:5000地址的机器下载这个镜像了
# docker pull 192.168.154.144:5000/mysql
页: [1]
查看完整版本: Docker快速入门(2)——Docker企业实战