一、简介
1.1 Docker简介
Docker是一个开源的容器引擎,它可以帮助我们更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用Docker,可更快地打包、测试以及部署应用程序,并可减少从编写到部署运行代码的周期。
Docker官方网站:https://www.docker.com/
1.2 Docker版本
- Docker(企业版)
Docker EE由公司支持,可在经过认证的操作系统和云提供商中使用,并可运行来自Docker Store的、经过认证的容器和插件。
- Docker(免费版)
Docker CE是免费的Docker产品的新名称,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP
1.3 Docker架构
- Docker daemon(Docker守护进程)
Docker daemon是一个运行在宿主机(DOCKER_HOST)的后台进程。我们可通过Docker客户端与之通信。
- Client(Docker客户端)
Docker客户端是Docker的用户界面,它可以接受用户命令和配置标识,并与Docker daemon通信。图中,docker build等都是Docker的相关命令。
- Images(Docker镜像)
Docker镜像是一个只读模板,它包含创建Docker容器的说明。它和系统安装光盘有点像——我们使用系统安装光盘安装系统,同理,我们使用Docker镜像运行Docker镜像中的程序。
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含
运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
- Container(容器)
容器层是可写的。容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。我们可通过Docker API或者CLI命令来启停、移动、删除容器。
- Registry(仓库)
Docker Registry是一个集中存储与分发镜像的服务。我们构建完Docker镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,我们就需要手动拷贝。此时,我们可借助Docker Registry来避免镜像的手动拷贝。
一个Docker Registry可包含多个Docker仓库;每个仓库可包含多个镜像标签;每个标签对应一个Docker镜像。这跟Maven的仓库有点类似,如果把Docker Registry比作Maven仓库的话,那么Docker仓库就可理解为某jar包的路径,而镜像标签则可理解为jar包的版本号。
二、安装
2.1 下载Docker-CE rpm安装包
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
注意下载版本要和操作系统版本对应。
docker-ce-18.06.0.ce-3.el7.x86_64.rpm
2.2 安装与启动
上传 docker-ce-18.06.0.ce-3.el7.x86_64.rpm 到opt
执行命令: yum install -y docker-ce-18.06.0.ce-3.el7.x86_64.rpm
注意:确保linux服务器处于联网状态。
启动与停止:
- 启动docker:
systemctl start docker
- 停止docker:
systemctl stop docker
- 重启docker:
systemctl restart docker
- 查看docker状态:
systemctl status docker
执行docker info
可以查看是否安装成功
配置镜像加速器:
阿里云控制台:https://cr.console.aliyun.com/cn-beijing/instances/mirrors
重启docker守护程序
systemctl daemon-reload
重启docker服务
systemctl restart docker
查看docker容器信息
docker info
查看最后倒数第二行出现如下内容说明配置成功
Registry Mirrors:
https://j4pan1gm.mirror.aliyuncs.com/
三、常用命令
3.1 镜像常用操作
-
docker pull 镜像名称:版本标签
:下载镜像
例:docker pull tomcat:8.5.57-jdk8-openjdk-slim
,不指定版本标签则会下载最新的 -
docker images
: 查看本地所有镜像 -
docker rmi tomcat:8.5.57-jdk8-openjdk-slim
:删除镜像,没有创建容器才能删除。(也可以在 rmi 后面加上-f强制删除,但是不会完全删除) -
docker save -o 保存路径和保存名 镜像定位
:保存镜像
例:docker save -o /root/tomcat.tar tomcat:8.5.57-jdk8-openjdk-slim -
docker load -i 备份镜像的路径
: 把保存的镜像备份文件恢复成镜像
例:docker load -i tomcatByName.tar
3.2 容器常用命令
容器是通过镜像创建的
docker run 选项 镜像定位
:
-i 运行容器 (必选)
-d 表示守护的方式执行容器 (必选)
--name 自定义容器名 (必选)
-p 系统的端口:容器的端口
例:docker run -di --name tomcat1 tomcat:8.5.57-jdk8-openjdk-slim
,后面再加上/bin/bash
可以创建后直接进入容器。
docker run -di --name redis -p 16379:6379 redis:4.0.8
创建redis容器
- 列出容器:
docker ps # 列出正在运行的容器
docker ps -a # 列出全部容器
docker ps -q # 只列出容器编号
- 启动容器
docker start 容器的name或编号
- 重启容器
docker restart 容器名称或者容器编号
- 停止容器
docker stop 容器的name或编号
- 强制停止容器
docker kill 容器名称或容器编号
- 进入到容器,容器必须启动才能进入
docker exec -it tomcat1 /bin/bash
exit # 退出容器
-
docker rm 容器name或id
:删除容器 -
docker inspect 容器name或id
查看容器的信息 -
docker top 容器name或id
:查看容器的进程信息 -
容器与主机之间的交互
- 文件的赋值:
docker cp 源文件 容器名称:复制之后在容器中的文件 例: docker cp c1:/1.java /root/2.java
- 目录的挂载
四、Docker网络模式
bridge模式:使用--network bridge指定,默认使用docker0
host模式:使用--network host指定
none模式:使用--network none指定
container模式:使用--network container:NAME或者容器ID指定