docker里安装ubuntu
使用 Ubuntu 官方镜像
Ubuntu 相关的镜像有很多,这里使用 -s 10
参数,只搜索那些被收藏 10 次以上的镜像
$ docker search -s 10 ubuntu NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Official Ubuntu base image 840 [OK] dockerfile/ubuntu Trusted automated Ubuntu (http://www.ubunt... 30 [OK] crashsystems/gitlab-docker A trusted, regularly updated build of GitL... 20 [OK] sylvainlasnier/memcached This is a Memcached 1.4.14 docker images b... 16 [OK] ubuntu-upstart Upstart is an event-based replacement for ... 16 [OK] mbentley/ubuntu-django-uwsgi-nginx 16 [OK] ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 15 [OK] clue/ttrss The Tiny Tiny RSS feed reader allows you t... 14 [OK] dockerfile/ubuntu-desktop Trusted automated Ubuntu Desktop (LXDE) (h... 14 [OK] tutum/ubuntu Ubuntu image with SSH access. For the root... 12 [OK]
注意,Docker 1.12 版本中已经不支持 --stars 参数,则可以使用 -f stars=N 参数。
根据搜索出来的结果,读者可以自行选择下载镜像并使用。
下面以 ubuntu 14.04 为例,演示如何使用该镜像安装一些常用软件。
首先使用 -ti
参数启动容器,登录 bash,查看 ubuntu 的发行版本号。
Ubuntu
基本信息
Ubuntu 是流行的 Linux 发行版,其自带软件版本往往较新一些。
该仓库位于 https://hub.docker.com/_/ubuntu/ ,提供了 Ubuntu 从 12.04 ~ 16.10 各个版本的镜像。
使用方法
默认会启动一个最小化的 Ubuntu 环境。
$ docker run --name some-ubuntu -i -t ubuntu
root@523c70904d54:/#
当试图直接使用 apt-get
安装一个软件的时候,会提示 E: Unable to locate package
。
1 root@7d93de07bf76:/# apt-get install curl 2 Reading package lists... Done 3 Building dependency tree 4 Reading state information... Done 5 E: Unable to locate package curl
这并非系统不支持 apt-get
命令。Docker 镜像在制作时为了精简清除了 apt 仓库信息,因此需要先执行 apt-get update
命令来更新仓库信息。更新信息后即可成功通过 apt-get 命令来安装软件。
root@7d93de07bf76:/# apt-get update Ign http://archive.ubuntu.com trusty InRelease Ign http://archive.ubuntu.com trusty-updates InRelease Ign http://archive.ubuntu.com trusty-security InRelease Ign http://archive.ubuntu.com trusty-proposed InRelease Get:1 http://archive.ubuntu.com trusty Release.gpg [933 B] ...
首先,安装 curl 工具。
root@7d93de07bf76:/# apt-get install curl Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: ca-certificates krb5-locales libasn1-8-heimdal libcurl3 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libidn11 libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libroken18-heimdal librtmp0 libsasl2-2 libsasl2-modules libsasl2-modules-db libwind0-heimdal openssl ... root@7d93de07bf76:/# curl curl: try 'curl --help' or 'curl --manual' for more information
接下来,再安装 apache 服务。
root@7d93de07bf76:/# apt-get install -y apache2 Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: apache2-bin apache2-data libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libxml2 sgml-base ssl-cert xml-core ...
启动这个 apache 服务,然后使用 curl 来测试本地访问。
root@7d93de07bf76:/# service apache2 start
* Starting web server apache2 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
*
root@7d93de07bf76:/# curl 127.0.0.1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--
Modified from the Debian original for Ubuntu
Last updated: 2014-03-19
See: https://launchpad.net/bugs/1288690
-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Apache2 Ubuntu Default Page: It works</title>
<style type="text/css" media="screen">
...
配合使用 -p
参数对外映射服务端口,可以允许容器外来访问该服务。
相关资源
Debian
官网:https://www.debian.org/
Neuro Debian
官网:http://neuro.debian.net/
Debian
官方仓库:https://github.com/Debian
Debian
官方镜像:https://hub.docker.com/_/debian/
Debian
官方镜像仓库:https://github.com/tianon/docker-brew-debian/
Ubuntu
官网:http://www.ubuntu.org.cn/global
Ubuntu
官方仓库:https://github.com/ubuntu
Ubuntu
官方镜像:https://hub.docker.com/_/ubuntu/
Ubuntu
官方镜像仓库:https://github.com/tianon/docker-brew-ubuntu-core