帮助命令
docker version #显示docker的版本信息 docker info #显示docker的系统信息,包括镜像和容器的数量 docker 命令 --help #帮助命令
镜像命令
[root@hsStudy ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest d1165f221234 2 months ago 13.3kB centos/mysql-57-centos7 latest f83a2938370c 19 months ago 452MB # 解释 REPOSITORY 镜像的仓库源 TAG 镜像的标签(版本) IMAGE ID 镜像的镜像ID CREATED 镜像的创建时间 SIZE 镜像的大小 #可选项 Options: -a, --all # 列出所有的镜像 -q, --quiet # 只显示镜像的ID
docker search搜索镜像
[root@hsStudy ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 10881 [OK] mariadb MariaDB Server is a high performing open sou… 4104 [OK] # 详解 STARS 代表受欢迎程度 # 可选项,通过收藏来过滤 --filter=STARS=3000 搜索出来的镜像就是STARS大于3000的
docker pull 下载命令
#下载镜像 docker pull 镜像名[:tag] [root@hsStudy ~]# docker pull mysql Using default tag: latest #如果不写tag,默认就是latest # 等价于 docker pull mysql docker pull docker.io/library/mysql:latest # 指定版本下载 [root@hsStudy ~] docker pull mysql:5.7
dockers rmi 删除镜像
[root@hsStudy ~] docker rmi -f 镜像id #删除指定的镜像 [root@hsStudy ~] docker rmi -f 镜像id 容器id 容器id #删除多个指定的镜像 [root@hsStudy ~] docker rmi -f $(docker images -aq) #删除全部镜像
容器命令
说明:我们有了镜像才可以创建容器,linux,下载一个CentOS镜像来测试学习
docker pull centos #拉取centos镜像 docker run [可选参数] image #参数说明 --name="Name" 容器名字 tomcat01 tomcat02 用来区分容器 -d 以后台方式运行,ja nohub -it 使用交互模式运行,进入容器查看内容 -p 指定容器的端口 -p 8080:8080 -p ip主机端:容器端口 -p 主机端:容器端口 主机端口映射到容器端口 (常用) -p 容器端口 -P 随机指定端口 #测试,启动并进入容器 [root@hsStudy ~]# docker run -it centos /bin/bash [root@9f8cb921299a /]# ls #查看容器内的centos,基础命令很多都是不完善的 bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr #从容器中退回主机 [root@9f8cb921299a /]# exit exit [root@hsStudy /]# ls bin dev home lib64 media opt root sbin sys usr boot etc lib lost+found mnt proc run srv tmp var
列出所有运行中的容器
# docker ps 命令 #列出当前正在运行的容器 -a #列出当前正在运行的容器+带出历史运行过的容器 -n=? #显示最近创建的容器 -q #只显示容器的编号 [root@hsStudy ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@hsStudy ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9f8cb921299a centos "/bin/bash" 7 minutes ago Exited (0) 4 minutes ago eager_keldysh da964ff44c74 d1165f221234 "/hello" 6 hours ago Exited (0) 6 hours ago affectionate_shtern
退出容器
exit #直接让容器停止并退出 Ctrl + P + Q #容器不停止退出 [root@hsStudy ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@hsStudy ~]# docker run -it centos /bin/bash [root@49bbf686f9a3 /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 49bbf686f9a3 centos "/bin/bash" 14 seconds ago Up 12 seconds sharp_kilby
删除容器
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果要强制删除,rm -f docker rm -f $(docker ps -aq) #删除所有的容器 docker ps -a -q|xargs docker rm #删除若有容器(使用linux管道命令)
启动和停止容器的操作
docker start 容器id #启动容器 docker restart 容器id #重起容器 docker stop 容器id #停止当前正在运行的容器 docker kill 容器id #强制停止当前容器
后台启动容器(擅自停止)
# 命令 docker run -d 镜像名 [root@hsStudy ~] docker run -d centos #后台运行centos [root@hsStudy ~] docker ps #结果什么都没有,发现centos停止了 # 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止 #nagix,容器启动后,发现自己没有提供服务,就会立即停止,没有程序了
查看日志命令
[root@hsStudy /]# docker ps CONTAINER ID IMAGE 4466628037e0 centos #显示日志 -tf #显示日志 --tail number # 要显示的日志条数 docker logs -f -t --tail 10 4466628037e0
查看容器中的进程信息
# 命令 docker top 容器id [root@hsStudy /]# docker top 4466628037e0 UID PID PPID C STIME TTY root 9218 9198 10 15:47 ?
查看镜像的元数据
#命令 docker inspect 容器id #测试 [root@hsStudy /]# docker inspect 4466628037e0
进去当前正在运行的容器
# 我们通常容器都是是同后台方式进行的,修改一些配置 #命令 docker exit -it 容器id bashShell #测试 [root@hsStudy /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4466628037e0 centos "/bin/sh -c 'while t…" 16 minutes ago Up 16 minutes blissful_bhaskara [root@hsStudy /]# docker exec -it 4466628037e0 /bin/bash [root@4466628037e0 /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@4466628037e0 /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 10 07:47 ? 00:02:01 /bin/sh -c while true;do echo hansuo;sleep;done root 49735 0 0 08:05 pts/0 00:00:00 /bin/bash root 51738 49735 5 08:05 pts/0 00:00:00 ps -ef root 51745 1 0 08:05 ? 00:00:00 [sh] #方式二 docker attach 容器id #测试 [root@hsStudy /]# docker attach 4466628037e0 正在执行当前的代码... #decker exec #进入容器后开启一个新的终端,可以在里面操作(常用) #docker attach #进入容器正在执行的终端,不会启动新的进程!
从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的的主机 #查看当前主机目录下 [root@hsStudy home]# ls depp hansuo.java [root@hsStudy home]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES afb3e7611084 centos "/bin/bash" 3 minutes ago Up 3 minutes epic_galileo #进入docker容器内部 [root@hsStudy home]# docker attach afb3e7611084 [root@afb3e7611084 /]# cd /home [root@afb3e7611084 home]# ls #在容器内新建一个文件 [root@afb3e7611084 home]# touch test.java [root@afb3e7611084 home]# ls test.java [root@afb3e7611084 home]# exit exit [root@hsStudy home]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@hsStudy home]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES afb3e7611084 centos "/bin/bash" 5 minutes ago Exited (0) 8 seconds ago epic_galileo #将这个文件拷贝出来到我们的主机上 [root@hsStudy home]# docker cp afb3e7611084:/home/test.java /home [root@hsStudy home]# ls depp hansuo.java test.java [root@hsStudy home]# #拷贝是一个手动过程,未来我们使用 -v 卷的技术可以实现,自动同步 /home