Docker命令整理:本地开发环境的快捷配置方式
Docker命令整理:本地开发环境的快捷配置方式
xxfer写在前面
服务器中快速部署项目环境避免不了docker的使用,所以专门在这里整理一下常用的docker命令。
优质视频链接
关于docker
Docker 就像一个盒子,里面可以装很多物件,如果需要某些物件,可以直接将该盒子拿走,而不需要从该盒子中一件一件的取。
可以简单地把docker理解为轻量级的VM虚拟机,但它和虚拟机是有区别的,具体区别请大家自行学习。
三个基本概念
镜像(Image)
Docker的镜像概念类似于虚拟机里的镜像(比如.ISO文件),是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了MySQL或用户需要的其它应用程序。
这里的镜像就如下方虚拟机创建时候使用的镜像类似。这个镜像便于移动,并且这个镜像我们可以交给任何人使用,其他人使用的时候也很方便,只需要将其实例化即可,这也是docker迁移项目的便捷之处。
关于创建镜像,就要讲到Dockerfile文件,镜像就是靠Dockerfile文件这个自动化脚本创建出来的。
容器(Container)
Docker容器是由Docker镜像创建的运行实例,类似VM虚拟机,支持启动,停止,删除等。
每个容器间是相互隔离的,容器中会运行特定的应用,包含特定应用的代码及所需的依赖文件。
容器就类似与虚拟机中我们创建好的虚拟机系统,之后我们所有的操作都是在容器中进行的,我们的程序也是运行在容器中。
仓库(Repository/Hub)
镜像便于传播,而仓库就是专门用来传播这些镜像的地方,他有点类似与Github,或者你可以把他看成一个存放各种镜像的镜像商店
Docker官方的仓库:他的服务器处于国外,所以下载速度较慢,不过我们可以通过换源解决。
daocloud国内仓库:国内也有一些优秀的商店,他和Docker官方的仓库的区别类似与Github和Gitee的区别。
安装和基础配置
安装
因为之后要在服务器上使用,所以这篇文章使用Linux的Ubuntu20.04发行版为例进行演示。
Ubuntu一般自带docker,只是docker的旧版本不一定被称为docker,docker.io 或 docker-engine也有可能,所以需要先卸载:
1 | sudo apt-get remove docker docker-engine docker.io containerd runc |
如果不能正常卸载也没事,可以跳过上面的步骤,直接启用 Docker 软件源,更新软件包即可。具体操作如下:
1 | //更新软件包索引,并且安装必要的依赖软件,来添加一个新的 HTTPS 软件源 |
安装 Docker 最新版本:
1 | sudo apt update |
安装完成,Docker 服务将会自动启动。输入下面的命令进行验证:
1 | sudo systemctl status docker |
出现类似下面内容说明安装成功:
1 | docker.service - Docker Application Container Engine |
当一个新的 Docker 发布时,你可以使用标准的sudo apt update && sudo apt upgrade
流程来升级 Docker 软件包。
如果你想阻止 Docker 自动更新,锁住它的版本:
1 | sudo apt-mark hold docker-ce |
以非 Root 用户身份执行 Docker
默认情况下,只有 root 或者 有 sudo 权限的用户可以执行 Docker 命令。
想要以非 root 用户执行 Docker 命令,你需要将你的用户添加到 Docker 用户组,该用户组在 Docker CE 软件包安装过程中被创建。想要这么做,输入:
1 | sudo usermod -aG docker $USER |
$USER是一个环境变量,代表当前用户名。登出,并且重新登录,以便用户组会员信息刷新。
卸载
在卸载 Docker 之前,你最好移除所有的容器,镜像,卷和网络。
运行下面的命令停止所有正在运行的容器,并且移除所有的 docker 对象:
1 | docker container stop $(docker container ls -aq) |
可以使用apt
像卸载其他软件包一样来卸载 Docker:
1 | sudo apt purge docker-ce |
docker命令使用
镜像(Image)
创建镜像需要自行编写Dockerfile文件,然后使用命令docker build
即可。目前现有的镜像够我用了,Dockerfile以后再学。
- docker images:查看已有镜像
- docker images -q:查看已有镜像id
去dockerhub网站搜索镜像,然后拉取镜像
- docker search xxx #xxx指你要搜索的镜像,例如mysql
- docker search xxx –filter=STARS=3000 #搜索收藏量大于3000的xxx镜像
- docker pull xxx #下载xxx镜像最新版,这里搜索比较慢的话需要换加速镜像
- docker pull xxx:5.7 #下载xxx镜像5.7版本
删除镜像
- docker rmi -f ID:根据id删除指定镜像
容器(Container)
创建容器
- docker run [参数] 镜像名
#参数说明
–name=”name” #容器名字
-d #后台方式运行
-it #交互方式运行(进入容器)
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
-p 随机指定端口
查看容器
- docker ps #列出正在运行的容器
- docker ps -a #列出所有容器(常用查看id)
删除容器
- docker rm 容器id 不能删除正在运行的容器
启动/停止容器
- docker start 容器id #启动容器
- docker restart 容器id #重启容器
- docker stop 容器id #停止当前正在运行的容器
- docker kill 容器id #强制停止容器
日志/进程/元数据信息
- docker logs -tf –tail 10 容器id #–tail 10表示显示10条日志
- docker top 容器id #查看容器中进程信息
- docker inspect 容器id #显示容器的所有信息
当容器正在运行时
- docker exec -it 容器id /bin/bash #进入正在运行的容器,并开启一个新的终端
- docker attach 容器id #进入正在运行的终端
- dockr cp 容器id:/xxx/aaa.txt /xxx #将容器中/xxx文件夹下的aaa.txt文件拷贝到主机的/xxx文件夹下
数据挂载——数据卷技术
- docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 –name mysql01 mysql:5.7
#参数说明
-d 后台运行
-p 主机端口:容器端口 #端口映射
-v 主机地址:容器地址 #卷挂载
-e MYSQL_ROOT_PASSWORD=123456 #配置密码为123456
–name 容器名字
Docker compose
常用的就是创建yaml文件,然后运行即可,关键在于yaml文件的编写。
- 创建并编写yaml文件
- 使用命令运行至于如何编写yaml文件建议自学,可以参考这些部署教程:Nginx Proxy Manager、自建Picsur
1
docker compose up -d