Docker杂记

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
https://www.docker.com/
虚拟化架构
在这里插入图片描述
Docker架构:可以直接使用主机操作系统的资源进行虚拟化
在这里插入图片描述
详细架构:
在这里插入图片描述
Docker daemon(Docker进程)
Docker进程是部署在linux操作系统上,负责支撑Docker Container的运行以及本地image的管理。

Docker client
用户不直接操作Docker daemon,用户通过Docker client访问Docker,Docker client提供pull、run等操作命令

Docker image
Docker镜像就是一个只读的模版。例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了一个应用程序。镜像可以用来创建Docker容器。Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来使用。

Docker Container
Docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看作是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

Docker Registry
仓库分为公开仓库和私有仓库两种形式。最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用push命令将它上传到共有或者私有仓库,这样下次在另一台机器上使用这个镜像时候,只需要从仓库上pull下来就可以了。

apt install docker.io -y
docker version
#查看docker pull用法

案例,安装redis

  • 先去hub.docker.com仓库上搜索redis的镜像,在Tag中查找对应版本是否存在(或者可以直接使用docker search redis),docker pull redis:3.0,这样就能下载对应版本的redis。
  • 如果速度很慢则需要更换镜像,打开www.aliyun.com,点击控制台,选择产品与服务,搜索容器,点击容器服务,在点击镜像,在点击右上角的容器镜像服务控制台,可以看到有个镜像加速器,有一个专属地址,并且地址下方有安装步骤。重新下载redis:3.0。
  • docker images查看有几个镜像
  • docker rmi redis:3.0 删除镜像

刚才安装好的是一个镜像,而容器是镜像的运行实例,所不同的就是容器可以进行读写文件层。如果认为虚拟机是模拟运行一整台 操作系统和跑在上面的应用,那容器就是独立运行的一个或一组应用,以及它们必需运行的环境。

docker ps当前正在运行的容器列表,需要查询所有的容器需要加-a参数(即没有运行的容器)。

docker create -p 16379:6379 --name redis redis:3.0 

冒号后面的6379是容器内部的端口是6379,前面的16379代表容器在当前操作系统的端口是16379。客户端想连接到redis就需要16379。输入该命令后会显示容器的ID。

docker start redis(容器的名称)

docker ps 就可以显示当前运行的容器了。这样就安装好了一个redis服务,redis需要什么依赖都自动安装好了。

打开Redis Desktop Manager连接该redis数据库。

===================================
docker run命令是创建并启动容器,两个命令的整合。

docker run -p 16380:6379 --name redis2 redis:3.0

注意了6379是不变的,是容器内部的端口。
如果要让容器后台运行,则要加-d就能后台运行redis了。

docker stop redis  停止容器
docker rm redis    删除容器,必须停止容器
docker exec -it redis /bin/bash         进入容器运行东西,-i打开容器的标准输入 -t打开一个伪终端,/bin/bash进入容器后的第一个命令,进入后就是一个linux系统
ps - ef|grep redis   看运行的redis服务
redis-cli                  也可以打开redis客户端
docker logs -f 容器名   看日志

注意一个容器只能运行一个镜像

数据管理
容器在运行项目时会产生数据,比如运行的mysql容器,那么一定会有数据产生。而数据推荐保存在容器的外部。

在create或者run容器时通过-v指定主机的目录,挂载到容器中的某一个目录上,这样容器就能在这个目录读写数据了,从而实现了容器和数据的分离。

docker create --name percona -v /data/mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.6

例如上面创建了一个mysql镜像,在运行就安装好一个mysql数据库了。

docker start eureka-server && docker logs -f eureka-server

猜你喜欢

转载自blog.csdn.net/wujingchangye/article/details/85254241