实战:构建自己的镜像
构建镜像有两种,一种是在命令行中实现,一种通过 dockerfile 实现
这里,我们以 ubuntu 为例,构建自己的镜像
命令行中实现
思路:
第一步:进入容器
docker run -it --name ubuntu_node_johanbo ubuntu:latest /bin/bash
解释:以 ubuntu:latest
为镜像构建名字为 ubuntu_node_johanbo 的容器,并进入容器中
第二步:在容器中安装 nodejs, npm 和 pm2
apt-get update && apt-get install -y nodejs npm && npm install pm2 -g
第三步:退出容器
按住 Ctrl + p + q
第四步: 将修改后的容器打包为镜像
docker ps 查看正在运行的容器,找到刚刚启动的容器Id
docker commit <容器ID> <自定义的镜像名>
docker images 查看镜像
此时,我们的镜像已经生成了。这个镜像中以 ubuntu 为底层,并安装了 node,npm 和 pm2 等包。如果你愿意,可以通过命令docker push <自定义镜像名>
推送至远端仓库
但这种方法,你需要在容器中做多次操作,一不小心也许就有出错。所以,大多数情况下,推荐第二种,使用 dockerfile 来规范你的镜像
dockerfile 构建镜像
第一步:编写 dockerfile
# 基于Ubuntu image
FROM daocloud.io/library/ubuntu:latest
# MAINTAINER
LABEL version="1.0" by="johan"
# 设置时区
RUN sudo sh -c "echo 'Asia/Shanghai' > /etc/timezone" && \
sudo dpkg-reconfigure -f noninteractive tzdata
# 更换 Ubuntu 镜像
RUN echo '\n\
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse\n\
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse\n\
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse\n\
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse\n\
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse\n\
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse\n\
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse\n\
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse\n\
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse\n\
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse\n'\
> /etc/apt/sources.list
# 安装Node.js与NPM
RUN apt-get update && apt-get -y install nodejs npm
第二步:构建镜像
docker build . -t ubuntu_node_johan:v1.0
完
以上两种为构建镜像的两种方式