文章目录
- **Docker知识介绍**
- **Docker基础知识**
- **1.什么是Docker?**
- **2.Docker的基本概念和工作原理**
- 3.容器之间的通信和交互
- **4.容器性能的监控和优化**
- **5.容器安全性的管理和防护**
- 6.docker为什么要用容器
- **Linux基础知识**
- **1.操作系统的基础知识**
- **2.常用Linux发行版和特点**
- **安装Docker及基础操作**
- **1.CentOS安装Docker**
- 1.1.卸载(可选)
- 1.2.安装docker
- 1.3.启动docker
- 1.4.配置镜像加速
- **2.常用Docker镜像命令行的使用方法**
- 3.Docker容器相关的命令行命令包括:
- Docker进阶操作
- 1.数据卷挂载
- 2.自定义镜像
- 3.DockerCompose
- 3.1.下载
- 3.2.修改文件权限
- 3.3.Base自动补全命令:
- 4.Docker镜像仓库
- 4.1.简化版镜像仓库
- 4.2.带有图形化界面版本
- 4.3.配置Docker信任地址
- 常见问题报错
- 执行 `docker-compose up -d` 命令后没有任何响应
- "Failed to start docker-compose.service: Unit not found"
Docker知识介绍
Docker是一种开源的容器化技术,它使得应用程序及其所有依赖项能够在轻量级、可移植的容器中运行。Linux是Docker的主要运行环境之一,本学习笔记将介绍Docker和Linux的基础知识,以及如何使用Docker在Linux环境中构建、部署和管理应用程序。
Docker基础知识
1.什么是Docker?
Docker是一种容器化技术,它允许开发者将应用程序以及所有依赖项打包在一个独立的、可移植的容器中。容器与主机操作系统隔离开来,但共享相同的内核。这意味着容器可以在不同的Linux发行版上运行,而无需重新配置应用程序或重新安装依赖项。
2.Docker的基本概念和工作原理
Docker主要包括镜像(Image)、容器(Container)和仓库(Repository)三个基本概念。镜像是一个只读模板,用于创建容器。容器是从镜像创建的运行实例,可以用来运行和停止应用程序。仓库是用于存储和共享镜像的地方。
Docker的工作原理是“分步式”的,它将应用程序及其依赖项分成独立的步骤,每个步骤都在一个容器中运行。这种分步式模型使得应用程序更容易部署、扩展和管理。
3.容器之间的通信和交互
在多个容器之间进行通信时,可以使用Docker的网络模式来实现。Docker提供了多种网络模式,包括bridge、host、container和none等。通过使用适当的网络模式,可以确保容器之间能够正确地进行通信和交互。
4.容器性能的监控和优化
使用Docker时,监控容器的性能并对其进行优化非常重要。可以使用一些工具和技术来监控容器的性能,例如使用docker stats
命令来查看容器的实时统计信息,使用性能分析工具来检测性能瓶颈。为了优化容器的性能,可以采取一些措施,例如优化镜像的大小、限制容器的CPU和内存使用等。
5.容器安全性的管理和防护
容器的安全性是使用Docker时需要考虑的重要问题。为了保护容器的安全性,可以采取一些措施,例如使用TLS/SSL来加密容器之间的通信、限制容器的权限、使用更安全的运行时参数等。此外,还需要及时更新Docker引擎和容器来修复安全漏洞。
6.docker为什么要用容器
- 隔离性:容器与主机和其他容器完全隔离,每个容器都有自己的文件系统、进程、用户、IP地址和端口空间等,相互之间不会产生干扰和冲突。
- 可移植性:容器是可移植的,可以在不同的平台上运行,无论是Windows、Linux还是MacOS等都可以使用容器。
- 轻量级:容器只包含应用和其运行环境,没有虚拟化层,因此启动时间更快,资源占用更少,更加轻量级。
- 快速部署:容器可以直接从镜像运行,无需额外创建虚拟机,使得部署速度更快。
- 弹性扩展:容器可以轻松地进行横向扩展,可以快速地增加或减少容器数量来满足业务需求。
- 标准化:容器标准化的构建方式使得开发、测试和部署都能够遵循统一的规范,更加高效。
Linux基础知识
1.操作系统的基础知识
Linux是一种开源的操作系统,它基于Unix内核。Linux具有稳定性和安全性高的特点,并且被广泛应用于服务器、桌面和移动设备等领域。Linux提供了许多常用的命令行工具和系统管理工具,例如bash shell、vi/vim编辑器、dpkg/apt包管理器等。
2.常用Linux发行版和特点
Linux发行版是指将Linux内核和一些软件包组合在一起形成的完整操作系统。一些常用的Linux发行版包括Ubuntu、Debian、Fedora、CentOS等。每个发行版都有自己的特点和优势,可以根据实际需求选择适合自己的发行版。
安装Docker及基础操作
Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。
Docker CE 分为 stable
test
和 nightly
三个更新频道。
官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。
1.CentOS安装Docker
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。
1.1.卸载(可选)
如果之前安装过旧版本的Docker,可以使用下面命令卸载:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
1.2.安装docker
首先需要大家虚拟机联网,安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
然后更新本地镜像源:
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
然后输入命令:
yum install -y docker-ce
docker-ce为社区免费版本。稍等片刻,docker即可安装成功。
1.3.启动docker
Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
通过命令启动docker:
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
然后输入命令,可以查看docker版本:
docker -v
1.4.配置镜像加速
docker官方镜像仓库网速较差,我们需要设置国内镜像服务:
参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ymptrjl6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2.常用Docker镜像命令行的使用方法
使用Docker镜像需要掌握一些常用的命令行工具,包括:
docker build
:用于构建Docker镜像docker images
:用于查看本地可用的镜像列表docker commit
:用于从现有容器创建一个新的镜像docker push
:用于将镜像推送到Docker仓库docker pull
:用于从Docker仓库拉取镜像- docker rmi :用于根据镜像名或id删除镜像
- docker save :用于镜像保存为压缩文件
- docker load:用于将加载压缩文件为镜像
3.Docker容器相关的命令行命令包括:
docker run
:启动一个新容器并运行其中的命令。例如:docker run -it ubuntu /bin/bash
。docker ps
:列出正在运行的容器。docker inspect
:查看容器详细信息。例如:docker inspect <container_id>
。docker stop
:停止一个正在运行的容器。例如:docker stop <container_id>
。docker rm
:删除一个容器。例如:docker rm <container_id>
。docker pull
:从Docker Hub上拉取镜像。例如:docker pull ubuntu
。docker push
:将镜像推送到Docker Hub。例如:docker push <your_image_name>
。docker commit
:从正在运行的容器中创建镜像。例如:docker commit <container_id> <your_image_name>
。docker images
:列出本地可用的所有镜像。docker login
:登录到Docker Hub。例如:docker login
。docker tag
:为镜像添加标签。例如:docker tag <image_id> <your_image_name>:<tag>
。
Docker进阶操作
1.数据卷挂载
mysql挂载示例:
2.自定义镜像
dockerfile文件内容示例:
3.DockerCompose
DockerCompose部署微服务示例:
3.1.下载
Linux下需要通过命令下载:
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
也可以通过以下步骤来安装Docker Compose:
- 安装pip:如果尚未安装pip,可以使用以下命令进行安装:
sudo yum install python-pip
。 - 升级pip:如果pip版本不是最新的,可以使用以下命令进行升级:
sudo pip install --upgrade pip
。 - 安装Docker Compose:使用以下命令来安装Docker Compose:
sudo pip install docker-compose
。 - 检查安装是否成功:可以运行以下命令来检查Docker Compose是否安装成功:
docker-compose --version
。
以上步骤适用于大部分Linux发行版,包括Ubuntu、Debian和CentOS等。对于某些特定的操作系统或发行版,可能需要使用不同的命令或脚本进行安装。建议在官方文档或社区中查找针对特定环境的具体安装步骤。
3.2.修改文件权限
修改文件权限:
# 修改权限
chmod +x /usr/local/bin/docker-compose
3.3.Base自动补全命令:
# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
如果这里出现错误,需要修改自己的hosts文件:
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
4.Docker镜像仓库
搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。
官网地址:https://hub.docker.com/_/registry
4.1.简化版镜像仓库
Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。
搭建方式比较简单,命令如下:
docker run -d \
--restart=always \
--name registry \
-p 5000:5000 \
-v registry-data:/var/lib/registry \
registry
命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。
访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像
4.2.带有图形化界面版本
使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:
然后在yml配置文件中添加以下代码:
version: '3.0'
services:
registry:
image: registry
volumes:
- ./registry-data:/var/lib/registry
ui:
image: joxit/docker-registry-ui:static
ports:
- 8080:80
environment:
- REGISTRY_TITLE=本地私有仓库
- REGISTRY_URL=http://registry:5000
depends_on:
- registry
启动该compose:
docker-compose up -d
4.3.配置Docker信任地址
我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:
# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.150.101:8080"]#这里替换成你的仓库地址
# 重加载
systemctl daemon-reload
# 重启docker
常见问题报错
执行 docker-compose up -d
命令后没有任何响应
可能有以下几个原因:
- Docker服务没有启动:首先需要检查Docker服务是否已经启动,可以在命令行中输入
systemctl status docker
来检查Docker服务的状态。如果Docker服务没有启动,可以使用systemctl start docker
命令来启动。 - Docker Compose服务没有启动:如果Docker服务已经启动,那么需要检查Docker Compose服务是否已经启动。可以在命令行中输入
systemctl status docker-compose
来检查Docker Compose服务的状态。如果Docker Compose服务没有启动,可以使用systemctl start docker-compose
命令来启动。 - Docker Compose文件不存在或错误:如果Docker Compose服务已经启动,但是执行
docker-compose up -d
命令后仍然没有响应,那么需要检查Docker Compose文件中是否存在错误或者文件路径是否正确。可以进入Docker Compose文件所在的目录,使用cat docker-compose.yml
命令来查看文件内容。 - 网络问题:如果以上都没有问题,那么可能是网络问题导致的。可以尝试重新启动网络服务或者检查网络设置是否正确。
需要注意的是,执行 docker-compose up -d
命令时需要确保当前目录下存在正确的Docker Compose文件(如 docker-compose.yml
),并且Docker服务和Docker Compose服务都已经正确启动。
“Failed to start docker-compose.service: Unit not found”
这个错误通常意味着你的系统中没有找到 docker-compose.service
文件这可能是由于以下原因之一造成的:
- Docker Compose 没有正确安装
- Docker Compose 的服务文件路径不正确
- Docker Compose 的服务没有被正确地添加到系统服务中
你可以按照以下步骤进行排查和解决:
- 首先,确认你已经正确地安装了 Docker Compose你可以通过在命令行中输入
docker-compose --version
来检查是否已经安装如果已经安装,将显示 Docker Compose 的版本信息如果没有安装,你需要按照 Docker Compose 的官方文档来安装它 - 如果 Docker Compose 已经安装,那么检查
docker-compose.service
文件是否存在你可以在命令行中输入find / -name docker-compose.service
来搜索这个文件如果文件存在,它应该位于/usr/lib/systemd/system/docker-compose.service
如果文件不存在,可能是因为 Docker Compose 的安装路径不正确,或者服务文件没有被正确地添加到系统服务中 - 如果
docker-compose.service
文件存在,确保它的内容是正确的你可以使用cat /usr/lib/systemd/system/docker-compose.service
命令来查看服务文件的内容如果内容不正确,你需要修改服务文件并重新启动 Docker Compose 服务你可以使用systemctl restart docker-compose
命令来重新启动它 - 如果上述步骤都没有解决问题,你可以尝试卸载并重新安装 Docker Compose这可能有助于修复问题
注意:在执行任何系统级的操作之前,建议你先备份你的重要数据和配置文件
索这个文件如果文件存在,它应该位于 /usr/lib/systemd/system/docker-compose.service
如果文件不存在,可能是因为 Docker Compose 的安装路径不正确,或者服务文件没有被正确地添加到系统服务中
3. 如果 docker-compose.service
文件存在,确保它的内容是正确的你可以使用 cat /usr/lib/systemd/system/docker-compose.service
命令来查看服务文件的内容如果内容不正确,你需要修改服务文件并重新启动 Docker Compose 服务你可以使用 systemctl restart docker-compose
命令来重新启动它
4. 如果上述步骤都没有解决问题,你可以尝试卸载并重新安装 Docker Compose这可能有助于修复问题
注意:在执行任何系统级的操作之前,建议你先备份你的重要数据和配置文件