Docker学习笔记三:Docker常用的命令
Docker常用的命令-镜像
1、镜像相关的命令
-
docker images # 查看本地所有的镜像
-
docker images -q 镜像名 # 查看镜像所用的ID
-
docker search 镜像名 # 从网络中查找需要的镜像
-
docker pull 镜像名[:版本号] # 从Docker仓库下载镜像,不指定版本则为最新版本
-
docker rmi 镜像名/ID # 删除指定本地镜像
-
docker rmi ‘docker images -q’ # 删除本地所有镜像
-
docker stats # 获取当前机器上运行容器的统计信息,如:cpu利用率、内存使用率等
- docker save -o /root/xxx.tar REPOSITORY:TAG # 指定镜像的REPOSITORY、TAG将将镜像导入到/root/xxx.tar文件下(方便导入镜像时自带tag信息)
- docker save 镜像ID > /root/xxx.tar # 通过镜像ID将镜像导入到/root/xxx.tar文件下(导入镜像时不会自带tag信息)
- docker tag 镜像ID REPOSITORY:TAG # 修改镜像的REPOSITORY、TAG信息
- docker load -i /root/xxx.tar # 通过导出的镜像包,将镜像导入镜像仓库(导出时没有指定repository、tag,导入后都显示None)
Docker常用的命令-容器
1、容器相关的命令
-
docker ps # 查看正在运行的容器
-
docker ps -a # 查看所有的容器,比较长的内容会省略展示
-
docker ps -a --no-trunc # 查看所有的容器,不截断展示所有的内容
-
docker inspect 容器名称 # 查看容器信息
-
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名/ID # 查看IP地址,针对容器是centos镜像的才会有ip地址展示
-
docker exec -it 容器名称/ID [/bin/]bash # 进入容器中
-
exit # 在容器内执行则退出容器,容器不会关闭
-
docker ps -f status=exited # 查看停止的容器
-
docker start 容器名称/ID # 启动容器
-
docker start $(docker ps -a -q) # 启动所有容器,无法控制启动的顺序,如果遇到有依赖关系,可能需要运行两次
-
docker restart 容器名称/ID # 重启容器
-
docker stop 容器名称/ID # 停止容器
-
docker kill 容器名称/ID # 强制停止容器
-
docker stop $(docker ps -a -1) # 停止所有容器
-
docker logs 容器名称/ID # 查看容器的日志
-
docker logs 容器名称/ID | more # 查看容器的日志,如果日志比较长可用" | more"
-
docker logs -f 容器名称/ID # 查看容器实时日志
-
docker logs 容器名称/ID > /tmp/xxx.log # 将容器的日志保存到指定的文件中
-
docker rm 容器名称/ID # 删除容器,需要先停止再删除,避免失败
-
docker cp 需拷贝的文件或目录 容器名/ID:容器目录 # 将文件拷进容器(在宿主机器运行命令,而不是容器内部)
-
docker cp 容器名/ID:容器目录 需拷贝的文件或目录 # 将文件拷出容器(在宿主机器运行命令,而不是容器内部)
- docker export 容器名/ID > xxx.tar.gz # 将容器导出为一个.tar.gz文件,如:docker export redis > redis.tar.gz
- docker import xxx.tar.gx 镜像名:版本号 # 将导出xxx.tar.gz文件导入创建新的镜像
- docker top 容器名/ID # 查看容器内运行的进程
-
docker run ...... # 创建容器
-
-i:前台运行,通常与-t同时使用,容器创建后自动进入容器中,退出容器后,容器自动关闭
- -t:为容器重新分配一个伪输入终端,通常与-i同时使用
- -d:后台运行,容器创建后自动进入容器中(ps:运行的容器若不是一直运挂起的命令就会启动失败,如:redis启动时是一直挂起,centos启动时就不是一直挂起)
-
--name:为创建的容器命名
- --restart:可选配置,设置容器启动之后自动重启,默认no,always表示启动容器后重启(ps:已启动的容器用update更新:docker update --restart=always 容器id)
- --privileged=true:可选配置,目录映射时避免出现权限问题(ps:解决docker挂载主机目录访问出现cannot open directory .: Permission denied)
- -P:大写,宿主机端口与容器端口随意映射,如:-P ip::containerPort
- -p:小写,宿主机端口与容器端口随意映射,如:-p 8888:80
-
-v: 创建容器的时,映射目录参数
-
将宿主机目录与容器内的目录进行映射,通过修改宿主机的某个目录从而影响容器
-
当修改容器目录,宿主机目录也会实时更新,格式:-v宿主机目录:容器目录
-
如果映射多级目录可能出现权限不足提示,因为CentOS7的安全模块selinux把权限禁掉了,需添加参数--privileged=true,解决挂载目录没有权限的问题
-
- -m:配置容器可使用内存空间的最大是
- -h:配置容器的hostname
- -e:配置环境变量,如:-e TZ=Asia/Shanghai,设置时区
- --add-host:可选,配置扩展的ip映射地址
-
![](https://img2020.cnblogs.com/blog/1425104/202201/1425104-20220105163904468-1360290301.png)
2、进入容器后,解决无法使用Linux基本命令
-
创建的容器一般是基于Ubuntu镜像,命令与CentOS有些细微的区别
-
apt-get update
-
apt-get install vim(需要安装的命令名称)
3、Docker格式化显示指定的列
-
格式:docker ps [-a] --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
名称 |
含义 |
.ID |
容器ID |
.Image |
镜像ID |
.Command |
执行的命令 |
.CreatedAt |
容器创建时间 |
.RunningFor |
运行时长 |
.Ports |
暴露的端口 |
.Status |
容器的状态 |
.Names |
容器的名称 |
.Label |
分配给容器的所有标签 |
.Mounts |
容器挂在的卷 |
.Networks |
容器所用的网络名称 |