1. 安装/升级Docker客户端

对于10.10.3以下的用户 推荐使用Docker Toolbox

Mac安装文件:http://mirrors.aliyun.com/docker-toolbox/mac/docker-toolbox/

对于10.10.3以上的用户 推荐使用Docker for Mac

Mac安装文件:http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/

2. 配置镜像加速器

针对安装了Docker Toolbox的用户,您可以参考以下配置步骤:

创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。

docker-machine create --engine-registry-mirror=https://7nehluel.mirror.aliyuncs.com -d virtualbox default

查看机器的环境配置,并配置到本地,并通过Docker客户端访问Docker服务。

docker-machine env default
eval "$(docker-machine env default)"
docker info

针对安装了Docker for Mac的用户,您可以参考以下配置步骤:

在任务栏点击 Docker Desktop 应用图标 -> Perferences,在左侧导航菜单选择 Docker Engine,在右侧输入栏编辑 json 文件。将

https://7nehluel.mirror.aliyuncs.com加到"registry-mirrors"的数组里,点击 Apply & Restart按钮,等待Docker重启并应用配置的镜像加速器。

3. Docker基本操作命令

拉取镜像:docker pull centos

拉取并运行镜像:docker run hello-world

查看所有的镜像:docker images

查看正在运行的容器:docker ps

查看正在运行或退出的容器: docker ps -a

删除镜像:docker rmi hello-world

删除容器:docker rm 2be4d0f44088

查看docker所有运行或退出容器的ID:docker ps -qa

删除所有运行的容器:docker rm $(docker ps -qa)

用终端绑定容器(防止直接被docker引擎杀死):docker run -it centos

进入容器:docker exec -it 2be4d0f44088 /bin/bash

退出容器:exit

停止容器:docker stop 2be4d0f44088

杀死容器:docker kill 2be4d0f44088

从宿主机拷贝文件到容器:docker cp ./a.txt: 2be4d0f44088:/

docker run命令具体参数(docker run -it ...)

给容器添加主机名到ip的映射关系:--add-host server1:192.168.223.141 centos

给容器指定名字: --name mycentos centos

本地端口映射到容器端口:-p 5000:5000

4. 数据卷:实现数据持久化

实质上就是数据映射

docker run -it -v /mydatas:/container/datas centos(宿主机目录:容器目录)

-v 容器中看到的文件就是宿主机上的文件

数据卷的价值:容器被删除后,数据不会被删除

使用数据卷实现MySQL的持久化:

-v /mysql/datas:/var/lib/mysql

5. Dockerfile

是镜像的描述文件

基本命令:

FROM:我们构建的镜像是基于哪个镜像来的

MAINTAINER:定义作者

ADD:拷贝文件并解压

COPY:拷贝

RUN:运行shell命令

ENV:定义环境变量

CMD:在启动容器的时候,执行的命令

WORKDIR:进入到容器之后的落脚点

EXPOSE:容器对外暴露的端口

ENTRYPOINT:在启动容器的时候,执行的命令

1. 基本Example:

FROM centos:latest
MAINTAINER rokey
COPY ./a.txt /
CMD ["/bin/bash/"]

构建一个自己的镜像

docker build -t mycentos:v1.0 .

2. ADD\COPY\ENV\RUN

FROM centos:latest
MAINTAINER rokey
COPY ./jdk-8u60-linux-x64.tar.gz /
RUN tar -zxf /jdk-8u60-linux-x64.tar.gz
ENV JAVA_HOME=jdk1.8.0_60
ENV PATH=$JAVA_HOME/bin:$PATH
CMD ["/bin/bash/"]

等效(ADD自动sh)

FROM centos:latest
MAINTAINER rokey
ADD ./jdk-8u60-linux-x64.tar.gz ./
ENV JAVA_HOME=jdk1.8.0_60
ENV PATH=$JAVA_HOME/bin:$PATH
CMD ["/bin/bash/"]

3. WORKDIR 

FROM centos:latest
MAINTAINER rokey
WORKDIR /datas/
ADD ./jdk-8u60-linux-x64.tar.gz ./
ENV JAVA_HOME=jdk1.8.0_60
ENV PATH=$JAVA_HOME/bin:$PATH
CMD ["/bin/bash/"]

4. EXPOSE 

FROM centos:latest
MAINTAINER rokey
WORKDIR /datas/
ADD ./jdk-8u60-linux-x64.tar.gz ./
ENV JAVA_HOME=jdk1.8.0_60
ENV PATH=$JAVA_HOME/bin:$PATH
ADD ./apache-tomcat-8.5.57.tar.gz ./
EXPOSE 8080
CMD ["./apache-tomcat-8.5.57/bin/catalina.sh", "run"]

5. ENTRYPOINT

1)CMD的指令会追加到ENTRYPOINT之后,但是多个CMD和ENTRYPOINT都只执行最后一个。

2)启动时增加的参数也可以追加到ENTRYPOINT后 

6. 使用Dockerfile来构建SpringBoot镜像

FROM centos:latest
MAINTAINER rokey
WORKDIR /datas/
ADD ./jdk-8u60-linux-x64.tar.gz ./
ENV JAVA_HOME=/datas/jdk1.8.0_60
ENV PATH=$JAVA_HOME/bin:$PATH
COPY ./springboot-1.0-SNAPSHOT.jar ./boot.jar
EXPOSE 8080
CMD ["java", "-jar", "boot.jar"]