老是忘记docker指令,网上看的一些有些找起来太麻烦,自己常用的一些挂这里,方便以后找
指令整理除官网外,借鉴了以下
https://blog.csdn.net/liujiahuan_/article/details/126222628
B站-编程不良人的教学视频(他的视频挺全的,但是文档收费,就几块钱,你们可以买,帮助学习,我是自学狗+白嫖党,我没买)
docker基础指令
// 启动docker
systemctl start docker
// 关闭docker
systemctl stop docker
// 重启docker
systemctl restart docker
// 设置docker开机自启动
systemctl enable docker
// 查看docker运行状态(显示绿色代表正常启动)
systemctl status docker
// 查看docker镜像列表
docker images
// 单独搜索镜像
docker images 镜像名
// 拉取镜像 不加tag(版本号) 即拉取docker仓库中
// 该镜像的最新版本latest 加:tag 则是拉取指定版本
// 不知道镜像名字和版本就去docker hub搜索(比较慢)
docker pull 镜像名
docker pull 镜像名:tag
删除镜像
// 删除一个
docker rmi -f 镜像名/镜像ID
// 删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
// 删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
// 强制删除,慎用
docker image rm 镜像名称/镜像ID
查看运行的docker容器指令
// 查看正在运行的容器
docker ps
// 查看所有容器包括正在运行和停掉的容器
docker ps -a
// 下面三个也能看,具体区别我忘了,懒得烦文档了
docker ps -q
docker ps -qa
docker ps -aq
docker删除容器指令
// 删除停止的容器
docker rm 容器名字|容器ID
// 删除正在运行的容器
docker rm -f 容器名字|容器ID
// 删除所有容器 这里$()符号代表先执行里面的指令
docker rm -f $(docker ps -aq)
运行容器
// 运行docker容器
docker run 镜像ID|镜像名字|repository:tag
// -it 表示 与容器进行交互式启动
// -d 表示可后台运行容器 (守护式运行)
// --name 给要运行的容器 起的名字
// /bin/bash 交互路径(可以不加)
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash
// 运行docker容器并且开启服务端口指向docker容器端口,加-p
docker run -p 外部端口号:容器端口号 repository:tag
例如:
docker run -p 8080:8080 tomcat:jre8
// 运行docker容器起个名字,加--name
docker run -p 外部端口号:容器端口号 --name 名字 repository:tag
例如:
docker run -p 8080:8080 --name tomcatJre8 tomcat:jre8
// 运行docker容器后台运行并起个个名字,加-d
docker run -d -p 外部端口号:容器端口号 --name 名字 repository:tag
例如:
docker run -d -p 8080:8080 --name tomcatJre8 tomcat:jre8
// -v 共享磁盘/数据卷
docker run -d -p 8080:8080 --name tomcatJre8 -v 宿主机目录(绝对路劲):容器内绝对路劲目录 tomcat:jre8
// 自动创建数据卷名字(docker会在不存在这个数据卷的同时自动创建,同时映射宿主机的目录,同时在启动容器时会将testMuLu对应容器目录中全部内容,复制到testMuLu中)
docker run -d -p 8080:8080 --name tomcatJre8 -v testMuLu:容器内绝对路劲目录 tomcat:jre8
docker数据卷相关操作
// -v 共享磁盘/数据卷
docker run -d -p 8080:8080 --name tomcatJre8 -v 宿主机目录(绝对路劲):容器内绝对路劲目录 tomcat:jre8
// ro(read-only) 容器内的数据卷为只读,不可以共享到宿主机路径
// 宿主机数据卷可以共享,不影响容器
docker run -d -p 8080:8080 --name tomcatJre8 -v 宿主机目录(绝对路劲):容器内绝对路劲目录:ro tomcat:jre8
// 自动创建数据卷名字(docker会在不存在这个数据卷的同时自动创建,同时映射宿主机的目录,同时在启动容器时会将testMuLu对应容器目录中全部内容,复制到testMuLu中)
docker run -d -p 8080:8080 --name tomcatJre8 -v testMuLu:容器内绝对路劲目录 tomcat:jre8
// 查看数据卷
docker volume ls
// 查看某个数据卷细节
docker volume inspect 数据卷名字
// 创建数据卷
docker volume create 数据卷名字
// 删除没有使用的数据卷
docker volume prune
// docker 删除指定数据卷
docker volume rm 卷名
docker访问容器内部
// /bin/bash 必须加,有的服务是/bin/sh,有的是 bash 不然会报错
// 一个容器是一个操作系统进程的隔离,相当于一个小的操作系统,写bash就是为了进入这个容器的终端,并与容器内的命令终端进行交互
docker exec -it 容器ID bash
docker exec -it 容器ID /bin/bash
docker exec -it 容器ID /bin/sh
// 查看容器内进程
docker top 容器ID|容器名字
// 查看容器内部细节信息
docker inspect 容器ID
docker退出容器
// 退出容器就是
exit 或者 ctrl+p+q
docker停止容器
// 停止容器,这里停了还能再起来,并不是永久消失了,除非你把容器删了
docker stop 容器名|容器ID
docker查看容器内服务运行日志
// 查看容器日志
docker logs 容器Id|容器名称
// -f 实时查看
docker logs -f 容器Id|容器名称
// -tf 实时展示日志的同时加时间戳
docker logs -tf 容器Id|容器名称
// --tail 查看容器文件尾部的多少日志
// 例如下面的指令就是只显示5行
docker logs --tail 5
docker文件传输,操作系统与容器传输文件 或者是部署java web项目,直接cp进去就行了
// docker cp 容器ID|容器名字:容器内的资源路劲|资源名字 操作系统路径
docker cp tomcat:/usr/local/tomcat/RUNNING.txt ./RUNNING.txt
// docker cp 文件|目录 容器Id|容器名字:/容器内部资源路劲
docker cp 你的文件 tomcat:/usr/local/tomcat
将容器打包成镜像
docker commit -m "描述语句" -a "作者是谁" 容器ID 新镜像名字:版本号
将镜像备份出来
docker save 镜像名称:TAG -o 文件名
加载外部导入的容器
docker load -i 容器名字
docker 查看/创建 网桥配置
// 查看网桥配置
docker network ls
// 创建自定义网桥
docker create -d bridge 网桥名字
例如:docker create -d bridge test
// 指向使用自定义网桥
// 跑起来的容器,会把容器名字跟容器的网段IP自动做映射,例如网点IP是172.170.0.2
// 那么日后在这个网桥关联的容器中,可以使用容器名字也能与其他容器通信,名字==IP地址
docker run -d -p 8081:8080 --network test --name testNetwork tomcat:jre8
// 删除新建的网桥
docker network rm 网桥名字
// 查看网桥信息
docker inspect 网桥名字
docker 安装mysql
// 拉取mysql镜像
docker pull mysql:版本号(可以不加,不加就是拉最新的)
// 指定变量运行mysql
docker run -e MYSQL_ROOT_PASSWORD=你自己设定一个root密码 mysql:(你上面拉取的版本号)
// docker启动mysql并且将数据持久化
// dockerhub中,mysql存储数文件目录放置在容器中的/var/lib/mysql
// 注意,改完配置得重启mysql
docker run -d -p 外部端口:3306 -e MYSQL_ROOT_PASSWORD=你自己设定一个root密码 --name testMysql -v mysqldata:/var/lib/mysql mysql:(你上面拉取的版本号)
// 启动mysql服务,后台运行,指定用户密码,指定荣启铭,使用数据卷进行数据持久化,已修改之后的配置文件启动
docker run -d -p 外部端口:3306 -e MYSQL_ROOT_PASSWORD=你自己设定一个root密码 --name testMysql -v mysqldata:/var/lib/mysql -v mysqlTestConfig:/etc/mysql mysql:(你上面拉取的版本号)