一个单独的容器应用

开始学习Kubernetes,并对学习过程做一些简单记录。本篇记录以Docker容器形式启动一个Web应用的方法,首先将Web需要的Html文件以本地文件的形式挂载到Nginx容器上,然后再尝试写一个Dockerfile将所需要的网页文件直接写入到Docker镜像中,创建一个镜像并以新镜像直接运行此应用。虚拟机和宿主机用Bridge方式连接。从宿主机浏览器访问虚拟机中所运行Docker容器内的Web服务。

在容器中启动Web应用

安装docker

修改安装源到阿里云,

1
2
3
4
5
6
7
8
9
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装net-tools和docker并启动,

1
2
3
4
yum install net-tools
yum install docker
systemctl enable docker
systemctl start docker

修改docker的镜像加速指向阿里云,

1
2
3
4
5
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": ["https://l8gz8qd0.mirror.aliyuncs.com"]
}
EOF

重启docker服务

1
2
systemctl daemon-reload
systemctl restart docker

从镜像启动一个Web应用

将之前制作完成的网页放入当前目录html路径下,

1
2
3
4
5
#Ubuntu 755就行,这个权限,mmp
chmod -R 777 ./html

#其中-v是挂载物理机的指定目录到容器内的指定目录,-p是将物理机的端口号映射到容器内端口号
[root@master ~]# docker run -p 80:80 -v $PWD/html:/usr/share/nginx/html nginx

写一个Dockerfile

将网页文件写入到镜像中,并发布到镜像仓库中。

1
2
3
4
#dockerfile
FROM nginx
MAINTAINER "toto <toto.zhang@gmail.com>"
COPY $PWD/html/ /usr/share/nginx/html/
1
2
3
4
5
6
7
8
9
10
11
[root@master ~]# docker build -t mywebv1 ./
Sending build context to Docker daemon 15.54 MB
Step 1/3 : FROM nginx
---> 53f3fd8007f7
Step 2/3 : MAINTAINER "toto <toto.zhang@gmail.com>"
---> Using cache
---> d4e48c59c558
Step 3/3 : COPY $PWD/html/ /usr/share/nginx/html/
---> Using cache
---> eaa41b6b815d
Successfully built eaa41b6b815d

用新镜像启动Web应用

当一个开发人员做完了这个应用,运维直接一条指令自动执行。

1
2
3
4
5
[root@master ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
mywebv1 latest eaa41b6b815d 21 hours ago 124 MB

[root@master ~]# docker run -p 80:80 mywebv1

从外部浏览器访问位于容器内的web服务。