Docker常用基本命令
程序员文章站
2024-01-31 14:20:10
...
帮助命令
docker version # 显示docker的版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker --help # 帮助命令
镜像命令
docker images
:查看所有本地主机上的镜像
----------------------------------------------------------------------------------------
➜ ~ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 8 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… 9974 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3651 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 728 [OK]
......
--------------------------------------------------------------------------------------------
# 主要可选项
-f, --filter filter 根据提供的条件过滤输出
使用方法:docker search mysql-f=stars=3000 #mysql下载量大于三千的,没错就是用-f=stars=3000我没写错
docker pull
:拉取镜像
docker pull mysql #最新版本
docker pull 镜像:版本号 #指定版本 docker pull mysql:5.7
docker rmi
:删除镜像
docker rmi -f 镜像id #带f是强制删除不带的话运行中是不能删除的
# 使用方法
➜ ~ docker images -a # 查看所有镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 84c5f6e03bf0 10 days ago 104MB
mysql 5.7 ef08065b0a30 10 days ago 448MB
mysql latest e1d7dc9731da 10 days ago 544MB
hello-world latest bf756fb1ae65 8 months ago 13.3kB
# 删除一个
➜ ~ docker rmi -f e1d7dc9731da
# 删除多个
➜ ~ docker rmi -f 84c5f6e03bf0 ef08065b0a30
# 删除所有
➜ ~ docker rmi -f $(docker images -aq)
容器命令
准备:使用docker 下载一个centos镜像
docker pull centos
新建容器并启动:docker run
docker run -可选项 image
# 可选项说明 一试就知道
--name="Name" 用来区分容器,比如我要启动2个centos的容器一个name给他叫做c1 一个叫做 c2 没毛病吧
-d 使用后台方式运行
-it 使用交互方式运行,进入容器查看内容
-P(大写) 自定义指定容器端口,就是自定义映射主机(物理机)的端口 | -P 8080:9090
-P 主机端口:容器端口
-P ip:主机端口:容器端口
-p(小写) 随机指定容易端口
----------------------------------------------------------------------------------------
# 测试
# 启动并进入centos的容器
➜ ~ docker run -it centos /bin/bash
------------------------------- 一下为centos容器内的内容 ---------------------
[aaa@qq.com /]# ls # 注意:查看容器内的centos ,为基础版本,很多命令都是不完善的!
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[aaa@qq.com /]#
[aaa@qq.com /]# exit # 退出容器 从容器退到主机
exit
➜ ~
----------------------------------------------------------------------------
----------------------------------------------------------------------------
列出是所有运行的容器:docker ps
# 可选项说明 一试就知道
-a # 列出当前正在运行的容器 + 历史运行的过的容器
-n? # 显示最新创建的容器 -n1 最近一个 -n2 最近俩
-q # 只显示容器CONTAINER ID(容器id)
----------------------------------------------------------------------------------------
➜ ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
➜ ~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b36e776e43a0 centos "/bin/bash" 8 minutes ago Exited (0) 3 minutes ago mystifying_meninsky
543b76d47a8b bf756fb1ae65 "/hello" 39 hours ago Exited (0) 39 hours ago gallant_matsumoto
➜ ~
➜ ~ docker ps -aq
b36e776e43a0
543b76d47a8b
退出容器
exit # 停止运行容器并退出
Ctrl + P + Q # 退出不停止运行
删除容器 :docker rm
# 删除一个
docker rm -f 容器id
# 删除多个
docker rm -f 容器id 容器id
# 全部删除
docker rm -f $(docker ps -aq)
docker ps -aq | xargs docker rm -f # 利用linux管道 将查询出来的id作为参数递归删除
## 测试 ##
➜ ~ docker ps -aq | xargs docker rm -f
91f8c360cacb
c1da758ef69e
18ec27bc18ec
➜ ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
➜ ~
启动&停止容器
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止容器
docker kill 容器id # 强制停止容器
- 演示:
➜ ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
➜ ~ docker run -it centos /bin/bash
[aaa@qq.com /]# #
➜ ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
927804ea4e80 centos "/bin/bash" 16 seconds ago Up 15 seconds relaxed_mclaren
➜ ~ docker stop 927804ea4e80
927804ea4e80
➜ ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
➜ ~
常用命令
查看日志:docker logs -f -t --tail -f 容器id
➜ ~ docker run -d -it centos /bin/sh -c "while true;do echo 'testlogs';sleep 1;done" # 后台运行centos 并使用脚本生产日志
0d6e0411161cec5e20e483a99ae08bda76b829f8d2a0cd429a87cf36dc3ba5d1
➜ ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0d6e0411161c centos "/bin/sh -c 'while t…" 5 seconds ago Up 4 seconds hopeful_curran
➜ ~
➜ ~ docker logs -ft --tail -f 0d6e0411161c # 实时查看日志
2020-09-21T03:10:15.242388978Z testlogs
2020-09-21T03:10:16.243911818Z testlogs
2020-09-21T03:10:17.245877509Z testlogs
2020-09-21T03:10:18.247900311Z testlogs
2020-09-21T03:10:19.259762925Z testlogs
容器中的进程:docker top 容器id
➜ ~ docker top 0d6e0411161c
UID PID PPID C STIME TTY TIME CMD
root 1591 27623 0 11:35 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root 27623 27604 0 11:10 ? 00:00:00 /bin/sh -c while true;do echo 'testlogs';sleep 1;done
➜ ~
查看容器的原数据:docker inspect 容器id
进入当前正在运行的容器:
-
docker exec -it 容器id 外壳
(开启一个新的会话)
➜ ~ docker exec -it 0d6e0411161c /bin/bash
-------------------------------------------------------------------------------------------------------------
➜ ~ docker exec -it 0d6e0411161c /bin/bash
[aaa@qq.com /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[aaa@qq.com /]#
-
docker attach 容器id
(进入正在运行的会话)
docker attach 0d6e0411161c
-------------------------------------------------------------------------------------------------------------
# 测试
➜ ~ docker attach 0d6e0411161c
testlogs
testlogs
testlogs
testlogs
testlogs
testlogs......
从容器内拷贝到主机上:docker cp 容器id:容器内的路径 目的的主机路径
注意:从主机上拷贝到容器内 就是反过来呗docker cp 本地主机路径 目的容器id:容器内的路径
➜ ~ docker run -it centos /bin/bash # 创建一个新容器
[aaa@qq.com /]# touch /home/test.java # 创建一个test.java测试文件用于cp
[aaa@qq.com home]# exit # 退出(不管这个容器有没有都可以cp,只要这个容器存在数据就存在)
exit
➜ ~ docker ps -a # 查看容器id
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
299e981aef3d centos "/bin/bash" 4 minutes ago Exited (0) 22 seconds ago sleepy_rosalind
➜ ~ docker cp 299e981aef3d:/home/test.java /home # 进行copy操作
➜ ~ ls /home # 查看是否copy成功
test.java www
➜ ~
docker安装
docker的命令是非常多的,先记住这些基本命令多练,关注我其它docker相关博客我们一起来学习O(∩_∩)O~~
下一篇部署Nginx。
上一篇: 读《代码整洁之道》总结