Docker的常用命令
xshell
帮助命令
docker version #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #帮助命令
帮助文档的地址: https://docs.docker.com/engine/reference/commandline/
镜像命令
docker images # 查看所有本地的主机上的镜像
[root@tianqinglong101 /]# docker images # 查看所有本地的主机上的镜像
REPOSITORY TAG IMAGE ID CREATED SIzE
he11o-world latest bf756fb1ae65 4months ago 13.3kB
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
# 可选项
-a # 列出所有镜像
-q # 只显示镜像的id
docker search mysql # 搜索镜像
docker search mysql # 搜索镜像
可选顶,过滤
--filter=STARS=3000 #搜索出来的镜像就是STARS等于3000的
[root@tianqinglong101 /]# docker search mysq1 --filter=STARS=3000
docker pull 下载镜像
docker pull # 下载镜像
#下载镜像docker pu1l 镜像名[:tag]
[root@tianqinglong01 /]# docker pull mysql
using default tag: latest # 如果不写tag,默认就是latest(最新)
1atest: Pu1ling from library/mysql
5b54d594fba7: Pull complete# 分层下载,docker iamge的核心联合文件系统
07e7d6a8a868: Pull complete
abd946892310: Pull complete
dd8f4d07efa5: Pull complete
076d396a6205: Pull complete
cf6b2b93048f: Pull complete
530904b4a8b7: Pull complete
fb1e55059a95: Pull complete
4bd29a0dcde8: Pull complete
b94a001c6ec7: Pull complete
cb77cbeb422b: Pull complete
2a35cdbd42cc: Pull complete
Digest: sha256:dc255ca50a42b3589197000b1f9bab2b4e010158d1a9f56c3db6ee145506f625 # 签名
status : Downloaded newer image for mysql:latest
docker.io/1ibrary/mysql:latest # 真实地址
# 等价于它
docker pull mysql
docker pull docker.io/library/mysql:latest
#指定版本下载
[root@tianqinglong01 /]# docker pull mysql:5.7 #版本必须有
07e7d6a8a868: Already exists
abd946892310: Already exists
dd8f4d07efa5: Already exists
076d396a6205: Already exists
cf6b2b93048f: Already exists
530904b4a8b7: Already exists
fb1e55059a95: Already exists
4bd29a0dcde8: Pull complete
b94a001c6ec7: Pull complete
cb77cbeb422b: Pull complete
2a35cdbd42cc: Pull complete
status : Downloaded newer image for mysql:5.7
docker.io/1ibrary/mysql:5.7
docker rmi -f 镜像id 删除镜像!
docker rmi -f 镜像id 镜像id # 删除多个容器 空格隔开
docker rmi -f ${docker images -aq} # 删除所有的容器
容器命令
说明︰我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习
docker pull centos
新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" 容器名字tomcat01 tomcat02.用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口-p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口 容器端口
-P 随机指定端口
# 测试,启动并进入容器
[root@tianqinglong /] # docker run -it centos /bin/bash
[root@e4eccco1b495 /]# ls #查看容器内的centos,基础版本,很多命令都是不完善的!
bin dev etc home 1ib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usrvar
#从容器中退回主机
[root@e4eccco1b495 /]# exit
exit
[root@tianqinglong /] # ls
bindev home kuangshen lib64 media optproc run share sys usr www
bootetc hpt lib lost+found mntpatch root sbin srvtmpvar
列出所有的运行容器
# docker ps 命令
#列出当前正在运行的容器
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器
-q #只显示容器的编号
[root@tianqinglong /]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
[root@kuangshen /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUs
PORTS NAMES
e4eccco1b495 centos "/bin/bash" 2 minutes ago Exited (o)About a
minute ago modest_he11man
74bfa7 d94103 bf756fb1ae65 "/hello" 50 minutes ago Exited (o) so minutes
ago
optimistic_almeida
退出容器
exit # 直接容器停止并退出
ctrl+P+Q # 容器不停止退出
删除容器
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 镜像名!
[root@tianqinglong /]# docker run -d centos
# 问题docker ps,发现 centos停止了
# 常见的坑,docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日记
docker logs -f -t --tail 容器,没有日志
#自己编写一段shell脚本
[root@tianqinglong /]# docker run -d centos /bin/sh -c "while true;do echo tianqinglong;sleep 1; done"
[root@tianqinglong /]# docker ps
CONTAINER ID IMAGE
dce7b86171bf centos
#显示日志
-tf #显示日志
--tail number #要显示日志条数
[root@tianqinglong /]# docker logs -tf --tail 10 dce7b86171bf
查看容器中进程信息
docker top 容器id
查看镜像的元数据
docker inspect 容器id
进入当前正在运行的容器(重要)
# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
# 命令
docker exec -it 容器id bashshell
# 例
docker exec -it dce7b86171bf /bin/bash
#方式二
docker attach 容器id
# 正在执行当前的代码....
# docker exec #进入容器后开启一个新的终端,可以在里面操作〔常用)
# docker attach #进入容器正在执行的终端,不会启动新的进程!
从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的的主机路径
[root@tianqinglong home]# docker cp dce7b86171bf:/home/text.java /home