参考官网地址:Install Docker Engine on CentOS | Docker Docs
一、安装前准备工作
1.1 查看服务器系统版本以及内核版本
cat /etc/redhat-release
1.2 查看服务器内核版本
uname -r
这里我们使用的是CentOS 7.6 系统,内核版本为3.10
1.3 安装依赖包
yum install -y yum-utils
1.4 设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
二、安装Docker
2.1 Docker版本说明
Docker从17.03版本之后分为两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。
企业版包含了一些收费服务,个人开发者一般用不到,所以我们只需要安装社区版docker-ce版本即可。
2.2 docker-ce安装
yum install -y docker-ce
2.3 启动 Docker。
$ sudo systemctl start docker
2.4通过运行映像来验证 Docker 引擎安装是否成功。hello-world
sudo docker run hello-world
此命令下载测试映像并在容器中运行它。当 容器运行,它打印确认消息并退出。
2.5 启动docker并设置开机自启
#启动docker命令
systemctl start docker
#设置开机自启命令
systemctl enable docker
#查看docker版本命令
docker version
三、Docker基本概念介绍
3.1 仓库 (repository)
docker仓库是用来保存镜像的地方。镜像构建完成后,可以直接在当前宿主机上运行,但是如果需要在其它服务器上使用这个镜像,
就需要一个集中存储、分发镜像的服务,docker仓库就是这样的一个服务。
3.2 镜像(Image)
这里面保存了应用和需要的依赖环境,比如运行的runtime和webapp等。
为什么需要多个镜像?当开发、构建和运行容器化应用程序时,我们通常会有不同优先级。通过为这些独立的任务提供不同镜像
3.3 容器(Container)
镜像的实例。一个容器代表一个正在运行的应用程序、进程或服务。它由 Docker 镜像、执行环境和标准指令集组成。需要扩展服务时,才
真正将镜像跑起来的东西,镜像在容器里面。可以看作是一个完全隔离的盒子。一个容器镜像实例代表一个独立的进程。
四、使用Dockerfile构建镜像
这一部分可搜索“使用Dockerfile构建镜像”相关文章,这里我就随便粘贴一篇使用Dockerfile构建镜像及构建流程、操作指令详解_dockerfile构建镜像后里面的数据库变量还有用?-CSDN博客
五、Docker常用命令
docker search --镜像名 搜索仓库镜像
docker pull --镜像名 拉取镜像
docker ps 查看目前正在运行的所有容器 (-a 显示包括已经停止的容器)
docker rmi image_id/image_name 删除镜像
docker build 使用Dockerfile创建镜像
docker run 运行容器
docker exec 进入容器中执行命令 (例如:docker exec -it container_id/container_name /bin/bash)
docker logs container_id/container_name 查看容器日志(例如:docker logs -f -t --tail 10 container_id )
docker start container_id/container_name 启动容器
docker restart container_id/container_name 重启容器
docker stop container_id/container_name 停止容器
docker rm container_id/container_name 删除容器(只能删除已停止的容器)
更多的命令可以通过docker help命令来查看。
六、安装Docker可视化管理工具Portainer
5.1 搜索镜像
docker search portainer
5.2 拉取镜像
#拉取镜像命令
docker pull portainer/portainer
#查看镜像命令
docker images
5.3 运行镜像(启动Portainer容器)
#创建数据卷
docker volume create portainer_data
#启动容器
docker run -d -p 9000:9000 --restart=always --name prtainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
#查看启动中的容器
docker ps
启动参数说明:
-it 输出容器命令行的内容 即容器的自身的程序输出在控制台 有点类似前台运行
-d 和it相反 隐藏后台运行
-p 端口映射 9000::9000 外部(宿主机)端口:镜像里面运行的端口 将宿主机9000端口映射到镜像里面的9000端口
--restart 重启方式:always跟随docker自启
--name 启动后的容器名称
-v 挂载容器数据卷
--network 连接到某个网络(例如:--network test_net)
--network-alias 容器的网络名称(例如:--network-alias portainer)
5.4 访问Portainer客户端
访问地址:http://192.168.0.128:9000,首次访问需要设置admin管理员登录密码
可查看我们的镜像
查看我们的容器
七、Docker Compose
用途
Docker Compose 的主要用途是简化多容器应用程序的部署流程。它允许开发者使用一个单一的命令来启动由多个容器组成的整个应用程序,而不需要分别启动每个容器。此外,它还支持配置服务之间的依赖关系、网络连接、数据卷挂载等,使得整个部署过程更加清晰和易于管理。
使用方法
使用 Docker Compose 的基本步骤如下:
- 安装 Docker Compose:首先需要在系统上安装 Docker Compose。可以访问 Docker 官方网站查看安装指南。(参考链接:https://www.cnblogs.com/goloving/p/16253880.html)
- 创建
docker-compose.yml
文件:在这个文件中定义应用程序的服务、网络和卷。每个服务可以包含镜像、端口映射、环境变量、数据卷等配置。 (参考链接:Docker Compose | 菜鸟教程 https://www.cnblogs.com/crazymakercircle/p/15505199.html) - 运行 Docker Compose 命令:使用
docker-compose up
命令来启动定义在docker-compose.yml
文件中的所有服务。可以使用-d
参数在后台运行服务。 (参考链接:Docker Compose | 菜鸟教程 https://www.cnblogs.com/crazymakercircle/p/15505199.html) - 管理服务:可以使用
docker-compose down
来停止并删除容器、网络和卷,或者使用docker-compose start
、docker-compose stop
、docker-compose restart
等命令来管理服务。 (参考链接:Docker Compose | 菜鸟教程 https://www.cnblogs.com/crazymakercircle/p/15505199.html)
使用例子
假设我们需要部署一个包含 Web 服务器和数据库的简单应用程序。我们可以创建一个如下的 docker-compose.yml
文件:
version: '3.7' # 使用的 Compose 文件版本
services: # 定义服务
web: # 服务名称
image: nginx:latest # 使用的镜像
ports:
- "8080:80" # 端口映射,宿主机端口:容器端口
volumes:
- ./index.html:/usr/share/nginx/html/index.html # 挂载当前目录下的 index.html 到容器中的指定位置
db: # 另一个服务
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example # 设置环境变量,这里为数据库的 root 密码
volumes:
- db_data:/var/lib/mysql # 挂载数据卷,保持数据持久化
volumes: # 定义数据卷
db_data: # 数据卷名称
保存文件后,我们只需在终端中运行 docker-compose up
命令,Docker Compose 就会根据 docker-compose.yml
文件中的配置来创建并启动服务。这样,我们就可以通过访问 http://localhost:8080
来看到由 Nginx 服务器提供的网页,并且后端数据库也已经准备就绪
八、卸载Docker
#删除docker-ce命令
yum remove docker-ce
#删除镜像、容器、配置文件等内容
rm -rf /var/lib/containerd
rm -rf /var/lib/docker
#官网给出的卸载方式
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine