docker教程(latest)
目录1.docker解决了什么问题?2.docker的安装3.docker架构4.docker镜像加速器的配置5.docker常用命令5.1docker daemon服务相关命令启动docker服务:查看docker服务状态停止docker服务:重启docker服务:开机启动docker服务:5.2 docker镜像相关命令查看镜像:搜索镜像:拉取镜像:删除镜像:5.3 docker容器相关命令创
目录
1.docker解决了什么问题?
在现实开发中,由于开发环境和测试环境不一致的问题而生成的bug非常多,dokcer将代码和环境(代码和环境一起称为容器)一起进行发布,解决了因为环境不一致而出现的一些问题。
总的来说,dokcer是一种容器技术,解决了软件的跨环境迁移问题。
2.docker的安装
docker的安装在网上有很多的教程,这里不再赘述。
3.docker架构
Host包括本机host和远程host,以本机host为例,docker会以daemon(守护进程)的形式存在,docker中包括container(容器)和image(镜像),容器和镜像的关系相当于编程语言中类和对象的关系,这里镜像相当于类,依次类推。镜像来源于仓库(Registries),仓库由官方提供,同时我们可以搭建私人的仓库。dockers客户端则是用来给docker守护进行来发送命令,当docker安装好后,docker客户端也是存在的。
4.docker镜像加速器的配置
由于docker的镜像存在于docker hub上,由于docker hub服务器在国外,因此下载的时候比较慢,所以我们需要配置国内的docker镜像。
在这里选择阿里云的docker镜像。
首先需要进入阿里云官网,需要自己进行登录。
点击控制台:
点击菜单:
在产品与服务中搜索镜像,点击选择容器镜像服务:
这样就获得了自己免费的容器镜像服务:
同时阿里云提供了详细的docker镜像加速器配置的文档,大家可以进行参照。
同时镜像存在于/etc/dokcer/daemon.josn中,如有需要,可以将其修改为其他镜像地址。
5.docker常用命令
这里列举了部门docker 命令,dockers详细命令网上有很多,如菜鸟教程上。
5.1docker daemon服务相关命令
启动docker服务:
systemctl start docker
查看docker服务状态
systemctl status docker
停止docker服务:
systemctl stop docker
重启docker服务:
restart docker
开机启动docker服务:
systemctl enable docker
5.2 docker镜像相关命令
镜像其实相当于文件,其操作无外乎是添加删除等,下载等。
查看镜像:
docker images
查看镜像可以发现,其实就是常用的一些软件 tomcat mysql等。
搜索镜像:
如搜索redis镜像:
docker search redis
拉取镜像:
如拉取redis镜像
docker pull redis
上述命令会自动拉取最新docker hub上redis的最新版本,同时可以指定版本,版本号可以在hub.docker.com上进行搜索。
docker pull redis:5.0.6
删除镜像:
docker rmi id
id为镜像id
删除所有镜像
docker rmi `docker images -q`
其中docker images -q 会得到所有镜像的id.
5.3 docker容器相关命令
创建容器:
docker run -it --name=liu centos:7 /bin/bash
-i保持容器一直运行
-t给容器分配终端,创建之后立即进入
-d后台运行,创建之后不会立即进入,会存在于后台
name为容器名字
centos:7 为容器指定的镜像
/bin/bash为传给容器daemon的参数
执行玩docker run之后会进入容器,我们可以使用exit来回到宿主机
查看容器:
docker ps
注意通过-it创建的容器会立即进入,在exit后就不复存在,可以通过docker ps -a查看历史容器。
进入容器:
docker exec -it name par
name为容器名,par为进入容器时的参数。
启动容器:
docker start name
停止容器:
docker stop name
删除容器:
docker rm name
删除所有容器
docker rm `docker ps -aq`
查看容器信息:
docker inspect name
6.Docker容器的数据卷
6.1数据卷的概念
数据卷是容器宿主机中的一个目录或者文件。对宿主机的目录或者文件进行操作,那么容器中对应的目录和文件也会进行变化。当然这一步需要docker容器和数据卷进行绑定。一个数据卷可以同时倍多个容器绑定,一个容器也可以挂载多个数据卷。
因此数据卷的作用是:容器数据的持久化、外部机器和容器的间接通信、容器之间进行数据交换。
6.2 配置数据卷
docker run ... -v 宿主机的目录、文件:容器内的目录、文件
容器目录、文件必须为绝对路径,挂载多个数据卷用多个-v,目录不存在会自动进行创建。
6.3 数据卷容器
当多容器进行数据交换的时候,如果用多容器挂载同一数据卷这一方式的话将是非常麻烦的。
数据卷容器即 容器c1挂在目录d,而容器c2和c3挂载容器c1,这样c1,c2,c3可以通过d来进行数据交互,即使c1出现故障,c2和c3也可以通过d进行数据交换。
创建数据卷容器以及挂在数据卷容器:
docker run -it --name = c1 -v /volume centos:7 /bin/bash docker run -it --name = c2 --volumes--from c1 centos:7 /bin/bash docker run -it --name = c3 --volumes--from c1 centos:7 /bin/bash
7.docker的应用部署
7.1mysql部署
需求:在容器中部署mysql,并通过外部的mysql客户端来对sqlserver来进行操作。
步骤:搜索mysql镜像、拉取镜像、创建容器、进行操作
docker run ... -p 3307:3306 ...
将宿主机3307和容器3306进行映射:
下图是在拉取mysql 容器的创建:
8.dockerfile
8.1 docker镜像的原理
这里以三个问题来解释:
docker镜像的本质?
答:docker镜像是一个分层文件系统
docker中一个centos镜像为什么只有200M,而一个centos操作系统确要几个G?
答:centos的镜像文件包含bootfs和rootfs,而docker的centos镜像复用操作系统的bootfs,只有rootfs和其他镜像层,因此只要200M
docker中一个tomcat镜像为什么要500M,而一个tomcat安装包只需要70M?
答:由于docker镜像是分层的,tomcat索然只有70M,但是其依赖的jdk等镜像确占的容量比较大,所以总体有500M.
8.2 docker容器转换成镜像
docker commit 容器id 镜像名称:版本号
目录、文件挂在不会commit
镜像转换为压缩文件
docker save -o 压缩文件名称 镜像名称:版本号
压缩文件还原成镜像:
docker load -i 压缩文件名称
8.3 dockerfile概念
dockerfile是一个文本文件,包含以恶一条条指令,每条指令构建一层镜像,基于基础镜像,最后构建出一个新的镜像。对于开发人员来说可以为团队提供一个完全一致的开发环境。
其中MAINTAINER 为作者信息。dockerfile中有许多关键字,可以自行进行查阅,都是非常简单的。
8.4Dockerfile案例:自定义centos镜像
需求:1.默认登录路径为/usr
2.可以使用vim
步骤:1.定义父镜像
2.执行安装vim的命令
3.设置工作路径
dock file为:
FROM centos:7 MAINTAINER:man RUN yum install -y vim WORKDIR /usr cmd /bin/bash
dockerfile 文件通过
docker build -f +文件路径 -t 新的镜像名称:版本号 .
9.Docker服务编排
微服务架构的应用系统中一般包括若干了若干个,每一个微服务又有很多的示例,如果每个微服务都要手动启停,那么将非常麻烦。
服务编排就是按照一定的业务规则批量的管理容器。
9.1 docker compose
docker compose 是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建、启停
步骤:
1.通过dockerfile 定义运行环境镜像,
2.利用docker_compose.yml定义组成应用的各服务
3.运行 docker -compose up 来进行启动
9.2 docker compose的安装
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
9.3docker compose yml文件的编写与运行
yml文件的编写在这里不再赘述,可以自行了解
编写号yml文件之后在yml文件的同级目录下直接输入命令docker-compose up即可以进行容器的创建
10 docker私有仓库
这一部分内容后续进行更新
更多推荐
所有评论(0)