Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余 项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案,使用Docker,开发和测试可以快速部署和迁移环境,并且能保证环境的一致性,从而提升软件的开发和维护效率。
与虚拟机相比,docker有优点也有缺点,具体可以看下图:
正好最近在部署环境,就把docker常用的操作和命令给大家做一个总结:
docker进程相关命令
systemctl start docker #启动docker服务
systemctl stop docker #停止docker服务
systemctl restart docker#重启docker服务
systemctl status docker #查看docker服务状态
systemctl enable docker#设置开机启动服务
docker容器管理命令
docker run --name={your_name} --d {image_name} # 运行容器
参数说明: -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。 -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。 -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。 -it 创建的容器一般称为交互式容器,-id 创建的容器一般称为守护式容器 --name:为创建的容器命名。
docker ps # 查看正在运行的容器
docker ps -s -a #查看当前所有容器
docker stop容器名称 #停止容器
docker restart 容器名称 #重启容器
docker kill 容器名称 #杀死容器
docker rm -f 镜像ID或者镜像名#删除已经停止的容器
如果容器是运行状态则删除失败,需要停止容器才能删除
docker镜像管理命令
docker images #查看当前机器的所有镜像
docker images –q # 查看所用镜像的id
docker search 镜像名称 #搜索镜像,网络中查找需要的镜像
docker pull 镜像名称 #从Docker仓库拉取镜像,名称:版本号
docker push 镜像名称 #推送镜像
docker rmi 镜像名称/镜像id #删除本地机器的镜像
docker rmi docker images -q # 删除所有本地镜像
docker tag 镜像名称:tag 镜像名称:tag #为一个镜像打tag
docker save {image_name} > {new_image_name}.tar #镜像打包成一个tar包
docker load < {image_name}.tar #解压一个镜像tar包
docker查看日志信息
docker logs -f 容器名称 #查看容器日志
docker info #查看docker服务的信息
docker inspect 容器名称 # 获取镜像的元信息,详细信息
与容器交互的命令
进入正在运行的容器
docker exec -it 容器ID或者容器名 /bin/bash
exec的意思是在容器中运行⼀个命令。 /bin/bash是固有写法,作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动 bash。
退出容器
exit #退出也关闭容器;
Ctrl+P+Q #退出不关闭容器
创建启动容器时,使用–v参数设置数据卷
docker run ... –v 宿主机目录/文件:容器内目录/文件
数据卷是宿主机的一个目录或文件 目录必须是绝对路径 如果目录不存在,会自动创建 可以挂载多个数据卷
拷贝文件
docker cp 主机文件路径 容器ID或容器名:容器路径 #宿主机文件拷贝到容器中
docker cp 容器ID或容器名:容器路径 主机文件路径 #容器文件拷贝到宿主机中