使用Docker主要涉及镜像的获取与管理、容器的创建与操作等。以下是一个详细的Docker使用指南:
一、Docker基础概念
- 镜像(Image):Docker镜像是一个只读模板,包含了创建Docker容器所需的文件系统结构及其内容。它相当于一个root文件系统,如官方镜像
ubuntu:16.04
就包含了完整的一套Ubuntu16.04最小系统的root文件系统。 - 容器(Container):容器是镜像的一个运行实例,它包含了运行中的应用程序及其所需的依赖、配置文件等。容器之间是相互隔离的,有各自独立的进程。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。Docker Hub(https://hub.docker.com)是一个公有仓库,提供了庞大的镜像集合供使用。私有仓库可以在Docker官网找到安装方法。
二、Docker常用命令
启动、关闭、重启Docker服务
- 启动Docker:
systemctl start docker
- 关闭Docker:
systemctl stop docker
- 重启Docker:
systemctl restart docker
- 设置开机启动Docker:
systemctl enable docker
- 查看Docker运行状态:
systemctl status docker
- 启动Docker:
镜像命令
- 查看服务器中Docker镜像列表:
docker images
或docker imagels
- 搜索镜像:
docker search [镜像名]
,如docker search mysql
- 拉取镜像:
docker pull [镜像名]
,不加tag版本号则默认拉取docker仓库中该镜像的最新版本,如docker pull mysql
;加tag则拉取指定版本,如docker pull mysql:5.7.30
- 删除镜像:
docker rmi -f 镜像名/镜像ID
,删除多个镜像时多个镜像ID或镜像之间用空格隔开;删除全部镜像使用docker rmi -f $(docker images -aq)
- 保存镜像为tar压缩文件:
docker save 镜像名/镜像ID -o 镜像要保存的位置和名字
- 加载镜像保存文件:
docker load -i 镜像保存文件位置
- 查看服务器中Docker镜像列表:
容器命令
- 查看正在运行的容器列表:
docker ps
或docker container ls
;查看所有正在运行的和停止运行的容器:docker ps -a
- 运行容器:
docker run [镜像名]
,如docker run -it -d --name mysql001 mysql:6.4 /bin/bash
,其中-it
表示交互式启动,-d
表示后台运行容器,--name
用于指定容器名。 - 停止容器:
docker stop 容器名/容器ID
,可以添加-f
参数强制停止容器。 - 删除容器:
docker rm -f 容器名/容器ID
,删除多个容器时多个容器名/容器ID用空格隔开;删除全部容器使用docker rm -f $(docker ps -aq)
- 启动容器:
docker start 容器名/容器ID
- 重启容器:
docker restart 容器名/容器ID
- 进入容器:
docker exec -it 容器名/容器ID /bin/bash
- 从容器退出到服务器:直接输入
exit
- 查看容器日志:
docker logs -f --tail=要查看末尾多少行 默认all 容器ID
- 查看正在运行的容器列表:
三、Docker使用场景与优势
- 统一管理:Docker可以在一个地方集中管理容器,进行创建、启动、运行、停止、查看等操作,省去了由于各种差异导致的不同操作及问题。
- 隔离:Docker的每个容器之间是相互隔离的,有各自独立的进程,一个出现问题不会影响到整个环境或服务器。
- 体积小、启动快:Docker构建于操作系统之上,启动速度快,并且打包文件不大。
- 标准:Docker打包有一套统一的标准,很多地方都基于这种标准做了适配。Docker打包的应用程序能够运行在Linux、Windows、云服务器等各个基础环境上。
- 持续交付、部署:Docker可以通过版本镜像完成持续交付、部署。
- 镜像中心完成更多控制:通过镜像中心可以进一步对镜像进行控制和管理,如增加权限校验、收费、记录日志等。
四、注意事项
- 在使用Docker时,要注意镜像的版本和标签,确保拉取到的是正确的镜像。
- 容器中的数据应该使用数据卷(Volume)或绑定宿主目录来存储,以避免容器删除时数据丢失。
- 定期对Docker进行更新和维护,以确保其安全性和稳定性。
综上所述,Docker是一个强大的容器化技术,通过掌握其基础概念和常用命令,可以更加高效地进行开发和部署工作。