docker常用命令操作
南江烂柯人 JAVA劝退师

基础命令

启动docker

systemctl start docker

关闭docker

systemctl stop docker

重启docker

systemctl restart docker

docker设置随服务启动而自启动

systemctl enable docker

查看docker 运行状态

systemctl status docker

查看docker 版本号信息

docker version
docker info

镜像命令

下载镜像

docker pull 镜像名 
docker pull 镜像名:tag

查看镜像

docker images

重新命名

docker tag 旧镜像:版本 新镜像:版本

搜索镜像

docker search 镜像名
docker search --filter=STARS=9000 mysql 搜索 STARS >9000的 mysql 镜像

删除镜像

#删除一个
docker rmi -f 镜像名/镜像ID

#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID

#删除全部镜像  -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)

强制删除镜像

docker image rm 镜像名称/镜像ID

导出/导入镜像

export/import

export导出

docker export f299f501774c > hangger_server.tar

import导入

docker import - new_hangger_server < hangger_server.tar

save/load

save导出

docker save 0fdf2b4c26d3 > hangge_server.tar
# 还可以同时将多个 image 打包成一个文件,比如下面将镜像库中的 postgres 和 mongo 打包:
docker save -o images.tar postgres:9.6 mongo:3.4

load导入

docker load < hangge_server.tar

区别

特别注意:两种方法不可混用。如果使用 import 导入 save 产生的文件,虽然导入不提示错误,但是启动容器时会提示失败,会出现类似”
docker: Error response from daemon: Container command not found or does not exist”的错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1. 文件大小不同
export 导出的镜像文件体积小于 save 保存的镜像

2. 是否可以对镜像重命名
docker import 可以为镜像指定新名称
docker load 不能对载入的镜像重命名

3. 是否可以同时将多个镜像打包到一个文件中
docker export 不支持
docker save 支持

4. 是否包含镜像历史
export 导出(import 导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史记录和元数据信息(即仅保存容器当时的快照状态),所以无法进行回滚操作。
而 save 保存(load 加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。

5. 应用场景不同
docker export 的应用场景:主要用来制作基础镜像,比如我们从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用 docker export 保存为一个基础镜像。然后,把这个镜像分发给其他人使用,比如作为基础的开发环境。
docker save 的应用场景:如果我们的应用是使用 docker-compose.yml 编排的多个镜像组合,但我们要部署的客户服务器并不能连外网。

容器命令

启动容器

docker run  镜像名
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行)  --name 给要运行的容器 起的名字  /bin/bash  交互路径
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash

查看启动容器

docker ps

查看所有容器

docker ps -a

删除容器

#删除一个容器
docker rm -f 容器名/容器ID

#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID

#删除全部容器
docker rm -f $(docker ps -aq)

进入容器

docker exec -it 容器名/容器ID /bin/bash
#进入redis001容器   
docker exec -it redis001 /bin/bash

docker attach 容器名/容器ID

停止容器

docker stop 容器ID/容器名

重启容器

docker restart 容器ID/容器名

启动容器

docker start 容器ID/容器名

kill 容器

docker kill 容器ID/容器名

容器文件拷贝

#docker cp 容器ID/名称:文件路径  要拷贝到外部的路径 | 要拷贝到外部的路径  容器ID/名称:文件路径
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径  容器外路径
#从外部 拷贝文件到容器内
docker  cp 容器外路径 容器ID/名称: 容器内路径

查看容器日志

docker logs -f --tail=要查看末尾多少行 默认all 容器ID

更新容器配置

docker  update --restart=always 容器Id 或者 容器名
或
docker container update --restart=always 容器Id 或者 容器名

更换容器名

docker rename 容器ID/容器名 新容器名

运维命令

查看docker网络

docker network ls

创建docker网络

docker network create app

查看docker磁盘占用总体情况

du -hs /var/lib/docker/

查看Docker的磁盘使用具体情况

docker system df

删除 无用的容器和 镜像

#  删除异常停止的容器
docker rm `docker ps -a | grep Exited | awk '{print $1}'`

#  删除名称或标签为none的镜像
docker rmi -f  `docker images | grep '<none>' | awk '{print $3}'`

清除所有无容器使用的镜像

# 注意,此命令只要是镜像无容器使用(容器正常运行)都会被删除,包括容器临时停止
docker system prune -a

docker-compose

docker-compose脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
version: '3.5'
services:
redis:
# 镜像名
image: redis:bullseye
# 容器名
container_name: redis-6379
# 重启策略
restart: always
# 端口映射
ports:
- 6379:6379
environment:
# 设置环境变量 时区上海 编码UTF-8
TZ: Asia/Shanghai
LANG: en_US.UTF-8
volumes:
# 配置文件
- /home/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf:rw
# 数据文件
- /home/redis/data:/data:rw
command: redis-server --requirepass 123456
# 网络
networks:
default:
external:
name: hkzs

启动和后台启动

docker-compose up
docker-compose up -d 

执行指定docker-compose文件

docker-compose -f docker-compose-test.yml up -d

停止和重启以及彻底干掉容器

docker-compose stop 
docker-compose restart
docker-compose down
  • 本文标题:docker常用命令操作
  • 本文作者:南江烂柯人
  • 创建时间:2022-11-22 10:45:00
  • 本文链接:https://www.mattjia.com/2022/11/22/operation/docker常用命令操作/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论