一、初始Docker
1、概念
Docker是一个用于开发、交付和运行应用程序的开放平台。 Docker 使您能够将应用程序与基础架构分开,以便您可以快速交付软件。使用 Docker,您可以管理您的基础架构以与管理应用程序相同的方式。通过利用 Docker 的 交付、测试和部署代码的方法,您可以显著减少编写代码和在生产环境中运行代码之间的延迟。
2、作用
解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
3、优势
①可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统;
②运行时利用沙箱机制形成隔离容器,各个应用互不干扰;
③启动、移除都可以通过一行命令完成,方便快捷。
4、常见命令
命令 | 说明 | 文档地址 |
---|---|---|
docker pull | 拉取镜像 | docker pull |
docker push | 推送镜像到DockerRegistry | docker push |
docker images | 查看本地镜像 | docker images |
docker rmi | 删除本地镜像 | docker rmi |
docker run | 创建并运行容器(不能重复创建) * --name:指定容器名称 * -p:指定端口映射 * -d:让容器后台运行 | docker run |
docker stop | 停止指定容器 | docker stop |
docker start | 启动指定容器 | docker start |
docker restart | 重新启动容器 | docker restart |
docker rm | 删除指定容器 | docs.docker.com |
docker ps | 查看容器 docker ps -a 查看所有容器,包括已经停止的 | docker ps |
docker logs | 查看容器运行日志 添加 -f 参数可以持续查看日志 | docker logs |
docker exec | 进入容器 | docker exec |
docker save | 保存镜像到本地压缩文件 | docker save |
docker load | 加载本地压缩文件到镜像 | docker load |
docker inspect | 查看容器详细信息 | docker inspect |
docker exec -it mn bash | 进入容器命令 * -it : 给当前进入的容器创建一个标准输入、输出终端, * 允许我们与容器交互 * mn :要进入的容器的名称 * bash:进入容器后执行的命令, * bash是一个linux终端交互命令 |
二、数据卷
1、数据卷(volume)
数据卷(volume) 是一个虚拟目录,是容器内目录 与宿主机 目录之间映射的桥梁。
注意 :
/var/lib/docker/volumes这个目录就是默认的存放所有容器数据卷的目录,其下再根据数据卷名称创建新目录,格式为/数据卷名/_data
。
2、数据卷命令
命令 | 说明 | 文档地址 |
---|---|---|
docker volume create | 创建数据卷 | docker volume create |
docker volume ls | 查看所有数据卷 | docs.docker.com |
docker volume rm | 删除指定数据卷 | docs.docker.com |
docker volume inspect | 查看某个数据卷的详情 | docs.docker.com |
docker volume prune | 清除数据卷 | docker volume prune |
注意:容器与数据卷的挂载要在创建容器时配置,对于创建好的容器,是不能设置数据卷的。而且创建容器的过程中,数据卷会自动创建。
三、镜像
1、定义
镜像就是一堆文件的集合,按照操作的步骤分层叠加而成,每一层形成的文件都会单独打包并标记一个唯一id,称为Layer (层)。这样,如果我们构建时用到的某些层其他人已经制作过,就可以直接拷贝使用这些层,而不用重复制作。
2、Dockersfile
Dockerfile 就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
指令 | 说明 | 示例 |
---|---|---|
FROM | 指定基础镜像 | FROM centos:6 |
ENV | 设置环境变量,可在后面指令使用 | ENV key value |
COPY | 拷贝本地文件到镜像的指定目录 | COPY ./xx.jar /tmp/app.jar |
RUN | 执行Linux的shell命令,一般是安装过程的命令 | RUN yum install gcc |
EXPOSE | 指定容器运行时监听的端口,是给镜像使用者看的 | EXPOSE 8080 |
ENTRYPOINT | 镜像中应用的启动命令,容器运行时调用 | ENTRYPOINT java -jar xx.jar |
3、构建镜像
#准备一个Demo项目和对应Dockerfile拷贝到虚拟机
#创建镜像目录,进入镜像目录
mkdir /root/demo
cd /root/demo
#构建镜像
docker build -t docker-demo:1.0 .
1.创建并运行容器
docker run -d --name dd -p 8090:8090 docker-demo:1.0
1.创建并运行容器
docker run -d --name dd -p 8090:8090 docker-demo:1.0
四、网络
命令 | 说明 | 文档地址 |
---|---|---|
docker network create | 创建一个网络 | docker network create |
docker network ls | 查看所有网络 | docs.docker.com |
docker network rm | 删除指定网络 | docs.docker.com |
docker network prune | 清除未使用的网络 | docs.docker.com |
docker network connect | 使指定容器连接加入某网络 | docs.docker.com |
docker network disconnect | 使指定容器连接离开某网络 | docker network disconnect |
docker network inspect | 查看网络详细信息 | docker network inspect |
注意:
-
在自定义网络中,可以给容器起多个别名,默认的别名是容器名本身
-
在同一个自定义网络中的容器,可以通过别名互相访问