“携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情
Docker学习记录
Dockerfile
Dockerfile是一个包含用于组合镜像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取文件中的指令自动生成镜像。
- 基础镜像信息
- 维护者信息
- 镜像操作指令
- 容器启动时执行指令
- ’#’ 为 Dockerfile 中的注释
- "&&" 符号连接命令,这样执行后,只会创建 1 层镜像
Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本镜像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。
#官网镜像
FROM registry.xxx.com/pathology/jpathology:java8-242
#设置工作目录
WORKDIR /code
#复制当前目录下的文件到工作目录
COPY ./xxxxx-web.jar /code/
COPY ./commit_id.txt /code/
#容器启动后执行命令
CMD ["java", "-jar", "xxxxx-web.jar"]
基础概念
镜像(Image)
Docker 镜像(Image)就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container)
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Respository)
仓库可看成一个代码控制中心,用来保存镜像。
docker常用命令
# 查看docker基础信息
docker info
# 拉取镜像
docker pull <image>:<tag>
# 移除容器
docker rm <containerId>
# 移除镜像
docker rmi <imageId>
# 启动、停止、重启容器
docker stop <containerId>
docker start <containerId>
docker restart <containerId>
docker run -itd --name <imageName> -P/-p<port>:<port> <imageName> /bin/bash
# 查看docker容器
docker ps <-a>
# 打包镜像
docker tag <path>/<name> <remotePath>/<name>
docker push <remotePath>/<name>
# 登录docker
docker login <remoteIp>
# 进入容器内部
docker exec -it <containerId> /bin/bash
# 从仓库搜索镜像
docker search <imageName>
Registry介绍
Registry是Dcoker官方的一个私有仓库镜像,可以将本地的镜像打标签进行标记然后push到以Registry起的容器的私有仓库中。企业可以根据自己的需求,使用Dokcerfile生成自己的镜像,并推到私有仓库中,这样可以大大提高拉取镜像的效率。
Rancher
Rancher是一个开源软件平台,使组织能够在生产环境中运行和管理Docker和Kubernetes。借助Rancher,企业不再需要使用一套独特的开源技术从头构建一个容器服务平台。 Rancher提供管理生产中容器所需的整个软件栈。
一、容器技术docker的思考方式是,将环境一起打包镜像,避免部署时的环境问题。
二、dockerfile记录镜像的制作步骤
三、镜像、容器、仓库的概念可以类比代码、进程、github