Docker是现在比较流行的部署Web应用平台,但是现在对其的中文说明较少,特别是安装部分,所以做该篇以记录。
Docker安装
操作系统:CentOS7
Docker可是便捷的使用yum进行安装步骤如下:
CentOS7本身的yum并不包含docker的源,通过如下方式将YUM源加入:
sudo yum install yum-utils -y
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
加入YUM源之后,即可直接安装docker:
sudo yum -y install docker-ce
设置docker服务开机运行:
sudo systemctl enable docker
启动docker服务:
sudo systemctl start docker
简单的Docker部署
Docker官方提供很多类型的镜像提供使用可以通过下述方式直接搜索。
sudo docker search ubuntu //搜索名字中带有ubuntu的镜像
可以得到如下的返回
image.png之后可以通过下述代码部署镜像
sudo docker pull ubuntu
创建服务镜像
先创建一个文件夹作为操作的文件夹,并进入该文件夹。
mkdir ~/project
cd ~/project
创建一个Dockerfile文件,创建镜像的操作会使用Dockerfile内的信息进行创建和业务部署的操作。所以Dockerfile对于业务部署很重要。具体参见Dockerfile编写说明
记创建的镜像标签为<image_tag>,使用下述代码可以创建该镜像。
sudo docker build -t <image_tag> .
其中build是docker的操作参数,-t 之后是镜像的tag列表,每个tag格式为name:tag,默认的taglist的值为空列表[]。此外"."指定了工作的文件夹,该文件夹。该操作会默认调用该文件夹下的Dockerfile文件。
Dockerfile编写说明
创建的创建镜像的时候,Dockerfile是必不可少的。一般约定,操作指令为全大写的单词,但本身不分大小写,以下是开始介绍文件的配置和语法。
引用镜像
通常,业务的镜像都可以通过对基础镜像进行更改得到的,而导入基础镜像则可以通过下述部分实现。
FROM <image_name>
FROM意味着导入引用一个镜像,<image_name>为镜像名称。Dockerfile文件需要以该句作为开头。
注释
#可以对该行进行注释
#这句话不会被执行
署名
使用MAINTAINER设置镜像作者名称。
#作者署名为auther
MAINTAINER auther
指定用户
使用USER指定运行指令用户。
#以root用户执行操作
USER root
设置环境变量
使用ENV设置环境变量。ENV以键值对形式进行设置。
#设置将Python的路径设置为环境变量python_home
ENV python_home /usr/lib/python
#多个变量可以以这种形式设置
ENV python_home /usr/lib/python
ENV my_name Mr.\ slords
ENV url_location jianshu.com
#或者
ENV python_home=/usr/lib/python my_name=Mr.\ slords
url_location=jianshu.com
引入文件
使用ADD,COPY将文件复制入容器内。
#将当前目录下的ta-lib-0.4.0-src.tar.gz文件解压到容器中的当前目录下
ADD ./ta-lib-0.4.0-src.tar.gz ./
#将网络位置的ta_lib包内容复制到容器中的当前目录下
ADD http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz ./
#将当前目录下的deb文件复制到容器中的/deb目录下
COPY ./*.deb /deb/
ADD和COPY在功能上近似,但是ADD在功能上比COPY强大在
1.ADD支持网络位置
2.当文件是压缩包的情况下ADD会自动将其解压至对应位置
指定端口
使用EXPOSE设定容器在运行时监听的端口
#监听65534端口
EXPOSE 65534;
设置工作目录
使用WORKDIR可以指定RUN、CMD与ENTRYPOINT运行指令所在的工作目录。
#设置工作目录在/home/admin下
WORKDIR /home/admin
运行指令
使用RUN运行指令。
#ubuntu下创建一个temp文件夹
mkdir temp
设置默认指令
使用CMD设定一个默认的指令,会在run时执行。
#当终端使用
#docker run CONTAINER_NAME
#时,设置容器会执行uname -a
CMD uname -a
#或者
CMD ["uname","-a"]
#如果设置了
#ENTRYPOINT uname
#做如下设置列表中内容作为默认参数传入
CMD ["-a"]
CMD之会有一条生效,后一条会覆盖前一条。
设置入口
设置入口可以限制运行的代码,使用ENTRYPOINT进行设置
#当终端使用
#docker run CONTAINER_NAME abc
#时,设置容器会执行echo ABC abc
ENTRYPOINT echo ABC
#或者
ENTRYPOINT ["echo ", "ABC"]
其他
其他配置指令可参考
Dockerfile reference | Docker Documentation: https://docs.docker.com/engine/reference/builder/
网友评论