关于docker的基本概念,请查看docker + Gitlab CI 的持续集成(一)
一、安装docker
docker 安装教程很多, git地址 搜download有很多方式下载,这里就不赘述了,同样可以使用免安装的包 安装好以后检查版本
docker version
复制代码
打印类似以下信息,恭喜你,千里之行已经开始了第一步
[root@VM_0_12_centos ~]# docker version
Client:
Version: 17.05.0-ce
API version: 1.29
Go version: go1.7.5
Git commit: 89658be
Built: Fri May 5 15:36:11 2017
OS/Arch: linux/amd64
复制代码
二、启动第一个容器
1、查找需要的image(以nginx为例)
docker search nginx
复制代码
docker 市场上会有很多相关的image,没有特殊需求的话,使用官方的即可
[root@VM_0_12_centos ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 9563 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1400 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 611 [OK]
jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 405 [OK]
kong Open-source Microservice & API Management ... 224 [OK]
webdevops/php-nginx Nginx with PHP-FPM 113 [OK]
kitematic/hello-world-nginx A light-weight nginx container that demons... 108
复制代码
2、下载iamge
docker pull nginx
复制代码
nginx可以指定版本号,写法为
docker pull nginx:版本号
复制代码
不指定的话默认为latest最新版本
3、查看下载好的image
docker images
复制代码
[root@VM_0_12_centos ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest c82521676580 6 weeks ago 109MB
复制代码
4、启动容器
docker run -d -p 80:80 --name nginx -v $PWD/dist/:/usr/share/nginx/html nginx
复制代码
- docker run 创建一个容器,里面运行一个镜像
- -d 容器能运行在后台,即守护进程
- -p 将容器对外的端口与宿主机的端口做映射 此处访问宿主机的80端口 其实就是访问容器的80端口
- —name 容器的名字,不写会自动生成随机的名字
- -v 可以理解为容器路径的映射,冒号前的宿主机的路径、冒号后的为容器内的路径,最终访问的是容器内/usr/share/nginx/html下的内容,启动容器时会自动从宿主机路径下同步到容器内
- nginx 是 pull 好的image镜像
5、查看启动的容器列表
docker ps
复制代码
[root@VM_0_12_centos ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d94ee9b43d3 nginx "nginx -g 'daemon ..." 2 weeks ago Up 2 weeks 0.0.0.0:80->80/tcp nginx
复制代码
此时访问服务器 ip 已经可以访问了,只不过nginx的根目录下没有文件,会提示nginx已经 ready
以上讲了直接使用仓库提供的镜像,那么怎么制作自己的image呢?
三、制作镜像
我们启动一个node服务就需要制作,因为是基于node的image的 1、在需要制作image的项目根目录创建Dockerfile文件,这里我们以node+koa的service项目为例 Dockerfile写入内容如下
FROM node:latest
RUN mkdir -p /home/Service
COPY . /home/Service
WORKDIR /home/Service
EXPOSE 8000
RUN npm install
CMD ["npm","start"]
复制代码
- FROM 即基础镜像
- RUN 执行该命令
- COPY 复制当前的内容到 文件夹
- WOEKDIR docker的工作目录
- EXPOSE 对外端口
- CMD 执行脚本
2、在Dockerfile文件所在目录执行build命令
docker build -t testImage .
复制代码
build 完成即可用命令查看image
docker images
复制代码
启动一下看看
docker run -d -p 5000:8000 --name testimage testimage
复制代码
大家还可以关注我的博客无声的博客