本文介绍怎样在 CentOS 7 上安装和启动 Docker 守护进程,并在容器里运行一个简单的网站。
1、安装
运行以下命令安装 Docker:
$ yum install docker
查看 Dcoker 的版本:
$ docker --version
Docker version 1.13.1, build 07f3374/1.13.1
启动 Docker 服务,设置为自启动:
$ systemctl start docker && systemctl enable docker
2、新建 Docker 项目
为了简化例子,我们创建一个仅有一个 HTML 文件的 WEB 项目。
1)新建 html 文件
新建 index.html 文件:
$ mkdir docker-demo
$ cd docker-demo
$ mkdir html
$ echo '<h1>Hello Docker!</h1>' > html/index.html
2)新建 Dockerfile文件
在上一步新建的 docker-demo 目录中新建一个 Dockerfile 文件用于构建 Docker 镜像,内容如下:
FROM nginx
COPY html/* /usr/share/nginx/html
每个 Dockerfile 都以 FROM … 开头。FROM nginx 的意思是以 Nginx 官方提供的镜像为基础来构建我们的镜像。
在构建时,Docker 会从 Docker Hub 查找和下载需要的镜像。Docker Hub 对于 Docker 镜像的作用就像 GitHub 对于代码的作用一样,它是一个托管和共享镜像的服务。
使用过和构建的镜像都会被缓存在本地。
第二行是把本地 index.html 文件复制到镜像的 /usr/share/nginx/html 目录下。也就是 Nginx 寻找静态文件的目录。
3、构建镜像
在项目目录(本例为 docker-demo 目录)下执行构建命令:
$ docker build -t docker-demo:0.1 .
这行命令中的 docker-demo 可以理解为这个镜像对应的应用名或服务名,0.1 是标签。Docker 通过名称和标签的组合来标识镜像。
可以用下面的命令来看到刚刚创建的镜像:
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-demo 0.1 fd7d0841b148 4 hours ago 109 MB
ls 其实是仿 linux 命令,还有 rm 也是如此。
注意:这里 image 是不带 s 的,千万不要写成 images。
Docker images 是另外的命令,也可以用来列出本地镜像,但用法不同:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-demo 0.1 fd7d0841b148 4 hours ago 109 MB
4、运行容器
Docker run 命令用于运行容器:
$ docker run --name docker-demo -d -p 8080:80 docker-demo:0.1
-
–name 参数用于设置镜像的名称;
-
-d 是 –detach 的简称,用于在后台运行容器并打印容器ID;
-
-p 是 –publish 的简称,用于将本地端口映射到容易端口;
-
docker-demo:0.1 是镜像的名称和标签。
注意:有些参数需要参数值,紧接着在参数后面,如 –name docker-demo;有些参数不需要参数,如 -d
用下面的命令可以看到正在运行中的容器:
$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f63850c4d6dd docker-demo:0.1 "nginx -g 'daemon ..." 14 seconds ago Up 13 seconds 0.0.0.0:8080->80/tcp docker-demo
这是可以使用 wget 命令查看服务是否正常启动:
$ wget http://localhost:8080
--2018-12-27 15:03:52-- http://localhost:8080/
Resolving localhost (localhost)... 127.0.0.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 23 [text/html]
Saving to: ‘index.html’
100%[======================================>] 23 --.-K/s in 0s
2018-12-27 15:03:52 (5.17 MB/s) - ‘index.html’ saved [23/23]
如果服务器开放了 8080 端口,可以通过外网 IP 访问这个最简单的网站,比如 http://111.111.111.111:8080。然后你会在浏览器看到我们刚才创建的「Hello Docker!」页面。