1.帮助命令:
#1.查看版本
docker version
#2.查看信息
docker info
#3.帮助命令
docker --help
2.镜像命令:
#1.列出镜像
docker images
#可选项
-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 Do not truncate output
-q, --quiet Only show numeric IDs 常用
#例:列出所有镜像的ID
docker images -a -q
docker images -aq
#2.搜索镜像
docker search
#可选项
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print search using a Go template
--limit int Max number of search results (default 25)
--no-trunc Do not truncate output
#例:搜索收藏数大于等于3000的mysql镜像
docker search mysql -f=STARS=3000
#3.下载镜像
docker pull
#可选项
-a, --all-tags Download all tagged images in the repository
--disable-content-trust Skip image verification (default true)
--platform string Set platform if server is multi-platform capable
-q, --quiet Suppress verbose output
#例:下载mysql镜像,默认下载最新版,分片下载
docker pull mysql
#等价于以上命令
docker pull docker.io/library/mysql:latest
#指定版本下载
docker pull mysql:5.7
#4.删除镜像
docker rmi
#例:删除指定镜像
docker rmi -f 镜像Id
#删除多个镜像,以空格分隔
docker rmi -f 镜像Id1 镜像Id2 镜像Id3
#删除全部镜像
docker rmi -f $(docker images -aq)
#删除tag为<none>的镜像
docker rmi $(docker images | grep "none" | awk '{print $3}')
3.容器命令:
#1.启动容器
docker run [可选参数] 容器名称
#可选项
--name #容器名字 --name=“容器名字”
-d #后台方式运行
-it #使用交互方式运行,进入容器查看内容
-p #指定容器的端口
#四种方式:
#-p ip:主机端口:容器端口
#-p 主机端口:容器端口(常用)
#-p 容器端口
#容器端口
-P #随机指定端口
#例:启动并进入容器centos
docker run -it centos /bin/bash
#2.退出容器
#例:退出并停止容器
exit
#退出不停止容器
Ctrl + P + Q
#3.列出正在运行中的容器
docker ps
#可选项
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print containers using a Go template
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display numeric IDs
-s, --size Display total file sizes
#例:列出所有容器,包括正在运行的和停止的
docker ps -a
#显示最近创建的容器
docker ps -a -n=1
#显示所有容器编号
docker ps -aq
#4.删除容器
docker rm
#例:删除指定容器,不能删除正在运行的容器,如果要强制删除,则使用 rm -f
docker rm 容器Id
#删除所有容器
docker rm -f $(docker ps -aq)
docker ps -a -q|xargs docker rm -f
#5.其他操作
#启动已经停止的容器
docker start 容器Id
#重启容器
docker restart 容器Id
#停止正在运行的容器
docker stop 容器Id
#强制停止当前容器
docker kill 容器Id
4.其他命令
#1.后台启动
docker run -d centos
#发现问题:后台启动centos,发现容器停止运行
#解释:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用或者没有提供服务,就会自动停止。例如Nginx
#2.查看日志
docker logs
#可选项
--details Show extra details provided to logs
-f, --follow Follow log output
--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
--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:37) or relative (e.g. 42m for 42 minutes)
#例:查看全部日志
docker logs -f -t
#查看10条日志
docker logs -f -t --tail 10 容器Id
#shell脚本,循环输出test日志
docker run -d centos /bin/sh -c "while true;do echo test;sleep 1;done"
#3.查看容器中进程信息,PID:进程Id,PPID:父进程Id
docker top 容器Id
#4.查看镜像元数据
docker inspect 容器Id
#可选项
-f, --format string Format the output using the given Go template
-s, --size Display total file sizes if the type is container
--type string Return JSON for specified type
#5.进入当前正在运行的容器
docker exec -it 容器Id /bin/bash
docker attach 容器Id
#区别:
docker exec #进入容器后开启一个新的终端,可以在里面操作
docker attach #进入容器正在执行的终端,不会启动新的进程
#查看进程信息
ps -ef
#5.从容器内拷贝文件到主机上,拷贝文件与容器启停状态无关
docker cp 容器Id:容器内路径 目的主机路径
#例:
docker cp 9ce5dd22002d:/home/temp/test.txt /home/temp
#5.其他命令
#用完即删
docker run -it --rm tomcat
#查看docker状态
docker stats
5.提交命令:
#提交镜像
docker commit
#可选项
-a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Commit message
-p, --pause Pause container during commit (default true)
#例:不加tag默认最新版本,使用镜像名的的时候也需要带版本号
docker commit -a "作者" -m "提交描述信息" 容器Id 目标镜像名:[TAG]
docker commit -a "wy" -m "commit test" 71b09a20d54f tomcat-test:1.0.0
6.数据卷命令:
#1.指定路径挂载 -v
docker run -it -v /主机目录:容器目录
#例:测试centos挂载
docker run -it -v /home/test:/home centos /bin/bash
#测试mysql挂载
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql-test mysql
#匿名挂载 -v 容器目录
docker run -d -P --name nginx-test -v /etc/nginx nginx
#具名挂载 -v 卷名:容器目录
docker run -d -P --name nginx-test -v nginx-conf:/etc/nginx nginx
#挂载权限:ro/rw,只读/可读可写,相对于容器内来说;ro:容器内只读,宿主机可读写;rw:默认即是rw
docker run -d -P --name nginx-test -v nginx-conf:/etc/nginx:ro nginx
#查看卷信息
docker volume COMMAND
#COMMAND
create Create a volume
inspect Display detailed information on one or more volumes
ls List volumes
prune Remove all unused local volumes
rm Remove one or more volumes
#查看卷列表
docker volume ls
#查看卷信息
docker volume inspect 卷名
#例:
docker volume inspect 8c383b3470efb708bdcafce9ab71003a97a832b7d60f638020f5c7380518d2c0
#通过dockerfile挂载
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----------end----------"
CMD /bin/bash
#构建镜像
docker build -f dockerfile -t centos-test:1.0.0 .
7.数据卷容器:
#启动容器1
docker run -it --name docker-01 centos-test:1.0.0
#启动容器2,且挂载容器1
docker run -it --name docker-02 --volumes-from docker-01 centos-test:1.0.0
#启动容器3,三个容器挂载卷数据彼此共享,且删除某一个容器,不影响其他容器数据
docker run -it --name docker-03 --volumes-from docker-01 centos-test:1.0.0