- Docker是一个虚拟化平台( 官网https://www.docker.com/),诞生于 2013 年初,基于 Google 公司的 Go 语言进行实现。可以通过虚拟化方式,为应用提供可运行的容器。基于这种方式,可更快地打包、测试以及部署应用程序。
帮忙启动容器。 - 设计思想:分而治之,每个容器启动后分配一个唯一的命名空间
Docker官网
无需部署环境
镜像官网
劣势:性能稍差
- Docker 使用客户端-服务器架构。Docker客户端与 Docker守护进程对话,后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护程序可以 在同一系统上运行,或者您可以将 Docker 客户端连接到远程 Docker 守护程序。Docker 客户端和守护进程使用 REST API、UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose,它允许您使用由一组容器组成的应用程序。
- 命令
3. Docker安装实践 3.1查看Linux的ip地址docker build 打包
docker pull
docker run
前提是已经安装虚拟机
以上三个文件下载地址
下载docker离线包
下载离线安装工具
systemctl start docker 启动docker服务 systemctl status docker 查看Docker状态 systemctl stop docker 关闭docker服务 systemctl enable docker 设置Docker开机自启 systemctl disable docker 禁用Docker开机自启 systemctl restart docker 重新启动Docker服务 docker info 查看Docker信息 docker info | grep 'Docker Root Dir:' 查看docker info中具体key的信息 ps -ef | grep docker 查看进程5.镜像加速
cat <6. 镜像操作/etc/docker/daemon.json { "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com" ], "max-concurrent-downloads": 10, "log-driver": "json-file", "log-level": "warn", "log-opts": { "max-size": "10m", "max-file": "3" }, "data-root": "/var/lib/docker" } EOF
docker pull hello-world 下载镜像 docker images 查看镜像 docker run hello-world 运行镜像
卸载镜像 docker image rm hello-world
显示容器正在使用
此时需要关闭容器 docker container re 52a
删除镜像 docker container rm hello-world
查看所有容器 docker ps -a
下载镜像(pull),如果本地镜像没有,则需要从远程镜像中下载
查看镜像历史 docker history hello-world 导出镜像文件 docker save hello-world | gzip > hello-world.tar.gz 导入镜像操作 docker load < hello-world.tar.gz
导出镜像文件到images目录
此时只能在Linux系统使用,Windows下使用需要Download
创建并启动容器 打开交互模式 docker run -it centos:7 bash
删除容器 docker container rm 802 #802为容器id 强制删除 docker container rm -f 802 #802为容器id 清除所有容器 docker container prune8. Docker数据管理实践
在容器中管理数据的方式 数据卷(Volumes)、挂载主机目录 (Bind mounts)
数据卷命令:
查看数据卷目录 docker volume ls 创建数据卷 docker volume create container-vol 查看数据卷信息 docker volume inspect container-vol 删除数据卷 docker volume rm container-vol 在启动容器时,以目录直接挂载的方式进行数据操作 docker run -it -v container-vol:/cgb2107 centos:7 bash
挂载的目的是删除容器数据不丢,相当于备份,数据卷仍存在
docker run -it -v /app:/container centos:7 bash9. Dockerfile及镜像制作实践 创建Dockerfile文件
vim Dockerfile编辑
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51
PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD ['bash']
查看文件
在Dockerfile所在目录执行docker build指令
查看镜像
运行镜像、查看java版本 基于镜像启动容器
基于JDK镜像启动sentinel
docker run -d -p 8180:8080 --name sentinel -v /root/servers:/usr/sca jdk:8 java -jar /usr/sca/sentinel-dashboard-1.8.1.jar
sentinel运行在基于jdk:8容器的基础上,所以可以放在一起创建镜像
进入容器登录mysql
创建目录和文件
创建redis实例并启动
拖入镜像
导入镜像
创建数据卷
启动nginx服务
访问成功
方案:
第一种:两个容器通过宿主机进行通讯(容器中的端口会映射到宿主机上)
第二种:两个容器之间直接通过虚拟网络进行连接,但是需要我们在docker中创建网络。
创建网络
docker network create t-net
docker run -it --name app1 --network t-net centos:7 启动容器
实现容器互联互联



