目录

1.docker解决了什么问题?

2.docker的安装

3.docker架构

4.docker镜像加速器的配置

5.docker常用命令

5.1docker daemon服务相关命令

启动docker服务:

查看docker服务状态

停止docker服务:

重启docker服务:

开机启动docker服务:

5.2 docker镜像相关命令

查看镜像:

搜索镜像:

拉取镜像:

删除镜像:

5.3 docker容器相关命令

创建容器:

查看容器:

进入容器:

启动容器:

停止容器:

删除容器:

查看容器信息:

6.Docker容器的数据卷

6.1数据卷的概念

6.2 配置数据卷

6.3 数据卷容器

7.docker的应用部署

7.1mysql部署

8.dockerfile

8.1 docker镜像的原理

8.2 docker容器转换成镜像

8.3 dockerfile概念

8.4Dockerfile案例:自定义centos镜像

9.Docker服务编排

9.1 docker compose

9.2 docker compose的安装

9.3docker compose yml文件的编写与运行

10 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私有仓库

这一部分内容后续进行更新

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐