Docker入门案例
Posted yangenyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"]
以上是关于Docker入门案例的主要内容,如果未能解决你的问题,请参考以下文章