docker理解与基本运用
docker - ce
docker概念:Docker是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。使用Linux容器来部署应用程序称为集装箱化。使用docker轻松部署应用程序。
优点:
- 灵活:即使是复杂的应用程序也可封装。
- 轻量级:容器利用并共享主机内核。
- 便携式:您可以在本地构建,部署到云上并在任何地方运行。
- 可扩展性:您可以增加和自动分发容器副本。
- 可堆叠:您可以垂直堆叠服务并及时并及时堆叠服务。
三大组成
镜像(images) 容器(Containers) 仓库(registry)
一,镜像
image :docker镜像是一个特殊的文件系统,除了提供容器运行所需要的程序,库,资源等,还包含了一些运行时准备的一些参数(匿名卷,环境变量,用户等),镜像不包含任何动态数据,其内容在构建之后也不会被改变
分层存储:简单来说,这里的image不是一个真正ISO那样的文件,这里只是一个虚拟的概念,体现方式不是文件组成,是由一组文件系统组成,或者说,多层系统联合。
二,容器
containers:容器是镜像运行时的,实质就是进程,但是与宿主机进程不同,它有自己的网络配置,有自己独立的命名空间,容器存储层的周期和容器一样,容器消亡时,容器存储
三,仓岙库(docker regsistry)
镜像构建完成后,如果需要其他服务使用这个镜像,就需要一个容器存储,来分发镜像,这个时候就需要库了,在库里,一个仓库包含一个软件不同版本的镜像,每个仓库可以包含多个标签,标签就常用于对应软件的各个版本
仓库 < 镜像 < 容器
公共的仓库(docker Hub)
私有库
docker简单的操作
# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
国内下载源(最新)
# wget https://download.docker.com/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
#yum install -y yum-utils device-mapper-persistent-data lvm2
#wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
#yum install -y docker-ce....
安装完后,dockers目录在/etc/docker/
*********只是简单Yum安装的docker不是最新版本的
*****************************安装最新版本的docker如下:******************************
#卸载# yum remove docker
#如果还有docker的一些包残留,用rpm -e 全部卸载掉
#cd /etc/yum.repos,d/
#mv backup/CentOS-Base.repo ./
#yum install -y yum-utils device-mapper-persistent-data lvm2
#wget http://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
#yum -y install docker-ce
安装完后是最新版本19.03.13
配置加速器(自己登陆阿里云也可以自己创建一个加速器https://cr.console.aliyun.com/)
#vim /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
#systemctl daemon-reload
#systemctl restart docker
镜像基本命令:
docker start ID 容器启动 docker stop ID 关闭容器
docker ps 查看容器 -a 所有 -q 只查看ID
docker logs ID 查看容器内的输入
删除:rm (删除已停的容器) rm -f (删除未停止的容器)
docker info 查看信息 docker search 服务名(查找)
docker pull ID 下载 docker push ID 上传
docker images ID 查看镜像 docker tag ID 修改标签
docker save -o 保存镜像 docker inspect 镜像名
退出:exit 退出并结束 ctrl+p+q 退出并运行
导出:docker export ID/名称 > 文件
导入:cat 文件名 | docker import - 生成的镜像名:标签
拷贝:docker cp 主机文件路径 容器ID:目录
docker search -s(好评高的) 100 centos.....[镜像名]
docker pull 镜像名(nginx)
docker images
docker inspect 镜像ID
docker tag 原镜像名:标签 新镜像名:新标签
docker rmi 镜像名:标签
docker save -o 指定下载到本地目录/文件名 镜像名:标签
docker load -i <绝对路径的包
docker create -itd 镜像名:标签 /bin/bash 创建容器
docker ps -a 查看容器
docker run -d 镜像名:标签
docker logs 查看容器输入的命令
docker commit ID 镜像名:标签 提交容器
构建镜像:
docker build -f file文件 -t 镜像名
格式:
FROM centos:latest
MAINTAINER ming
RUN <命令>
EXPOSE <端口> #指定端口映射
ENV <key> <value>
ENV JAVA_HOME /usr/local/jdkxxxxx/ #环境变量
ADD <源路径> <目标路径> #拷贝文件
COPY <源路径> <目标路径>
VOLUME <容器内路径> #定义匿名数据卷,会自动挂载到此卷
WORKDIR <指定工作目录>
CMD <命令> #不同于run,一遍用完于文件最后指定运行文件,
CMD [<文件命令>,<参数>.......]