Docker常用命令

  • 1.基本命令
  • 2.镜像命令
  • 3.容器命令


1.基本命令

启动docker

systemctl start docker

关闭docker

systemctl stop docker

重启docker

systemctl restart docker

设置docker开机自启

systemctl enable docker

查看docker当前运行状态

#如果docker当前正在运行,则会出现active提示信息
systemctl status docker

查看docker版本号信息

docker version

查看docker详细信息

docker info

Docker Desktop 禁止更新 如何关闭docker自动更新_redis

2.镜像命令

查看docker镜像

docker images

查询镜像

docker search 镜像名称
#例:搜索STARS>1000的mysql镜像:
docker search --filter=STARS=1000 mysql

拉取镜像

docker pull 镜像名称
docker pull 镜像名称:tag
#如果不指定tag,则默认拉取最新版本镜像,tag为latest

运行镜像

docker run 镜像名称
docker run 镜像名称:tag

删除镜像

#删除单个镜像
docker rmi -f 镜像名称/镜像ID
#删除多个镜像
docker rmi -f 镜像名称/镜像ID 镜像名称/镜像ID ..
#删除全部镜像 -a全部 -q只显示ID
docker rmi -f $(docker images -aq)

强制删除镜像

docker image rm 镜像名称/镜像ID

转存镜像
将镜像保存为tar格式的压缩格式,以便在其他docker机器上使用。

docker save 镜像名称/镜像ID -o 镜像保存全路径

例:

docker save tomcat -o /mytomcat.tar

加载镜像
将转存的镜像文件恢复为可执行镜像

docker load -i 镜像文件

Docker Desktop 禁止更新 如何关闭docker自动更新_运维_02

镜像复制
在原镜像的基础上复制出不同名称或版本号的新镜像

docker tag 原镜像名称:tag 新镜像名称:新tag
#tag与新tag可省略,若省略则默认取latest

3.容器命令

查看正在运行的容器

docker ps

查看所有容器

docker ps -a

运行镜像来生成容器实例

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

例:拉取redis镜像,运行生成容器实例

#拉取redis镜像
docker pull redis:5.0.5
#运行镜像
docker run -it -d --name redis01 redis:5.0.5 /bin/bash

Docker Desktop 禁止更新 如何关闭docker自动更新_Docker Desktop 禁止更新_03

注意!

  此时通过docker ps命令可以看到6379端口已经被占用,按照常理来说redis已经启动成功可以进行访问。

Docker Desktop 禁止更新 如何关闭docker自动更新_docker_04


  但是,我们发现访问6379端口还不能使用redis,这是因为此时redis占用的6379端口仅仅是在容器内部的端口,与宿主机的6379端口并无联系,我们通过宿主机Ip:6379访问此redis是不行的!

  如果外部想要访问容器,必须得让容器中的端口与宿主机的端口建立映射关系,这个概念叫做容器端口映射。端口映射通过运行镜像时添加-p参数来指定。

端口映射示例

docker run -itd --name redis02 -p 6379:6379 redis:5.0.5 /bin/bash

  此时宿主机的6379端口已经和容器内的6379端口完成了映射,通过访问宿主机6379端口就可以访问到容器内的redis应用。

Docker Desktop 禁止更新 如何关闭docker自动更新_docker_05


进入容器内部方式

#方式一(推荐):
docker exec -id 容器名/容器ID /bin/bash
#方式二(不推荐):
docker attach 容器名/容器ID

区别:
exec(为较为常用的):使用exec进入容器后,是开启一个新的操作终端。
attach:在当前容器正在执行的终端里进行操作。

退出容器

#方式一(启动时未加-d的容器会停止运行):
exit
#方式二(容器不会被关闭):
Ctrl + P + Q

启动容器

docker start 容器ID/容器名称

停止容器

docker stop 容器ID/容器名称

重启容器

docker restart 容器ID/容器名称

关闭容器

docker kill 容器ID/容器名称

查看容器详细信息

docker inspect 容器ID/容器名称

容器/宿主机文件拷贝

#容器->服务器
docker cp 容器ID/名称:容器文件路径 外部文件路径
#服务器->容器
docker cp 外部文件路径 容器ID/名称:容器内文件路径

查看容器日志

#-f 跟踪日志输出 -t显示时间戳 --since时间起点 --tail显示末尾行数
docker log -f -t --since="日期时间" --tail=行数 容器ID

设置容器随docker启动自启

#启动时添加参数--restart=always
docker run -itd --name redis02 -p 6379:6379 --restart=always  redis:5.0.5 /bin/bash

容器数据挂载
  数据挂载就是将容器内的数据通过-v命令参数持久化到宿主机,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复。

-v 宿主机文件位置:容器内文件位置
#一个容器可以挂载多个文件位置
-v 宿主机文件位置:容器内文件位置 -v 宿主机文件位置:容器内文件位置..

示例:

# 运行一个docker redis容器进行端口映射,两个数据卷挂载,设置开机自启动
docker run -d -p 6379:6379 --name redis505 --restart=always  -v /var/lib/redis/data/:/data -v /var/lib/redis/conf/:/usr/local/etc/redis/redis.conf  redis:5.0.5 --requirepass "password"

已运行的容器设置开机自启动

#方式一:
docker update --restart=always 容器ID/容器名称
方式二:
docker cotainer update --restart=always 容器ID/容器名称

更改容器名称

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