概念
Docker
是一个开源的应用容器引擎,它是基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化。通过容器可以实现方便快速并且与平台解耦的自动化部署方式,无论你部署时的环境如何,容器中的应用程序都会运行在同一种环境下。并且它是完全使用沙箱机制,相互之间是隔离的,更重要的是容器性能开销极低。
Docker 作为轻量级虚拟化技术,拥有持续集成、版本控制、可移植性、隔离性和安全性等优势。
安装
目前 Docker 只能支持 64 位系统。
#关闭防火墙
systemctl stop firewalld.service
setenforce 0
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
yum安装慢的 可使用下面这条命令切换国内源(点我查看详细信息)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
windows可下载一个docker desktop桌面端
配置镜像地址
如果在使用过程中发现拉取镜像十分缓慢,那是因为docker服务器是在国外的,但我们可以通过配置docker国内镜像来进行加速
镜像加速器 | 镜像加速器地址 |
---|---|
Docker 中国官方镜像 | registry.docker-cn.com |
DaoCloud 镜像站 | f1361db2.m.daocloud.io |
Azure 中国镜像 | dockerhub.azk8s.cn |
科大镜像站 | docker.mirrors.ustc.edu.cn |
阿里云 | ud6340vz.mirror.aliyuncs.com |
七牛云 | reg-mirror.qiniu.com |
网易云 | hub-mirror.c.163.com |
腾讯云 | mirror.ccs.tencentyun.com |
docker镜像
Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。
docker容器
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
简单理解就是容器是镜像的一个运行实例。当我们运行一个镜像,就创建了一个容器。
拉取镜像
docker pull [选项] [docker Registry 地址[:端口号]/]仓库名[:标签]
没有指定镜像地址 默认从docker.io拉取镜像
例如
docker pull mysql
查看镜像
docker images
删除镜像
docker rmi <镜像1> [<镜像2>...]
在容器运行镜像
docker run -itd -p 8081:80 --name frontend-container frontend-image
- -itd:表示后台运行
- -p 8081:80:表示把nginx容器内的80端口映射到宿主机的8081端口,最后我们宿主机IP:8081的方式访问
- –name:指定启动后的容器名
查看容器
docker ps -a // 查看所有容器
删除容器
docker rm -f <container_id>
删除所有容器
docker rm -f $(docker ps -aq)
查看容器日志
docker logs <container_id>
镜像打包部署
docker save 镜像名称 -o 镜像打完后的压缩包名称.tar
例如 给mynestjs 镜像打包
docker save mynestjs -o mynestjs .tar
在需要部署的地方导入
docker load < mynestjs .tar
总的来说
1. 在项目中新建Dockerfile文件并配置命令,docker就可以把项目打包成一个镜像,这个镜像可以通过镜像打包命令打成一个压缩包,
2. 在需要部署的地方使用docker load 命令将压缩包导入到docker环境中,通过docker run 命令在容器中运行镜像,
3. 注意docker容器端口与宿主机端口的映射,项目运行错误可根据docker log命令排查错误
docker常用令
-
docker version
- 显示 Docker 版本信息。
-
docker info
- 显示 Docker 系统信息,包括镜像和容器数量。
-
docker search <image_name>
- 在 Docker Hub 中搜索镜像。
-
docker pull <image_name>
- 从 Docker Hub 下载镜像到本地。
-
docker images
- 列出本地所有的 Docker 镜像。
-
docker rmi <image_id>
- 删除本地的 Docker 镜像。
-
docker run [options] <image_name>
- 创建并启动一个容器。
- 常用选项:
- -d 后台运行容器,并返回容器ID。
- -p 端口映射,格式为:主机(宿主)端口:容器端口。
- –name 为容器指定一个名称。
- -v 挂载一个卷,格式为:主机目录:容器目录。
-
docker ps
- 列出正在运行的容器。
- 使用 -a 选项可以查看所有容器,包括未运行的。
-
docker start <container_id>
- 启动一个或多个已经被停止的容器。
-
docker stop <container_id>
- 停止一个运行中的容器。
-
docker restart <container_id>
- 重启容器。
-
docker rm <container_id>
- 删除一个或多个容器。
-
docker logs <container_id>
- 获取容器的日志。
-
docker exec -it <container_id> /bin/bash
- 进入运行中的容器并打开一个交互式的 shell。
-
docker commit <container_id> <new_image_name>
- 将容器的当前状态提交为一个新的镜像。
-
docker build -t <image_name> <Dockerfile_path>
- 使用 Dockerfile 创建一个新的镜像。
-
docker network ls
- 列出所有的 Docker 网络。
-
docker network create <network_name>
- 创建一个新的 Docker 网络。
-
docker volume ls
- 列出所有的 Docker 数据卷。
-
docker volume create <volume_name>
- 创建一个新的 Docker 数据卷。