基础命令 启动docker systemctl start docker
关闭docker systemctl stop docker
重启docker systemctl restart docker
docker设置随服务启动而自启动 systemctl enable docker
查看docker 运行状态 systemctl status docker
查看docker 版本号信息 docker versiondocker 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 意思为只显示IDdocker 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#删除多个容器 空格隔开要删除的容器名或容器IDdocker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID#删除全部容器docker rm -f $(docker ps -aq)
进入容器 docker exec -it 容器名/容器ID /bin/bash#进入redis001容器 docker exec -it redis001 /bin/bashdocker 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: 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 updocker-compose up -d
执行指定docker-compose文件 docker-compose -f docker-compose-test.yml up -d
停止和重启以及彻底干掉容器 docker-compose stop docker-compose restartdocker-compose down