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
