Docker入门案例

Docker的使用

docker是一个开源的应用容器引擎,基于go语言实现,可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后完全发布到任何Linux机器上,也可以实现虚拟化

核心概念

  • Docker主机:安装了Docker程序的机器

  • Docker客户端:通过命令行或者其他工具使用Docker

  • Docker仓库:用来保存各种打包好的软件镜像

    • 中央仓库公有的HUB

  • Docker镜像:用于创建容器的

  • Docker容器:镜像的实例

一、常用命令

# 启动服务docker
service docker start
# 重启服务
service docker restart
# 停止服务
service docker stop
# 镜像容器操作
# http://hub.docker.com 所有镜像都可查看
# docker搜索mysql镜像
docker search mysql
# docker拉取mysql镜像可以指定版本默认为lastest
docker pull mysql:8.0.17
# 查看本机镜像
docker images
# 删除docker容器
docker rm [container-id or container-name]
# 删除docker镜像
docker rmi [container-id or image-name]
# 查看docker中的容器 -a全部all(无论有没有运行)
docker ps -a
# 新建并运行镜像 参数
# t伪终端 i交互界面 p端口映射 --name容器名 d后台运行 P随机映射端口
docker run -i -t -d -p 3306:3306 mysql
# 进入容器目录
docker attach [container-id or container-name]
# 运行容器
docker start [container-id or container-name]
# 停止容器
docker stop [container-id or container-name]
# 查看容器日志
# -f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出 -e携带参数给容器
docker logs -f [container-id or container-name]
# 查看端口映射
docker port [container-id or container-name]
# 可以查看容器内的运行的进程
docker top [container-id or container-name]
# 查看容器底层的配置信息返回一个json文件
docker inspect [container-id or container-name]
# 用于容器与主机之间的数据拷贝
docker cp [path] [container-id or container-name]:[path]
docker cp [container-id or container-name]:[path] [path]
# 推出并关闭容器/退出容器
exit/ctrl+p+q

# 登录mysql
docker exec -it [container-id] /bin/bash

二、容器数据卷

共享目录类似挂载,容器与主机之间数据共享,二者对数据卷中的数据共享(可读可写可/指定)

docker -it -v [/宿主机绝对路径]:[/容器内的目录]:[ro(宿主机只读不能写,主机可读可写) ] [image-name]
docker -it -v /mydata-host:/mydata-container:ro tomcat

DockerFile

  • ockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。

    docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。

test.java ====>test.class

Docker images ========> DockerFile

 

docker bulid -f [dockerfile] -t [name]:[version]

数据卷容器

  • 名命的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据的共享,这个父容器称为数据卷容器

  • 父容器的数据通过数据卷传递给子容器

docker run -it --name dc02 --volumes-from dc01 my-centos-image

三、Dockerfile

Dockerfile的执行

  • 保留字指令,大写,后面至少要有一个参数

  • 从上到下、顺序执行

  • #表示注释

  • 每一个指令都会创建一个镜像

  • Docker从基础镜像运行一个容器

  • 执行一条指令并对容器作出修改

  • 执行类似docker commit 的操作提交一个新的镜像

  • docker再基于刚提交的镜像运行一个容器

  • 执行Dockerfile中的下一条指令知道所有的指令都执行完

保留字指令

  • FROM 基础镜像当前镜像基于此镜像构建

  • MAINTAINER 镜像维护者姓名邮箱

  • RUN 容器构建时需要运行的命令

  • EXPOSE 端口

  • WORKDIR 登陆容器的默认目录

  • ENV 环境变量

  • ADD 构建时添加的本机文件可处理url和解压

  • COPY 同ADD 不能解压和处理url

  • VOLUME 数据卷

  • CMD 容器的运行命令,只有之后一个起作用,最后输入的会替换前面的(包括参数中带入的)

  • ENTRYOPOINT 同CMD,不会替换但会追加命令

  • ONBUILD 父镜像在被子镜像进行构建时会被触发

 

例子:centos6.8------------->Dockerfile

FROM scratch
MAINTAINER The CentOS Project <cloud-ops@centos.org>
ADD c68-docker.tar.xz /
LABEL name="CentOS Base Image"
   vendor="CentOS"
   license="GPLv2"
   build-date="2016-06-02"

# Default command
CMD ["/bin/bash"]

 

原文地址:https://www.cnblogs.com/yangenyu/p/11740346.html