一.docker相关概念
1.docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源 2.Docker是在Linux容器里运行应用的开源工具,是一种轻量级的'虚拟机' 3.Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的,可移植的,自给自足的容器。
2.使用容器的好处 1.节省资源(以前都要用虚拟机部署服务,虚拟机本身的进程就会占用一部分资源,docker容器没有额外的内存和CPU资源的消耗)2.灵活,迁移方便,可以通过镜像的方式进行导入导出3.轻量,可以和主机共享主机内核
3.Docker与虚拟机的主要区别:虚拟机是虚拟机中间层(网卡,内存,CPU) Docker是通过namespace方式进行隔离,虚拟化层度不高,更加节省资源。虚拟机更加安全
二.docker 常用的命令
REPOSITORY:镜像仓库
TAG:标签
IMAGEID:镜像ID
CONTAINERID:容器ID
命令 | 案例 | 描述 |
docker search |
docker search java | 搜索含有java的镜像环境 |
docker pull | docker pull java | 将镜像拉到本地,镜像是一个可执行文件 |
docker images | 查看本地
仓库和TAG指定了唯一的镜像 |
|
docker rmi |
docker rmi REPOSITORY:TAG docker rmi IMAGEID |
删除指定镜像 (1.同一个镜像ID可以对应多个REPOSITORY:TAG 2.被引用的镜像不可删除(docker rmi -f 可强制删除)) |
docker inspect | docker inspect IMAGEID | 查看镜像的详细信息 |
docker tag | docker tag REPOSITORY:TAG REPOSITORY:TAG | 为本地镜像打标签(是在本地复制出来一个镜像不是修改已有的镜像) |
docker save | docker save -o redis.tar REPOSITORY:TAG | 将本地的REPOSITORY:TAG 镜像打成tar包,可自由移植 |
docker run | docker run -d --name test -p 8080:8081 -v /home/work:/home/work -e zhuren:ruxiaoqiang |
-d:后台运行 -p: 端口映射 左边是容器 右边是宿主机 -v:目录映射 --name "为容器起个名字" -e 设置环境变量
|
docker 执行过程 |
1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载 2)利用镜像创建并启动一个容器 3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读层 4)从宿主机主机配置的网桥接口中桥接一个虚拟机接口到容器中 5)分配一个地址池中的IP地址给容器 6)执行用户指定的应用程序,执行完毕后容器被终止运行 |
|
docker ps | docker ps -a |
查看容器列表 -a 查看所有包括没有启动的 |
docker rm | docker rm CONTAINERID | 删除指定容器(容器需要stop) -f (强制删除) |
docker strat / restart /stop | 启动/停止/重启 指定容器 | |
docker exec | docker exec -it CONTAINERID /bin/bash | 登陆容器当中 |
docker push | docker push REPOSITORY:TAG | |
docker cp | docker cp a.txt CONTAINERID:/home/work | 将a.txt 文件cp到指定CONTAINERID 中 ,与scp类似 |
docker import | docker import test.tar ruxiaoqiang:test | 将指定镜像文件导入本地并命名 ruxiaoqiang:test(REPOSITORY:tag) ----镜像 |
docker load | dokcer load < test.tar ruxiaoqiang:test | 针对(docker export) |
docker export | docker export CONTAINERID | 将容器导出一个文件,只保存容器当时的状态,不会存储镜像的元数据,历史记录会更轻量 |
docker commit | docker commit -m "test" -a "ruxiaoqiang" 容器名/CONTAINERID REPOSITORY:TAG | 提交容器为一个镜像(与git 类似) -m 提交信息 -a 作者信息 |
三.dockerFile的编写
#从一个含有java的基础镜像构建自己的镜像
FROM williamyeh/java8
#构建镜像的作者
MAINTAINER ruxiaoqiang
USER root
WORKDIR /home/work
#add 命令会自动解压 copy 不会
COPY hope-0.0.1-SNAPSHOT.jar /home/work/
#RUN <命令行>每次run 一次都会加一层。过多run无意义会造成冗余
RUN yum install wget &&wegt baidu.com(在容器里执行的命令)
COPY start.sh /home/work(宿主机执行的命令)
#CMD是个默认命令,当docker run 的时候不指定任何命令 或者 DockerFile中没有ENTRYPOINT CMD["可执行文件","params"]
ENTRYPOINT ["/bin/sh","/home/work/start.sh"]
EXPOSE 端口映射EXPOSE 8081
ENV 设置环境变量 key1=value1
VOLUME 在主机上创建一个挂载VOLUME['/home/work']
标签:容器,REPOSITORY,虚拟机,学习,TAG,镜像,docker From: https://www.cnblogs.com/ruxiaoqiang/p/16949605.html