1.Docker简介
Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。
Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。下面的介绍都针对社区版。
2.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包的版本号。
3.Docker安装部署
1.安装部署前
- 卸载旧版本(没有可以跳过)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
-
查看自己CentOS系统内核是否大于3.1–>uname -r
官方给出目前只支持(CentOS7和CentOS8)
-
更新yum–>yum -y update
-
安装软件包–>yum install -y yum-utils device-mapper-persistent-data lvm2
- yum-util 提供yum-config-manager功能
- 其他两个是devicemapper驱动依赖的
-
设置yum源–>yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2.安装部署
- 查询安装版本–> yum list docker-ce --showduplicates | sort -r
- 安装最新版本–>yum install -y docker-ce
安装成功:
3.启动及测试
- 启动docker–>systemctl start docker
- 设置docker开机自启–> systemctl enable docker
- 查看安装版本是否安装成功–>docker version
- 其他:
- 卸载docker–> yum -y remove docker-engine
- 启动报错:
Job for docker.service failed because the control process exited with error code.See “systemctl status docker.service” and “journalctl -xe” for details
解决–>删除/etc/docker/daemon.json
4.docker常用命令
命令 | 作用 |
docker run containerName |
运行 |
docker logs containerName/containerId | 动态查看容器日志 |
docker stop containerName/containerId | 关闭容器 |
docker start containerName/containerId | 启动容器 |
docker restart containerName/containerId | 重启容器 |
docker rm –f containerName/containerId | 删除容器 |
docker rmi -f IMAGE_ID/ REPOSITORY:TAG | 删除镜像 |
docker search images_name | 查看镜像列表 |
docker pull images_name | 从公网拉取一个镜像 |
docker command --help | 查看帮助 |
docker port containerId | 看容器的端口映射情况 |
docker ps | 查看正在运行的容器 |
docker ps -a | 查看所有的容器 |
docker exec -it containerId /bin/bash | 进入容器 |
docker network ls | 查看docker网络 |
docker top containerName | 查看容器pid |
docker images | 查看已有镜像 |
1. 搜索镜像–> docker search java
可使用 docker search命令搜索存放在 Docker Hub(这是docker官方提供的存放所有docker镜像软件的地方,类似maven的中央仓库)中的镜像。执行该命令后, Docker就会在Docker Hub中搜索含有 java这个关键词的镜像仓库。
1.NAME:镜像仓库名称。
2.DESCRIPTION:镜像仓库描述。
3.STARS:镜像仓库收藏数,表示该镜像仓库的受欢迎程度,类似于 GitHub的 stars0
4.OFFICAL:表示是否为官方仓库,该列标记为[0K]的镜像均由各软件的官方项目组创建和维护。
5.AUTOMATED:表示是否是自动构建的镜像仓库
注意:使用docker查找或下载镜像可能会超时,所以我们需要为docker配置国内的镜像加速器
我们可以借助阿里云的镜像加速器,登录阿里云
1). 进入查看docker是否有配置文件–>cd /etc/docker -->ll
2). 我这里没有需要新建,如果有就修改–>vim daemon.json
3). 重新加载配置文件–>systemctl daemon-reload
4). 重新启动–> systemctl restart docker.
2. 下载镜像
使用命令docker pull命令即可从 Docker Registry上下载镜像,执行该命令后,Docker会从 Docker Hub中的 java仓库下载最新版本的 Java镜像。如果要下载指定版本则在java后面加冒号指定版本,例如:docker pull java:8
3.列出镜像
使用 docker images命令即可列出已下载的镜像
1.REPOSITORY:镜像所属仓库名称。
2.TAG:镜像标签。默认是 latest,表示最新。
3.IMAGE ID:镜像 ID,表示镜像唯一标识。
4.CREATED:镜像创建时间。
5.SIZE: 镜像大小。
4.删除本地镜像
使用 docker rmi命令即可删除指定镜像,如: docker rmi java
我就不沾图了,刚装好啊 (!-.-)
2.容器相关命令
1.新建并启动容器
使用以下docker run <镜像名>命令即可新建并启动一个容器,该命令是最常用的命令,它有很多选项,下面将列举一些常用的选项。
docker run -d -p 8055:80 nginx
- 1
这样就能启动一个 Nginx容器。在本例中,为 docker run添加了两个参数,含义如下:
-d 后台运行
-p 宿主机端口:容器端口 #开放容器端口到宿主机端口
访问 http://Docker宿主机 IP:91/,将会看到nginx的主界面如下:
需要注意的是,使用 docker run命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在该名称的镜像, Docker就会自动从 Docker Hub下载镜像并启动一个 Docker容器。
该命令还有一个网络配置参数,如下所示
–net选项:指定网络模式,该选项有以下可选参数:
–net=bridge:默认选项,表示连接到默认的网桥。
–net=host:容器使用宿主机的网络。
–net=container:NAME-or-ID:告诉 Docker让新建的容器使用已有容器的网络配置。
–net=none:不配置该容器的网络,用户可自定义网络配置