文章目录
Docker 的常用命令
帮助命令
docker version
docker info
docker 命令 --help (docker images --help查看images命令帮助 )
镜像命令
docker images 查看本地主机上的所有镜像
docker images
REPOSITORY TAG IMAGE ID CREATE SIZE
hello-world latest feb5d9fea6a5 12 monago 13.3kB
#解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
#可选项
docker images --help
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show image IDs
搜索镜像 docker search
docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 13234 [OK]
mariadb MariaDB Server is a high performing open sou… 5062 [OK]
phpmyadmin
#可选项,通过搜藏来过滤
--fi1ter=STARS=3000 #搜索出来的镜像就是STARS大于3000的
docker search mysq1 --filter=STARS=5000
下载镜像 docker pull
#下载镜像docker pull 镜像名[:tag]
docker pull mysql # 不推荐使用,最好加上指定版本,版本号到官网里面找
using default tag: latest #如果不写tag, 默认就是latest
latest: Pulling from library/mysq1
5b54d594fba7: Pu11 complete #分层下载,docker iamge的核心 联合文件系统
docker pull mysql:5.7
删除镜像 docker rmi
docker rmi -f 容器id #删除指定的容器
docker rmi -f 容器id 容器id 容器id 容器id #删除多个容器
docker rmi -f $(docker images -aq) #删除全部的容器 (不介意尝试,万一本地上有别人的镜像就一起删除了,如果是自己的docker 可以尝试)
容器命令
说明:我们有了镜像才可以创建容器,linux,下载一个 centos镜像来测试学习
docker pull centos
新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" 容器名字tomcat01 tomcat02, 用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口-p 8080: 8080
ip:主机端口:容器端口
-p主机端口:容器端口 (常用)
-p容器端口
容器端口
-P(大写P) 随机指定端口
#测试,启动并进入容器
[root@kuangshen /]# docker run -it centos /bin/bash
[root@e4eccc01b495 /]# 1s # 查看容器内的centos,基础版本,很多命令都是不完善的!
#从容器中退回主机
[root@e4eccc01b495 /]# exit
exit
列出运行的容器
docker ps [可选参数] #列出当前正在运行的容器
-a # a 就是 all ,列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器 -n=3 最近运行的三个容器
-q #只显示容器的编号
退出容器
exit #直接容器停止并退出
ctrl+P+Q #容器不停止退出
删除容器
docker rm 容器id #删除指定的容器 不能删除正在运行的容器,如果要强制删除rm -f
docker rm -f $(docker ps -aq) #删除所有的容器 依旧不推荐
启动和停止容器的操作
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
常用的其他命令
后台启动容器
#命令docker run -d镜像名!
[root@kuangshen /]# docker run -d centos
#问题docker ps,发现centos 停止了
#常见的坑: docker 容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止
# nginx, 容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日志
docker logs -f -t --tail 容器,没有日志
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
--details Show extra details provided to logs
-f, --follow Follow log output
--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or
relative (e.g. 42m for 42 minutes)
-n, --tail string Number of lines to show from the end of the logs (default
"all")
-t, --timestamps Show timestamps
--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z)
or relative (e.g. 42m for 42 minutes)
#自己编写一段she11脚本
[root@kuangshen /]# docker run -d centos /bin/sh -c "while true; do echo kuangshen;sleep 1;done"
[root@kuangshen /]# docker ps
CONTAINER ID IMAGE
dce7b86171bf centos
#显示日志
-tf #显示日志
--tail number #要显示日志条数
[root@kuangshen /]# docker 1ogs -tf --tail 10 dce7b86171bf
查看容器中进程信息
docker top 容器id
查看镜像元数据
docker inspect 容器id
进入当前正在运行的容器
#我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
#方式一
docker exec -it 容器id /bin/bash
# 方式二
docker attach 容器id
# docker exec #进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach #进入容器正在执行的终端,不会启动新的进程!
从容器拷贝文件到主机上
docker cp 容器id:容器内的路径 目的主机的路径
sudo docker cp 98b7040ed8ef:test.java /zhj_work # 直接拷贝,权限不够,加上sudo 之后,给对应命令,提升权限
# 进入docker 容器内部
docker attach 容器id
cd /home # 进入对应目录
torch test.java # 建一个文件
exit # 退出容器 ,容器退出后,运行文件是一直保存的
docker cp 容器id:容器内的路径 目的主机的路径 #(被提示权限不够)
sudo docker cp 98b7040ed8ef:test.java /zhj_work # 直接拷贝,权限不够,加上sudo 之后,给对应命令,提升权限
#拷贝是一个手动过程,未来我们使用-v卷的技术,可以实现,自动同步 /home /home