Docker入门使用教程
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"]