Docker的基础概念简介


1 Docker简介 1.1 什么是虚拟化: 1)在计算机中,虚拟化是一种资源管理技术,是将计算机中各种实体资源如服务器、网络、内存等资源予以抽象、转换后呈现出来,打破实体间不可切割的障碍,使用户可以比原本更好的组态来使用这些资源。 2)虚拟化技术有很多种,软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化、桌面虚拟化、服务虚拟化、虚拟机等。   1.2 什么是Docker: 1、Docker 是一个开源的应用容器引擎,基于Go语言并遵从 Apache2.0 协议开源。 2、Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 3、容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 特点: 1)上手快 2)职责的逻辑分类 3)快速高效的开发生命周期 4)面向服务的架构   1.3 容器与虚拟机比较: 虚拟层(与本机操作系统没关联) docker引擎(与本地OS共享) docker启动速度快,占用体积小   1.4 Docker 组件 1.4.1 Docker服务器与客户端(C/S) docker客户端只需要向docker服务器或者守护进程发出一整套RESTful API   1.4.2 Docker镜像与容器 镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段 镜像:镜像是构建Docker的基石;镜像体积很小,非常便携,易于分享、存储和更新 容器:容器是基于镜像启动起来的,容器中可以运行一个或多个进程   1.4.3 Registry(注册中心) 公有(docker hub)、私有 网址:https://hub.docker.com/   2 Docker安装与启动 2.1 安装Docker 1、yum包更新到最新 sudo yum update 手动安装 2、安装需要的软件包yum-util 提供yum-config-mamager功能,另外两个是devicemapper驱动依赖的 sudo yum install -y yum-utils   3、设置yum源为阿里云(速度更快) yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo   4、安装docker(docker-ce社区版免费) yum -y install docker-ce docker-ce-cli containerd.io   5、安装后查看docker版本 docker -v 2.2 设置ustc的镜像 安装完之后这个文件是空的 vim /etc/docker/daemon.json { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] }   shell脚本安装 curl -fsSL https://test.docker.com -o test-docker.sh sudo sh test-docker.sh   2.3 Docker的启动与停止 启动docker systemctl start docker 查看docker状态 systemctl status docker 重启docker systemctl restart docker 停止docker systemctl stop docker 开机启动docker systemctl enable docker 查看docker信息 docker info docker帮助 docker --help   3 常用命令 3.1 镜像相关命令 镜像文件存放路径:/var/lib/docker/image/overlay2/imagedb/metadata/sha256   查看镜像 docker images REPOSITORY (镜像名称) TAG(镜像标签) IMAGE ID(唯一的镜像ID) CREATED(创建日期) SIZE(镜像大小) 搜索镜像 docker search 镜像名称 NAME(镜像名称) DESCRIPTION(描述) STARS (星) OFFICIAL(是否官方) AUTOMATED(自动构建)   拉取镜像 docker pull xxx:tag 删除镜像 docker rmi 镜像ID :tag 删除所有镜像 docker rmi `docker images -q` 修改镜像名称 docker tag nginx:latest newnginx:test 查看镜像信息 docker image inspect python:latest   3.2 容器相关命令 3.2.1 查看容器 查看正在运行的容器 docker ps 查看所有容器 docker ps -a 查看最后一次运行的容器 docker ps -l 查看停止的容器 docker ps -f status=exited CONTAINER ID(容器id) IMAGE(镜像) COMMAND(命令) CREATED STATUS(状态) PORTS NAMES 3.2.2 创建与启动容器 创建容器命令:docker run 交互式创建容器 docker run -it --name=容器名称 镜像名称:标签 /bin/bash 守护式创建容器 docker run -id --name=容器名称 镜像名称:标签 守护式创建容器后,重新进入容器 docker exec -it 容器名称 /bin/bash   -i:表示运行容器 -t:表示容器运行后进入命令行模式【交互式】 -d:后台运行【守护式】 -p:宿主机端口:容器端口映射 -u: root 使用root用户登陆容器去执行命令 -v:挂载数据卷(目录映射)(共享数据) --name:容器命名   /bin/bash: 容器启动后默认执行的命令 exit: 退出容器   3.2.3 停止与启动容器 停止容器 docker stop 容器名称(容器ID) 启动容器 docker start 容器名称(容器ID) 3.2.4 文件拷贝 文件拷贝到容器内 docker cp 需要拷贝的文件或目录 容器名称:容器目录 文件从容器拷贝出来 docker cp 容器名称:容器目录 需要拷贝的文件或目录 3.2.5 目录挂载 我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机 某个目录的文件从而去影响容器。 docker run -id -v 宿主机目录:容器目录 镜像名称:标签 3.2.6 查着容器IP地址 查看容器运行的各种数据 docker inspect 容器名称(容器ID) 输出容器IP地址 docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)   3.2.7 删除容器 先停止运行的容器,-f强制删除 docker rm 容器名称(容器ID)   3.2.8 查看日志 docker logs 容器名称(容器ID)   4 应用部署 4.1 MySQL部署 docker run -id --name=leo_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=xxxxxx mysql:latest -p:代表端口映射,宿主机映射端口:容器的运行端口 -e:代表添加环境变量MYSQL_ROOT_PASSWORD,是root用户的登录密码 注:新的映射端口,需要在阿里云的安全组规则新加入方向的策略规则 4.2 tomcat部署 拉取镜像 docker pull tomcat:7-jre7 创建容器 docker run -id --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7 webapps 文件夹下需要加cas.war包,网上搜索下载一个war包 访问:http://IP:9000/cas,这样一个tomcat就部署好了 4.3 Nginx部署 拉取镜像 docker pull nginx 创建容器 docker run -id --name=mynginx -p 80:80 nginx   4.4 Redis部署 拉取镜像 docker pull redis 创建容器 docker run -id --name=myredis -p 6379:6379 redis   5 迁移与备份 容器保存为镜像 docker commit 容器名称 镜像名称 镜像备份 docker save -o 文件名.tar 镜像名称 镜像恢复与迁移 docker load -i 文件名.tar   6 Dockerfile 6.1 什么是Dockerfile Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。   6.2 常用命令 一、FROM 1、基于哪个基础镜像创建你自己的镜像 2、不区分大小写 3、FROM必须是非注释行的第一行 二、WORKDIR 1、登陆进去容器之后的默认目录 2、目录如果不存在会自动创建 三、ADD 1、将宿主机(容器)的文件添加到镜像指定的目录 四、RUN 1、镜像构建过程中执行的命令 pip3 install -r requirements.txt -i https://pypi.douban.com/simple 五、CMD 1、容器启动之后默认执行的命令 ["python3", "main.py"] 6.3 使用脚本创建镜像 构建镜像 docker build -t=镜像名称 .