Docker的常用命令
帮助命令
docker version # 显示docker的版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help # 帮助命令
帮助文档的地址
帮助文档地址:https://docs.docker.com/reference/
镜像命令
docker images 查看所有本地的主机上的镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 10 months ago 13.3kB
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像的大小
# 可选项
-a, --all 列出所有的镜像
-q, --quiet 只显示镜像的ID
docker search搜索镜像
docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10171 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3743 [OK]
# 可选项,通过收藏来过滤
--filter=STARS=3000 搜索出来的镜像就是STARS大于3000的
docker pull 下载镜像
# 下载镜像 docker pull 镜像名[:TAG]
[root@iZb6u9q07jrcg8Z ~]# docker pull mysql
Using default tag: latest # 如果不写TAG,默认是 latest 最新版
latest: Pulling from library/mysql
bb79b6b2107f: Pull complete # 分层下载,docker iamge的核心 联合文件系统
49e22f6fb9f7: Pull complete
842b1255668c: Pull complete
9f48d1f43000: Pull complete
c693f0615bce: Pull complete
8a621b9dbed2: Pull complete
0807d32aef13: Pull complete
a56aca0feb17: Pull complete
de9d45fd0f07: Downloading [==============================> ] 69.3MB/112.8MB
1d68a49161cc: Download complete
d16d318b774e: Download complete
49e112c55976: Download complete
Digest: sha256:8c17271df53ee3b843d6e16d46cff13f22c9c04d6982eb15a9a47bd5c9ac7e2d # 签名信息
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址
# 等价于
docker pull mysql = docker pull docker pull mysql
# 指定版本下载
docker pull mysql:5.7
docker rmi 删除镜像
docker rmi -f 镜像 ID # 删除指定的镜像
docker rmi -f 镜像 ID1 镜像 ID2 镜像 ID3 # 删除多个的镜像
docker rmi -f $(docker images -aq) # 删除全部的镜像
容器命令
说明:我们有了镜像才可以创建容器,liunx ,下载一个centos镜像来测试学习
docker pull centos
新建容器并启动
docker run [可选参数] image
# 参数说明
-- name="Name" 容器名字 Nginx01 Nginx02 Nginx03,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 80:80
-p ip:主机端口:容器端口
-p 主机端口:容器端口 (常用)
-p 容器端口
容器端口
-P(大写) 随机指定端口
# 测试 启动并进入容器
docker run -it centos /bin/bash
# 退出容器
exit
# 退出容器并保持挂起状态
Ctrl+P+Q
列出所有的运行容器
# docker ps 命令
-a 列出当前正在运行的容器+带出历史运行过的容器
-n=? 显示最近创建的容器 列:docker ps -a -n=1
-q 只显示容器的编号
[root@iZb6u9q07jrcg8Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iZb6u9q07jrcg8Z ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a67cf4208645 centos "/bin/bash" 8 minutes ago Exited (0) 6 minutes ago determined_yalow
f56b7d8ed7d5 centos "/bin/bash" 10 minutes ago Exited (130) 9 minutes ago angry_brahmagupta
852ce5fec55e centos "/bin/bash" 10 minutes ago Exited (0) 10 minutes ago practical_montalcini
2c8359b87219 bf756fb1ae65 "/hello" 3 hours ago Exited (0) 3 hours ago friendly_visvesvaraya
删除容器
docker rm 容器id 删除指定容器,不能删除正在运行的容器,如要强制删除请用 rm -f
docker rm -f $(docker ps -aq) 删除所有容器
docker ps -a -q | xargs docker rm 删除所有的容器利用管道符的骚操作
启动和停止容器的操作
docker start 容器ID 启动容器
docker restart 容器ID 重启容器
docker stop 容器ID 停止当前正在运行的容器
docker kill 容器ID 强制停止当前的容器
常用的其他命令
后台启动容器
# 命令 docker run -d 镜像名
docker run -d -centos
# 问题docker ps 发现 centos 停止了
# 常见的坑 docker 容器使用后运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx 容器启动后,发现自己没有提供服务,就会立刻停止 就是没有程序启动他就不会启动
查看日志
docker logs -tf --tail 容器名 #空容器没有日志
# 写一段脚本来让他生成日志
docker run -d centos /bin/sh -c "while true;do echo xufanbin;sleep 2;done"
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
310b855e6c41 centos "/bin/sh -c 'while t…" 5 seconds ago Up 4 seconds naughty_hermann
# 显示日志
- tf 显示日志
-- tail 条数 要显示日志条数
docker logs -tf --tail 10 310b855e6c41
查看容器中的进程信息
# top命令
docker top 容器ID
docker top 310b855e6c41
UID PID PPID C STIME TTY TIME CMD
root 4693 4677 0 22:25 ? 00:00:00 /bin/sh -c while true;do echo xufanbin;sleep 2;done
root 6674 4693 0 22:30 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 2
镜像源数据
docker inspect 容器ID
进入当前正在运行的容器
# 我们通常容器都是使用后台的方式运行的,需要进入容器,修改一些配置
# 命令
docker exec -it 容器ID /bin/bash
# 测试
[root@iZb6u9q07jrcg8Z ~]# docker exec -it 310b855e6c41 /bin/bash
[root@310b855e6c41 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@310b855e6c41 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 14:25 ? 00:00:00 /bin/sh -c while true;do echo xufanbin;sleep 2;done
root 391 0 0 14:38 pts/0 00:00:00 /bin/bash
root 421 1 0 14:39 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 2
root 422 391 0 14:39 pts/0 00:00:00 ps -ef
# 方式二
docker attach 容器ID
# 测试
docker attach 310b855e6c41 /bin/bash
正在执行的代码
docker exec 进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach 进入容器正在执行的终端,不会启动新的进程
从容器内外拷贝文件
容器从内向外拷贝
docker cp 容器id:容器内路径 目标路径
docker cp 1e322337299c:/test1.txt /root
容器从外向内拷贝
docker cp 目标路径 容器id:容器内路径
docker cp index.html 1e322337299c:/usr/share/nginx/html/index.html
小结
docker run创建一个新容器并运行
docker start开启一个容器并使其在后台运行
docker stop停止一个容器
docker restart重启一个容器
docker kill杀掉一个容器进程
docker rm删除容器
docker pause暂停容器
docker create从镜像中创建一个容器
docker exec对一个容器执行shell命令
docker ps列出容器
docker inspect获取容器或镜像的元数据
docker top查看正在运行中的容器进程信息
docker attach链接正在运行的容器
docker events从docker服务器获取事件
docker logs获取docker日志
docker wait 让一个容器进入等待,使其进入阻塞状态
docker export 讲一个容器的文件系统打包至tar
docker port 列出一个容器的端口映射情况
docker container 管理已经运行的容器的
docker deploy 部署新的堆栈或更新已有堆栈的
docker update 更新容器
docker rename 重命名容器
docker volume 卷管理
docker commit 提交一个容器的文件系统,使之生成一个新的镜像
docker cp 向一个正在运行的容器复制文件,或将容器中的文件复制出来
docker diff 检查一个容器文件系统更改情况
docker login docker登入
docker logout docker登出
docker pull 拉取镜像
docker push 推送镜像至服务器
docker search 在docker hub上查询镜像
docker images 列出镜像
docker rmi 删除镜像
docker tag 修改本地某一镜像的标记,使其镜像属于某一仓库
docker build 通过指定Dockerfile文件编译镜像
docker history 查看镜像历史
docker save 将制定镜像保存成tar文件
docker load 从tar中恢复镜像
docker import 从tar中创建一个新镜像
docker checkpoint 设置checkpoint,类似于恢复点,可以让镜像撤销到曾经设置的某一个checkpoint上
docker image docker镜像管理
docker manifest docker镜像清单管理
docker trust docker可信镜像管理
docker swarm docker集群管理工具
docker node docker集群节点控制
docker stack docker集群堆栈管理
docker info 查询docker信息
docker version 查询docker版本
docker system docker系统管理
docker stats docker容器资源使用统计
docker config 管理docker配置
docker network docker网络管理
docker plugin docker插件管理
docker secret docker敏感信息管理
docker service docker服务管理