Skip to content

Docker命令

bash
# 基础命令
docker info             # 查看 Docker 系统信息
docker system df        # 查看镜像/容器/数据卷占用空间

# 关于镜像
docker pull 镜像名:标签  # 拉取镜像(默认 latest最新版)
docker push 用户名/仓库名:版本  # 推送镜像到仓库
docker search 镜像名    # 搜索镜像
docker images           # 列出本地所有镜像
docker rmi 镜像ID/名称  # 删除镜像
docker images -q           # 列出本地所有镜像的ID
docker run -d 后台运行 --name 自定义名 -p 主机端口:容器端口 镜像名:标签  替换cmd进程 # 启动容器
docker inspect 镜像ID/名称  # 查看镜像的详细信息
docker tag 原镜像:原版本 新镜像名:新版本  # 重命名镜像
docker save 镜像名 -o test.tar # 打包保存镜像
docker load -i 镜像文件  # 加载安装本地镜像
docker build -t 镜像名:标签 .  # 构建镜像 
 

# 关于容器
docker stop test  # 停止容器
docker container ls -a 或者 docker ps -a  # 停止后,可以-aq可以查看所有容器的ID
docker start test  # 启动容器
docker restart test  # 重启容器
docker top 容器或ID  # 查看容器进程信息pid
docker exec -ti test sh  # 进入容器  参数:-t(终端界面)-i(交互模式)
docker exec -ti test /bin/bash  # 进入容器
docker rm -f `docker ps -aq`  # 删除所有容器
docker logs 容器ID/容器名  # 查看容器日志
# json-file 日志驱动,会捕获容器内所有进程输出到标准输出和标准错误的内容,并将其写入宿主机上的 .json.log 文件。
# 路径/var/lib/docker/containers/容器ID/容器ID-json.log

# 其他
docker login  # 登录Docker仓库
docker commit 容器ID/容器名 镜像名:标签  # 从运行容器创建镜像,不常用

容器说明

启动第一个容器

  • 启动容器后,这个容器会运行第一个程序作为容器的主进程,作为容器的1号进程,也是容器的生命周期。这个进程可能是一个脚本,也可能是一个命令,如果这个脚本或者命令退出,容器也会挂掉退出。
  • docker image inspect 镜像或ID 可以查看镜像的详细信息
图片丢失了
bash
# 之前已经安装了Docker,配置了daemon.json文件,添加了镜像仓库地址。
#  1. 拉取一个ubuntu镜像
[root@rocky ~]# docker pull ubuntu:latest
latest: Pulling from library/ubuntu
817807f3c64e: Pull complete 
Digest: sha256:186072bba1b2f436cbb91ef2567abca677337cfc786c86e107d25b7072feef0c
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest  

---
# 2. 查看镜像
[root@rocky ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    f794f40ddfff   5 weeks ago   78.1MB

---
# 3. 启动容器
[root@rocky ~]# docker run -d --name test ubuntu 
7ec03020b559630aa25936f2121417cefa573e655555e84151ac87ccff8bdf1b # 容器ID

---
# 4. 查看容器状态
[root@rocky ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
7ec03020b559   ubuntu    "/bin/bash"   15 seconds ago   Exited (0) 14 seconds ago             test   
# 容器状态为Exited,说明容器已退出,因为它的主程序cmd就是/bin/bash,这个命令就是一瞬间退出了。

思考:如何让容器一直活下去?

  • 更换一个无限循环的命令或脚本作为cmd容器的主进程,让我们用一个死循环命令tail -f /dev/null试试。
  • 我们只需要在启动命令最后添加一个参数,即更换了cmd作为启动容器的主进程,就是docker run -d --name test ubuntu tail -f /dev/null
bash
# 这里我提前删除了刚才死掉的容器,如果不删请换--name
[root@rocky ~]# docker run -d --name test ubuntu tail -f /dev/null
9bae649117cbe6ed5192ed59bb6d38873789dfbc7830ed5da8ec2e1379fb4bc2
[root@rocky ~]# docker ps
CONTAINER ID   IMAGE     COMMAND               CREATED         STATUS         PORTS     NAMES
9bae649117cb   ubuntu    "tail -f /dev/null"   7 seconds ago   Up 6 seconds             test
# command已经变成了tail -f /dev/null,状态为Up 6 seconds,代表在活着。

验证

  • 切入进入容器docker exec -ti test bash
图片丢失了
全速前进中...