SQL Server 真是越来越有看头。当我们还在为 Linux 上运行 SQL Server 而兴奋的时候,SQL Server 已经开启了 容器化之路,至此才能看清微软的胸怀,开始拥抱更大的世界。当我越来越深入去阅读有关 Docker 容器的文档,已然发现曾经部署上千台 Linux MySQL 的场景,如今在 Docker 的帮助下,SQL Server 也是手到擒来。如果 SQL Server 再匹配一个分布式计算引擎,那也是分分钟即可打造一个计算怪兽,和小象 Hadoop 分庭抗礼。届时玩 SQL 的朋友们不用分心去折腾 Hadoop/Spark, 仅用 T-SQL 依然可以笑傲江湖。因为人工智能,机器学习算法本就是数据集合操作,天生和 SQL 结合紧密。不信看我的这篇:
机器学习算法之 KNN 的 SQL 实现
当然,理想是要有的,目前还是将心放一放,回归这次的主题, Docker.
接触容器化实践,始于团队 2017 的 CRM 产品发布流程改革,微服务化。
现将整个过程梳理一下,对 SQL Server 容器化进程做一个明晰的总结。
Docker 概念以及作用
Docker 用来发布 SQL Server 部署的方法和优势
Device Manager
AUFS
vfs
btrfs
默认存储驱动是 Device Mapper
- 内核必须支持并开启 cgroup 和命名空间功能
[root@centos00 log]# uname -a
Linux centos00 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@centos00 log]# ls -l /sys/class/misc/device-mapper
lrwxrwxrwx. 1 root root 0 Aug 22 18:33 /sys/class/misc/device-mapper -> ../../devices/virtual/misc/device-mapper
或者直接查当前运行的设备
[root@centos00 log]# grep device-mapper /proc/devices
253 device-mapper
若没有则运行下面脚本安装
yum install -y device-mapper
modprobe dm_mod
此仓库只是在 centos 上安装 Docker 的时候需要,当然 RedHat 也是同门。而 Fedora 则不需要,因为 EPEL 是 Fedora 出品,已经包含了此库。
https://fedoraproject.org/wiki/EPEL
EPEL: Extra Packages For Enterprise Linux
顾名思义,这是专门为企业版 Linux 打造的扩展功能库。
CentOS 6/7 安装路径各不相同:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
而正式的安装则简单的多:
yum install -y docker
[root@centos00 log]# docker info
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
以上脚本可用来检查 Docker 运行时信息,亦可用来检查 Docker 是否运行
启动 Docker 进程以及配置开机运行 Docker :
systemctl start docker
systemctl enable docker
[root@centos00 log]# systemctl start docker
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
[root@centos00 log]# systemctl status docker.service -l
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Thu 2018-08-30 07:45:41 CST; 2min 19s ago
Docs: http://docs.docker.com
Process: 31489 ExecStart=/usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --init-path=/usr/libexec/docker/docker-init-current --seccomp-profile=/etc/docker/seccomp.json $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY $REGISTRIES (code=exited, status=1/FAILURE)
Main PID: 31489 (code=exited, status=1/FAILURE)
Aug 30 07:45:38 centos00 systemd[1]: Starting Docker Application Container Engine...
Aug 30 07:45:38 centos00 dockerd-current[31489]: time="2018-08-30T07:45:38.949026762+08:00" level=warning msg="could not change group /var/run/docker.sock to docker: group docker not found"
Aug 30 07:45:38 centos00 dockerd-current[31489]: time="2018-08-30T07:45:38.954488551+08:00" level=info msg="libcontainerd: new containerd process, pid: 31496"
Aug 30 07:45:41 centos00 dockerd-current[31489]: Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot into a newer kernel or disable selinux in docker (--selinux-enabled=false)
Aug 30 07:45:41 centos00 systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Aug 30 07:45:41 centos00 systemd[1]: Failed to start Docker Application Container Engine.
Aug 30 07:45:41 centos00 systemd[1]: Unit docker.service entered failed state.
Aug 30 07:45:41 centos00 systemd[1]: docker.service failed.
参考这篇文章:
https://stackoverflow.com/questions/45461307/selinux-is-not-supported-with-the-overlay-graph-driver
执行命令:
[root@centos00 log]# cat /etc/sysconfig/docker-storage
DOCKER_STORAGE_OPTIONS="--storage-driver overlay2 "
修改其 storage driver,使其应用 devicemapper :
[root@centos00 log]# cat /etc/sysconfig/docker-storage
DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper "
再次启动 docker, 并检查 Docker 的状态
[root@centos00 log]# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 1.13.1
Storage Driver: devicemapper
Pool Name: docker-253:0-101679883-pool
Pool Blocksize: 65.54 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 11.8 MB
Data Space Total: 107.4 GB
Data Space Available: 29.25 GB
Metadata Space Used: 581.6 kB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.147 GB
Thin Pool Minimum Free Space: 10.74 GB
Udev Sync Supported: true
Deferred Removal Enabled: true
Deferred Deletion Enabled: true
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.135-RHEL7 (2016-09-28)
Logging Driver: journald
Cgroup Driver: systemd
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc docker-runc
Default Runtime: docker-runc
Init Binary: /usr/libexec/docker/docker-init-current
containerd version: (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1)
runc version: 5eda6f6fd0c2884c2c8e78a6e7119e8d0ecedb77 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f)
init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
seccomp
WARNING: You're not using the default seccomp profile
Profile: /etc/docker/seccomp.json
selinux
Kernel Version: 3.10.0-514.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 4
Total Memory: 3.699 GiB
Name: centos00
ID: DORM:3S6Z:Y33P:TWDH:MT52:NRJR:T5LY:MZYT:37MU:HP3O:JDTS:OFRE
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Registries: docker.io (secure)
[root@centos00 log]# docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
Trying to pull repository docker.io/library/ubuntu ...
latest: Pulling from docker.io/library/ubuntu
124c757242f8: Downloading [===============================> ] 19.84 MB/31.76 MB
2ebc019eb4e2: Download complete
dac0825f7ffb: Download complete
82b0bb65d1bf: Download complete
ef3b655c7f88: Download complete
这是简易版本的创建新容器的方式。如果容器不是远程服务器维护的,而在本地局域网(为了安全,放在本地局域网缓存),创立新容器的方法又有稍微不同。
当命令执行完毕,此时我们已经在 Docker 新建的容器里面:
root@ecb9d7b74b07:~# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 ecb9d7b74b07
另起一个窗口,检查开启的容器
[root@centos00 huangyun]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ecb9d7b74b07 ubuntu "/bin/bash" 9 minutes ago Up 9 minutes vibrant_thompson
这是一个临时起的容器,一旦退出执行了 docker run -i -t ubuntu /bin/bash 的窗口,容器就随之关闭了。
如果要建立一个长久不关闭的容器,就需要执行面的命令来安装守护容器:
docker run --name daemon_dave -d ubuntu /bin/sh -c "while true ;
do echo hello world; sleep 1 ; done"
-d 标识了此容器运行在后台,命令执行完之后,返回主机。
可以执行下面的命令,连接后台执行的容器:
[root@centos00 huangyun]# docker exec -i -t daemon_dave /bin/bash
root@eb6cb2a3b7b6:/# top
top - 14:19:01 up 16:17, 0 users, load average: 0.29, 0.21, 0.20
Tasks: 4 total, 1 running, 3 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.6 us, 1.2 sy, 0.0 ni, 98.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3878288 total, 114852 free, 2647828 used, 1115608 buff/cache
KiB Swap: 2097148 total, 2092540 free, 4608 used. 831552 avail Mem
执行下面命令即可关闭一个正在运行的容器:
[root@centos00 website]# docker stop nginx_server_1
nginx_server_1
[root@centos00 website]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@centos00 website]#
docker ps 可以用来检查当前运行着的容器。
以特定名字运行一个容器之后,这名字就一直保存着,下次运行,如果再以这份名字执行相应的运行程序,会报如下的错误:
[root@centos00 website]# docker run -d -p 80 --name nginx_server_1 -v /var/www/html/website:/var/www/html/website:rw ubuntu/nginx3
/usr/bin/docker-current: Error response from daemon: Conflict. The container name "/nginx_server_1" is already in use by container f40d10674908782758915399d3f16f1c5207e2907cb90e25f3689bccb9449d34. You have to remove (or rename) that container to be able to reuse that name..
See '/usr/bin/docker-current run --help'.
不知道为什么 Docker 主程会一直保存着运行过的 docker 名字:
[root@centos00 website]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17f8ba709f49 ubuntu/nginx3 "nginx" 4 minutes ago Exited (0) 3 minutes ago hardcore_pare
f40d10674908 ubuntu/nginx3 "nginx" 10 hours ago Exited (0) 6 minutes ago nginx_server_1
7baea86e09b2 ubuntu/nginx2 "/bin/sh" 10 hours ago Exited (2) 10 hours ago determined_bartik
a4a3348bf5b4 ubuntu/nginx2 "/bin/sh" 10 hours ago Exited (0) 10 hours ago quirky_keller
d944f39ba4b5 ubuntu/nginx2 "nginx" 10 hours ago Exited (1) 10 hours ago amazing_wozniak
498f38dab68d ubuntu/nginx2 "nginx" 10 hours ago Exited (1) 10 hours ago website
e91147812d90 ubuntu/nginx2 "/bin/sh" 11 hours ago Exited (0) 10 hours ago reverent_golick
b2dc934e76cb ubuntu/nginx2 "/bin/sh" 11 hours ago Exited (0) 11 hours ago nginx2
4389f303f89f ubuntu/ping "/bin/sh" 11 hours ago Exited (0) 11 hours ago dockernginx1
425db7295d54 ubuntu/ping "/bin/sh" 11 hours ago Exited (0) 11 hours ago dockernginx
4092ee432cdc ubuntu/ping "/bin/sh" 11 hours ago Exited (0) 11 hours ago ubuntu00
2eedc14e316f c58e6a4eb329 "/bin/sh -c 'apt-g..." 11 hours ago Exited (100) 11 hours ago nervous_stallman
8393f330888c ubuntu/nginx "/bin/bash" 12 hours ago Exited (0) 12 hours ago gracious_leavitt
b106b1b31c84 ubuntu/nginx "/bin/bash" 13 hours ago Exited (127) 12 hours ago nginx_server
6f748f358454 ubuntu/ping "/bin/bash" 15 hours ago Exited (0) 15 hours ago compassionate_brahmagupta
e4a3a8acc032 centos:7.4.1708 "/bin/sh" 17 hours ago Exited (0) 17 hours ago centos7
eb6cb2a3b7b6 ubuntu "/bin/sh -c 'while..." 2 days ago Exited (137) 12 hours ago daemon_dave
ecb9d7b74b07 ubuntu "/bin/bash" 2 days ago Exited (127) 12 hours ago vibrant_thompson
[root@centos00 website]#
当再一次使用其中之一运行容器时,名字会因为重复而被拒绝运行。
针对这种需要使用同一个名字重启容器的情况,一般的解决方法有3种:
# docker run -d -p 80 --rm --name nginx_server_1 -v /var/www/html/website:/var/www/html/website:rw ubuntu/nginx3
# docker stop nginx_server_1
# docker rm nginx_server_1
# docker restart nginx_server_1
Docker 公司出版了自己维护和运营的一些镜像,官方网站维护了这份列表:
https://hub.docker.com/
注册一个 Docker 官网的账户 , dblenis, l*w*6.
每个仓库中都存放着各种镜像,执行命令,可以将这些镜像都拉到本地存储:
[root@centos00 containers]# docker pull centos
Using default tag: latest
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
256b176beaff: Pull complete
Digest: sha256:6f6d986d425aeabdc3a02cb61c02abb2e78e57357e92417d6d58332856024faf
Status: Downloaded newer image for docker.io/centos:latest
[root@centos00 containers]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/ubuntu latest 16508e5c265d 9 days ago 84.1 MB
docker.io/centos latest 5182e96772bf 3 weeks ago 200 MB
[root@centos00 containers]#
每个镜像都会带有自己的标签,在建立新容器的时候带上这份标签,会让我们更明白操作的对象是什么,会有什么异常:
[root@centos00 containers]# docker run --name centos7 -d centos:centos7.4.1708 /bin/sh
如果不指定特定标签,在拉取官网镜像时,则拉取的是最新的。
两种方法:
使用 Docker Commit 命令
使用 Docker build 命令和 Dockerfile 文件
通过前面新建的 ubuntu 没有 ping 的功能,我希望可以将 ping 功能安装进去,然后打包一个新的镜像,放在 Docker 上分享。
# apt-get install iputils-ping
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libcap2 libcap2-bin libidn11 libpam-cap
The following NEW packages will be installed:
iputils-ping libcap2 libcap2-bin libidn11 libpam-cap
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 140 kB of archives.
After this operation, 537 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
apt-get 安装一些其他软件,方便以后使用,提交这些更改,将其完整的做成一个容器镜像。以后若要新建容器,只需要在此镜像基础上新建便可。
[root@centos00 huangyun]# docker commit daemon_dave ubuntu/ping
若此时查看镜像库:
[root@centos00 huangyun]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu/ping latest 2eb12722cb2f 2 minutes ago 186 MB
docker.io/ubuntu latest 16508e5c265d 9 days ago 84.1 MB
docker.io/centos 7.4.1708 d3949e34634c 3 weeks ago 197 MB
docker.io/centos centos7.4.1708 d3949e34634c 3 weeks ago 197 MB
docker.io/centos latest 5182e96772bf 3 weeks ago 200 MB
发现 repository 里面多了一个 ubuntu/ping 的镜像。
就像是虚拟机多保存了一个 snapshot 一样,更方便的是我们居然可以依据这份 snapshot 来构建一个新的虚拟机。
Dockerfile 是一种特殊的文件,用来编写 DSL 指令,这些指令可以被 Docker 进程识别,并根据这些指令进行处理,最终完成一个可用的镜像制作。每一个镜像都是从基础镜像之上,一点点添加其他镜像组成的。一开始的基础镜像只是符合最低运行库的内核,比如 ubuntu 的基础镜像,居然连 ping, vi 都没有。如果需要这些功能作为新镜像的一部分,那么就要在 Dockerfile 里面新加。
更多的 Dockerfile 支持的指令:
http://docs.docker.com/reference/builder
Docker build 就是基于 Dockerfile ,将其中的指令发送给 Docker 进程,使其进行构建新镜像。Docker 进程可以看做是服务进程,提供一系列的后台服务,docker build 就是客户端,发送请求给 Docker ,Docker 统一调度工作完成 build 的请求。
[root@centos00 DockerWeb]# cat Dockerfile
# version : 0.0.1
FROM ubuntu:14.04
MAINTAINER Lenis Huang "[email protected]"
RUN apt-get update
RUN apt-get install -y nginx
RUN echo "Hello, World!" > /usr/share/nginx/html/index.html
EXPOSE 80
上面的脚本安装了 nginx 服务,并且创建了一个简单的静态网页,最后允许 80 开放给外界访问。
构建开始:
[root@centos00 DockerWeb]# docker build -t="ubuntu/nginx" .
Sending build context to Docker daemon 2.048 kB
Step 1/6 : FROM ubuntu:14.04
Trying to pull repository docker.io/library/ubuntu ...
14.04: Pulling from docker.io/library/ubuntu
72c01b436656: Extracting [=====> ] 7.799 MB/67.13 MB
944f9cf63457: Download complete
6856614e8780: Download complete
9d0e4b6507f2: Download complete
c00913272b9b: Download complete
正在 build 之中的镜像,这一步步看的更详细:
[root@centos00 DockerWeb]# docker build -t="ubuntu/nginx" .
Sending build context to Docker daemon 2.048 kB
Step 1/6 : FROM ubuntu:14.04
Trying to pull repository docker.io/library/ubuntu ...
14.04: Pulling from docker.io/library/ubuntu
72c01b436656: Pull complete
944f9cf63457: Pull complete
6856614e8780: Pull complete
9d0e4b6507f2: Pull complete
c00913272b9b: Pull complete
Digest: sha256:d6b8e25d0f3073bad48fda3f28d01ac0e8bd0e2a6d034c7f462619591a72c791
Status: Downloaded newer image for docker.io/ubuntu:14.04
---> 8789038981bc
Step 2/6 : MAINTAINER Lenis Huang "[email protected]"
---> Running in 6a16f9906861
---> aacb0d62260f
Removing intermediate container 6a16f9906861
Step 3/6 : RUN apt-get update
---> Running in ed843eeaf662
Ign http://archive.ubuntu.com trusty InRelease
Get:1 http://security.ubuntu.com trusty-security InRelease [65.9 kB]
Get:2 http://archive.ubuntu.com trusty-updates InRelease [65.9 kB]
Get:3 http://archive.ubuntu.com trusty-backports InRelease [65.9 kB]
Get:4 http://archive.ubuntu.com trusty Release.gpg [933 B]
Get:5 http://security.ubuntu.com trusty-security/main amd64 Packages [952 kB]
Get:6 http://archive.ubuntu.com trusty-updates/universe Sources [260 kB]
Get:7 http://security.ubuntu.com trusty-security/universe Sources [96.3 kB]
Get:8 http://archive.ubuntu.com trusty-updates/main amd64 Packages [1372 kB]
Get:9 http://archive.ubuntu.com trusty-updates/restricted amd64 Packages [21.4 kB]
Get:10 http://archive.ubuntu.com trusty-updates/universe amd64 Packages [606 kB]
Get:11 http://archive.ubuntu.com trusty-updates/multiverse amd64 Packages [16.0 kB]
Get:12 http://security.ubuntu.com trusty-security/restricted amd64 Packages [18.1 kB]
Get:13 http://archive.ubuntu.com trusty-backports/main amd64 Packages [14.7 kB]
Get:14 http://archive.ubuntu.com trusty-backports/restricted amd64 Packages [40 B]
Get:15 http://archive.ubuntu.com trusty-backports/universe amd64 Packages [52.5 kB]
Get:16 http://archive.ubuntu.com trusty-backports/multiverse amd64 Packages [1392 B]
Get:17 http://archive.ubuntu.com trusty Release [58.5 kB]
Get:18 http://archive.ubuntu.com trusty/universe Sources [7926 kB]
Get:19 http://archive.ubuntu.com trusty/main amd64 Packages [1743 kB]
Get:20 http://archive.ubuntu.com trusty/restricted amd64 Packages [16.0 kB]
Get:21 http://archive.ubuntu.com trusty/universe amd64 Packages [7589 kB]
Get:22 http://archive.ubuntu.com trusty/multiverse amd64 Packages [169 kB]
Get:23 http://security.ubuntu.com trusty-security/multiverse amd64 Packages [4721 B]
Get:24 http://security.ubuntu.com trusty-security/universe amd64 Packages [311 kB]
Fetched 21.4 MB in 11s (1822 kB/s)
Reading package lists...
---> 582a2a0c6fb9
Removing intermediate container ed843eeaf662
Step 4/6 : RUN apt-get install -y nginx
---> Running in 7199f88e91ef
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
fontconfig-config fonts-dejavu-core geoip-database libfontconfig1
libfreetype6 libgd3 libgeoip1 libjbig0 libjpeg-turbo8 libjpeg8 libtiff5
libvpx1 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxml2 libxpm4
libxslt1.1 nginx-common nginx-core sgml-base xml-core
Suggested packages:
libgd-tools geoip-bin fcgiwrap nginx-doc sgml-base-doc debhelper
The following NEW packages will be installed:
fontconfig-config fonts-dejavu-core geoip-database libfontconfig1
libfreetype6 libgd3 libgeoip1 libjbig0 libjpeg-turbo8 libjpeg8 libtiff5
libvpx1 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxml2 libxpm4
libxslt1.1 nginx nginx-common nginx-core sgml-base xml-core
0 upgraded, 25 newly installed, 0 to remove and 0 not upgraded.
Need to get 5593 kB of archives.
After this operation, 19.8 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main libgeoip1 amd64 1.6.0-1 [71.0 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ trusty/main libxau6 amd64 1:1.0.8-1 [8376 B]
Get:3 http://archive.ubuntu.com/ubuntu/ trusty/main libxdmcp6 amd64 1:1.1.1-1 [12.8 kB]
Get:4 http://archive.ubuntu.com/ubuntu/ trusty/main libxcb1 amd64 1.10-2ubuntu1 [38.0 kB]
Get:5 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libx11-data all 2:1.6.2-1ubuntu2.1 [111 kB]
Get:6 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libx11-6 amd64 2:1.6.2-1ubuntu2.1 [561 kB]
Get:7 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libxml2 amd64 2.9.1+dfsg1-3ubuntu4.13 [573 kB]
Get:8 http://archive.ubuntu.com/ubuntu/ trusty/main sgml-base all 1.26+nmu4ubuntu1 [12.5 kB]
Get:9 http://archive.ubuntu.com/ubuntu/ trusty/main fonts-dejavu-core all 2.34-1ubuntu1 [1024 kB]
Get:10 http://archive.ubuntu.com/ubuntu/ trusty-updates/main fontconfig-config all 2.11.0-0ubuntu4.2 [47.4 kB]
Get:11 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libfreetype6 amd64 2.5.2-1ubuntu2.8 [304 kB]
Get:12 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libfontconfig1 amd64 2.11.0-0ubuntu4.2 [123 kB]
Get:13 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libjpeg-turbo8 amd64 1.3.0-0ubuntu2.1 [104 kB]
Get:14 http://archive.ubuntu.com/ubuntu/ trusty/main libjpeg8 amd64 8c-2ubuntu8 [2194 B]
Get:15 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libjbig0 amd64 2.0-2ubuntu4.1 [26.1 kB]
Get:16 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libtiff5 amd64 4.0.3-7ubuntu0.9 [147 kB]
Get:17 http://archive.ubuntu.com/ubuntu/ trusty/main libvpx1 amd64 1.3.0-2 [556 kB]
Get:18 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libxpm4 amd64 1:3.5.10-1ubuntu0.1 [33.2 kB]
Get:19 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libgd3 amd64 2.1.0-3ubuntu0.10 [123 kB]
Get:20 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libxslt1.1 amd64 1.1.28-2ubuntu0.1 [145 kB]
Get:21 http://archive.ubuntu.com/ubuntu/ trusty/main geoip-database all 20140313-1 [1196 kB]
Get:22 http://archive.ubuntu.com/ubuntu/ trusty/main xml-core all 0.13+nmu2 [23.3 kB]
Get:23 http://archive.ubuntu.com/ubuntu/ trusty-updates/main nginx-common all 1.4.6-1ubuntu3.8 [19.1 kB]
Get:24 http://archive.ubuntu.com/ubuntu/ trusty-updates/main nginx-core amd64 1.4.6-1ubuntu3.8 [325 kB]
Get:25 http://archive.ubuntu.com/ubuntu/ trusty-updates/main nginx all 1.4.6-1ubuntu3.8 [5394 B]
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin:
Fetched 5593 kB in 6min 9s (15.2 kB/s)
Selecting previously unselected package libgeoip1:amd64.
(Reading database ... 11571 files and directories currently installed.)
Preparing to unpack .../libgeoip1_1.6.0-1_amd64.deb ...
Unpacking libgeoip1:amd64 (1.6.0-1) ...
Selecting previously unselected package libxau6:amd64.
Preparing to unpack .../libxau6_1%3a1.0.8-1_amd64.deb ...
Unpacking libxau6:amd64 (1:1.0.8-1) ...
Selecting previously unselected package libxdmcp6:amd64.
Preparing to unpack .../libxdmcp6_1%3a1.1.1-1_amd64.deb ...
Unpacking libxdmcp6:amd64 (1:1.1.1-1) ...
Selecting previously unselected package libxcb1:amd64.
Preparing to unpack .../libxcb1_1.10-2ubuntu1_amd64.deb ...
Unpacking libxcb1:amd64 (1.10-2ubuntu1) ...
Selecting previously unselected package libx11-data.
Preparing to unpack .../libx11-data_2%3a1.6.2-1ubuntu2.1_all.deb ...
Unpacking libx11-data (2:1.6.2-1ubuntu2.1) ...
Selecting previously unselected package libx11-6:amd64.
Preparing to unpack .../libx11-6_2%3a1.6.2-1ubuntu2.1_amd64.deb ...
Unpacking libx11-6:amd64 (2:1.6.2-1ubuntu2.1) ...
Selecting previously unselected package libxml2:amd64.
Preparing to unpack .../libxml2_2.9.1+dfsg1-3ubuntu4.13_amd64.deb ...
Unpacking libxml2:amd64 (2.9.1+dfsg1-3ubuntu4.13) ...
Selecting previously unselected package sgml-base.
Preparing to unpack .../sgml-base_1.26+nmu4ubuntu1_all.deb ...
Unpacking sgml-base (1.26+nmu4ubuntu1) ...
Selecting previously unselected package fonts-dejavu-core.
Preparing to unpack .../fonts-dejavu-core_2.34-1ubuntu1_all.deb ...
Unpacking fonts-dejavu-core (2.34-1ubuntu1) ...
Selecting previously unselected package fontconfig-config.
Preparing to unpack .../fontconfig-config_2.11.0-0ubuntu4.2_all.deb ...
Unpacking fontconfig-config (2.11.0-0ubuntu4.2) ...
Selecting previously unselected package libfreetype6:amd64.
Preparing to unpack .../libfreetype6_2.5.2-1ubuntu2.8_amd64.deb ...
Unpacking libfreetype6:amd64 (2.5.2-1ubuntu2.8) ...
Selecting previously unselected package libfontconfig1:amd64.
Preparing to unpack .../libfontconfig1_2.11.0-0ubuntu4.2_amd64.deb ...
Unpacking libfontconfig1:amd64 (2.11.0