说明:Docker常用的命令分以下四部分,对于开发人员,掌握这些命令就基本够用。
基础命令
(1)docker服务相关命令
# 启动docker服务
systemctl start docker
# 停止docker服务
systemctl stop docker
# 重启docker服务
systemctl restart docker
(2)防火墙相关命令
# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
# 查看防火墙状态
systemctl status firewalld
镜像相关操作
(1)拉取镜像
如redis,不加版本默认为最新版;
docker pull 镜像名:版本
(2)查看镜像
docker iamges
注意这里的版本,不是应用的版本,而是镜像的版本,所以拉取镜像前,应先去dockerHub(https://hub.docker.com/)上查看对应应用的镜像版本,再拉取自己需要的版本;
(3)打包镜像
注意不要使用imageID代替镜像名,不然后面加载该镜像会丢失镜像的名称、版本信息;
docker save -o 包名.tar 镜像名:版本
如果说拉取镜像是安装应用,那么打包镜像,就相当于根据应用生成安装包;
(4)删除镜像
如redis;
docker rmi 镜像名:版本
(5)强制删除镜像(方式一)
docker rmi -f 镜像名:版本
(6)强制删除镜像(方式二)
docker rmi -f 镜像ID
当然,普通删除,也可以使用镜像ID的方式
(7)加载镜像
docker load -i 镜像包名.tar
容器相关命令
(1)运行容器
创建容器并运行,如redis;
docker run --name 容器名 -p 主机端口:容器端口 -d 镜像名称
其中,
-
docker run:表示创建并运行一个容器;
-
–name:给容器取名;
-
-p:将宿主机端口与容器端口映射,左边是主机端口,右边是容器端口;
-
-d:后台运行;
(2)查看运行容器信息
docker ps
注意,此命令只能查看运行中的容器信息
(3)停止容器
docker stop 容器名
(4)查看所有容器信息
docker ps -a
(5)启动容器
docker start 容器ID/容器名
(6)删除指定容器
docker rm 容器ID/容器名
如删除容器名为rc的容器;
(7)查看容器运行日志
docker logs 容器名
创建nginx容器,并启动,在公网IP上访问,查看前后的日志信息;
访问页面后,再查看日志信息,有新增信息;
(8)实时监控容器运行日志
查看nginx实时的日志信息
docker logs -f 镜像名
此时,日志信息会实时更新,按ctrl + c
可退出
(9)进入容器命令
如进入前面创建的nginx容器
docker exec -it 容器名 bash
其中,
-
exec:进入容器内部;
-
-it:创建标准输入、输出终端;
-
bash:liunx终端交互命令;
修改Welcome to nginx,为Hello Docker;
(10)创建Redis容器并进入
创建redis容器
docker run --name rc -p 6379:6379 -d redis redis-server --appendonly yes
进入redis容器
docker exec -it rc bash
打开redis客户端
redis-cli
设置键值对并获取
set name hzy
get hzy
操作数据卷命令
数据卷是在Linux系统内创建一个文件(volumn),关联(称为挂载)到容器内应用的文件,这样做有两点好处:
-
不需要进入到容器内部修改应用的配置文件;
-
可以使多个容器关联到同一个文件,共享应用配置;
(1)创建volume
创建一个volume,挂载nginx中的html文件夹
docker volume create 数据卷
(2)显示volume信息
docker volume ls
(3)查看指定数据卷
docker volume inspect volume名
Mountpoint后面的路径,指容器中的目录数据挂载在这个路径下
(4)挂载数据卷到容器内目录
启动容器,并挂载数据卷,如nginx应用
docker run --name 容器名 -v 数据卷:容器内文件路径 -d -p 主机端口:容器端口 镜像名
此时,对数据卷中的文件修改,容器中的文件也会同步修改;
另开一个容器,挂载相同的数据卷,可以共享修改;
注意,挂载也可以不经数据卷,直接和目录挂载。但不推荐这种方式,因为直接挂载为了保证文件内容一致,会删除文件;
(5)删除未使用的数据卷
不推荐这种方式,可能会把系统创建好的数据卷给删除掉;
docker volume prune
(6)删除指定volume
如列表中的“reids”数据卷;
docker volume rm volume名
总结
【基础命令】
启动docker服务:systemctl start docker
停止docker服务:systemctl stop docker
重启docker服务:systemctl restart docker
关闭防火墙:systemctl stop firewalld
禁止开机启动防火墙:systemctl disable firewalld
查看防火墙状态:systemctl status firewalld
====================================================================================
【镜像相关操作】
拉取镜像:docker pull 镜像名:版本
查看镜像:docker iamges
打包镜像:docker save -o 包名.tar 镜像名:版本
删除镜像:docker rmi 镜像名:版本
强制删除镜像(方式一):docker rmi -f 镜像名:版本
强制删除镜像(方式二):docker rmi -f 镜像ID
加载镜像:docker load -i 镜像包名.tar
====================================================================================
【容器相关命令】
运行容器:docker run --name 容器名 -p 主机端口:容器端口 -d 镜像名称
查看运行容器信息:docker ps
停止容器:docker stop 容器名
查看所有容器信息:docker ps -a
启动容器:docker start 容器ID/容器名
删除指定容器:docker rm 容器ID/容器名
查看容器运行日志:docker logs 容器名
实时监控容器运行日志:docker logs 镜像名
进入容器:docker exec -it 容器名 bash
=====================================================================================
【操作数据卷命令】
创建volume:docker volume create 数据卷
显示volume信息:docker volume ls
查看指定数据卷:docker volume inspect volume名
挂载数据卷到容器内目录:docker run --name 容器名 -v 数据卷:容器内文件路径 -d -p 主机端口:容器端口 镜像名
删除未使用的数据卷:docker volume prune
删除指定volume:docker volume rm volume名