docker的相关知识
-
docker的理念
- 通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP可以及运行环境能够做到一次封装,到处运行。
- docker只包含虚拟机的内核简称为linux容器。
-
docker的优势:
- 轻量秒级的快速启动速度
- 简单,易用活跃的社区
- 标准统一的打包/部署/运行方案
- 镜像支持增量分发,易于部署。
- 易于构建,良好的restapi,也很适合自动化测试和持续集成
- 性能尤其是尤其是内存和io的开销
-
docker的三个特性:
- 镜像 就是image文件生成的容器实例,本身也是一个文件称为镜像文件。
- 容器 一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的应用实例,也就是我们的容器。
- 仓库 就是放了一堆镜像文件的地方,我们可以把镜像发布到仓库中,需要的时候再从仓库中拉下来就可以了。
-
docker的安装:
- 查看centos 7的版本uname -r
- cat /etc/redhat-release
- 安装docker sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- sudo yum-config-manager add-repo https://mirrors.aliyun.com/linux/centos/docker-ce.repo
- sudo yum makecache fast 更新yum的软件包的索引
- sudo yum install docker-ce docker-ce-cli containerd.io 安装社区版的docker
- sudo systemctl start docker 启动docker
- 打开网站配置阿里云的镜像加速https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 配置镜像加速根据阿里云的网站
- 测试 docker run hello-world
-
docker的命令
-
docker version //docker的版本
-
docker info //docker的详细信息
-
docker --help 命令帮助
-
docker images 列出本机上的镜像 docker images -a 列出本地所有的镜像(含中间镜像层) docker images -q显示当前镜像的id docker images --digests 显示镜像的摘要信息 docker images --no-trunc 显示镜像的完整信息
REPOSITORY :表示镜像的仓库源 TAG :镜像的标签 IMAGE ID:镜像的id CREATED:镜像创建的时间 SIZE:镜像的大小
-
docker search tomcat查找镜像文件 docker search -s 30 tomcat 列出收藏值不小于30的镜像文件 docker search --no-trunc tomcat 显示镜像文件的详细信息
-
docker pull 镜像文件的名字 拉取镜像文件 docker pull tomcat:latest 默认拉取的是最新版本 如果要指定版本需要在:后面加上版本号
-
docker rmi 镜像文件的id 删除某个镜像文件 docker rmi -f hello-world 强制删除 docker rmi -f $(docker images -qa)
-
docker -i 以交互式的模式运行容器,通常与-t使用 启动容器
-
docker -t 为容器重新分配一个伪输入终端,通常与-i一起使用 启动容器
-
docker ps 列出当前正在运行的容器
-
docker ps -a 正在运行的加历史运行的 -i 显示最近创建的容器 -n 3 显示最近的三条容器的记录 -q 只显示容器编号
-
exit 退出容器 ctrl +p+q 容器不停止退出
-
docker start id或者容器的名字 启动容器
-
docker restart id 重启容器
-
docker stop id或者容器名字 停止容器
-
docker kill id或者容器名字 强制停止容器
-
docker rm 容器的id 删除已经停止的容器 docker rm -f 容器的id 强制删除容器
-
docker run -d 容器名 启动守护式容器 docker run -it -p 8888:8080 tomcat
-
docker logs -f -t --tail 容器id
-
docker top 容器id 查看容器内运行的进程
-
docker inspect 容器id 查看容器内部的细节
-
进入正在运行的容器并以命令行进行交互 docker exec -it 容器的id bashShell(你要执行的命令) 这个会启动新的进程 docker attach 容器id 不会启动新的进程 docker exec -it 容器id /bin/bash
-
docker cp 容器id:需要拷贝的文件 目标路径 拷贝文件
-
-
docker的镜像
- 镜像是一种轻量级的,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件。
- 联合文件系统 分层的结构是为了保证资源的共享。
- docker commit 提交容器副本使之成为一个新的镜像
- docker commit -m “提交的描述信息” -a “作者” 容器id 要创建的目标镜像名
-
docker的数据卷(就是数据持久化)
- docker run -it -v 本地路径:容器路径 容器id 添加文件的命令
- 查看数据卷是否挂载成功 docker inspect 容器id 找到volumers
- 容器和宿主机之间的数据共享
- 容器停止退出后,主机修后数据同步。
- docker run -it -v 本地路径:容器路径:ro 容器id 添加的文件拥有写保护
- dockerfile
- docker build -f /DockerFile -t zzy/centos . 构建自己的镜像 会自动实现数据持久化
- docker的数据卷容器
- 容器间传递共享:docker run -it --name dc02 --volumes-from dco1 zzy/centos
-
dockerfile解析
- dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本。
- 构建的三步骤:1.dockerfile 2.docker build 3.docker run
- docker的保留关键字:
-
FROM :基础镜像,当前新镜像是基于哪个镜像的
-
MAINTAINER:镜像维护者的姓名和邮箱地址
-
RUN:容器构建的时候需要运行的命令
-
EXPOSE:当前容器对外暴露的端口
-
WORKDIR:指定创建容器后,终端默认登陆的进来的工作目录,一个落脚点
-
ENV:用来构建镜像过程中设置环境变量
-
ADD:将宿主目录下的文件拷贝进镜像且add命令会自动处理url和解压tar压缩包
-
COPY:拷贝文件和目录到镜像中
-
VOLUME:容器数据卷,用于数据保存和持久化工作
-
CMD:指定容器启动时需要运行的命令 只有最后一条命令生效
-
ENTRYPOINT:指定容器启动时需要运行的命令
-
ONBUILD:当构建一个被继承的dockerfile是运行时命令,父镜像在被子继承后父镜像后父镜像的onbuild被触发
#dockerfile的文件在centos的基础上加vim命令和ifconfig命令 FROM centos ENV mypath /tmp WORKDIR $mypath RUN yum -y install vim RUN yum -y install net-tools EXPOSE 80 CMD echo $mypath CMD echo "success,---------ok" CMD /bin/bash
-
-
docker下载启动mysql5.6
-
docker pull mysql:5.6
-
查看是否下在成功 docker images
-
启动mysql
docker run -p 3036:3306 --name mysql \ -v /mysql/conf:/etc/mysql/conf.d \ -v /mysql/logs:/logs/mysqllog \ -v /mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.6
-
进入mysql mysql -u root -p密码
-
导出数据
docker exec 88e684824afa sh -c 'exec mysqldump --all-databases -uroot -p"123456" ' > /mysql/all--database.sql
-
-
docker下载redis3.2
-
docker pull redis3.2
-
启动redis容器
docker run -d -p 6379:6379 --name redis \ -v /usr/redis/data:/data \ -v /usr/redis/redis.conf:/usr/local/etc/redis/redis.conf \ redis:3.2 redis-server /usr/local/etc/redis/redis.conf \ --appendonly yes
-
进入客户端
- docker exec -it 容器的id redis-cli
-
-
docker的镜像上传到阿里云
- 首先自己登陆网址注册 阿里云的容器镜像网址
-
创建命名空间和仓库名字
-
选择本地仓库信息的描述
-
推送镜像到阿里云
$ sudo docker login --username=丶冰山一角丶 registry.cn-hangzhou.aliyuncs.com $ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/rsdocker/mycentos:[镜像版本号] $ sudo docker push registry.cn-hangzhou.aliyuncs.com/rsdocker/mycentos:[镜像版本号]
-
拉取镜像到本地 docker pull registry.cn-hangzhou.aliyuncs.com/rsdocker/mycentos(公网地址):镜像版本号
-
- 首先自己登陆网址注册 阿里云的容器镜像网址
-
卸载docker
- sudo yum remove docker-ce
- sudo rm -rf /var/lib/docker