引擎和镜像相关命令
- 引擎相关命令
docker info 查看docker相关信息
docker version 查看docker版本信息
docker --help 或 docker 查看docker的帮助 该命令很有用 - 镜像相关操作
-
docker images 查看本地当前的镜像
-
下载镜像
- docker pull 镜像名:tag
在 https://hub.docker.com/ 先搜索要下载的镜像是否存在
docker pull mysql:8.0 - docker pull 镜像名:DIGEST:(摘要)
docker pull mysql:DIGEST:sha256:faa0f261263965c7e4e80dfd1ba5510d53d41d16d3cf944f75a9add47ddf9e00
- docker pull 镜像名:tag
-
使用命令搜索镜像
docker search mysql
docker search mysql:8.0 -
查看命令参数
docker image --help -
删除镜像
docker image rm 镜像:tag | 镜像ID
强删 docker image rm -f 镜像:tag | 镜像ID
强删 docker rmi -f 镜像:tag | 镜像ID -
查看某类镜像
docker images mysql -
显示所有镜像
docker images -a -
只显示所有的镜像ID
docker images -q -
删除所有镜像
docker rmi -f $(docker images -q)
容器相关命令
-
运行一个容器
docker run 镜像名:tag | 镜像ID -
导入tar格式镜像文件
docker load -i tar镜像文件名 -
查看当前正在运行的容器
docker ps
-
宿主机端口与容器端口映射
docker run -p 宿主机端口:容器端口 镜像名:tag | 镜像ID
docker run -p 8080:8080 tomcat:jdk8-corretto
-
以后台方式运行容器 加 -d 参数
docker run -d -p 8080:8080 tomcat:jdk8-corretto -
以后台运行的方式并添加端口映射,指定容器名称 运行一个容器
docker run -d -p 宿主机端口:容器端口(可以写多个-p 映射多个端口) --name 容器名称 镜像名:tag | 镜像ID
docker run -d -p 8081:8080 --name tomcat01 tomcat:jdk8-corretto
-
查看当前正在运行的容器
docker ps 查看当前正在运行的容器
docker ps -a 查看所有的容器 包括已经停止了的
docker ps -q 查看正在运行的容器的ID
docker ps -aq 查看所有的容器ID
可使用docker ps --help命名查看ps命令能携带的参数 -
停止 重启容器
docker start 容器ID | 容器名称 ----启动容器
docker restart 容器ID | 容器名称 ----重启容器
docker stop 容器ID | 容器名称 ----正常停止容器
docker kill 容器ID | 容器名称 ----立即停止容器 -
删除容器
docker rm 容器ID | 容器名称 ----删除停止的容器
docker rm -f 容器ID | 容器名称 ----强制删除一个容器 包括正在运行的
docker rm -f $(docker ps -aq) ----删除所有的容器 -
查看容器日志
docker logs 容器ID | 容器名称 ---- 显示一屏的日志
docker logs -f 容器ID | 容器名称 ----- 显示实时日志 容器必须启动
docker logs -tf 容器ID | 容器名称 ----- 显示实时日志 并添加时间戳
docker logs --tail 5 容器ID | 容器名称 ------显示日志最后N行 -
查看容器内的进程
docker top 容器ID | 容器名称 -
与容器内部进行交互
docker exec -it 容器ID | 容器名称 bash ----进入容器内部的命令行
exit ----从容器内部的命令行退出到宿主机系统 -
宿主机系统与容器的文件传输
docker cp (容器ID | 容器名称):容器内文件路径 宿主机系统中路径
docker cp c3358f23a2a1:/usr/local/tomcat/RUNNING.txt ./RUNNING.txt -----将文件从容器拷贝到宿主机
docker cp 宿主机系统中文件路径 (容器ID | 容器名称):容器内路径
docker cp test.html c3358f23a2a1:/usr/local/tomcat/webapps -----将宿主机文件拷贝到容器中 -
查看容器内部细节
docker inspect 容器ID | 容器名称 -
数据卷 volume
作用:实现宿主机系统与容器之间的文件共享
自定义数据卷目录
docker run -d -p 8080:8080 -name tomcat1 -v 宿主机绝对路径:容器目录 镜像名:tag | 镜像ID
docker run -d -p 8081:8080 --name tomcat2 -v /root/apps:/usr/local/tomcat/webapps tomcat:jdk8-corretto自动数据卷目录
docker run -d -p 8081:8080 --name tomcat2 -v aa:/usr/local/tomcat/webapps tomcat:jdk8-corretto
注意:
1.上面命令中的aa代表一个数据卷名字,可以随便写,当目录不存在时docker会自动创建这个目录
2.同时会将容器中对应的目录下的内容拷贝到aa目录中
3.aa目录默认会创建到 /var/lib/docker/volumes/ 路径下 -
将容器打包成一个新的镜像
docker commit -m “描述” -a “作者” 容器ID|容器名称 镜像名称:标签
docker commit -m “test container deploy” -a “z_s” 7a7edffb7c45 test_tomcat:01 -
将镜像备份出来
docker save 镜像名称:tag -o 文件名称
docker save test_tomcat:01 -o test_tomcat-01.tar使用命令导入镜像
docker load -i test_tomcat-01.tar
Docker中容器之间的网络配置
-
为什么提供网络功能
Docker 允许通过外部访问容器或容器互联的方式来提供网络服务。
当Docker引擎启动时,会在宿主机系统上创建一个名称为docker0的虚拟网卡,地址为 172.17.0.1
当启动一个容器时,会为容器生成一个ip地址 , 使用 docker inspect 容器ID|容器名称 查看容器信息
再启动一个容器,会分配另外一个ip地址
从上面两图可以看出,默认情况下,两个容器在同一个网段。 -
docker容器与宿主机通信机制
以上默认的网桥配置会存在一个问题,就是多个项目使用同一个网桥时,网络带宽会相互影响
一般的使用方式是,为每一个项目创建一个网桥。 -
创建一个网桥
docker network create tomcat-work
在使用 docker network ls 命令查看,多了一个网桥
此时查看宿主机的网卡信息 ip addr,会多出一个虚拟网卡
-
删除网桥
docker network rm 网桥名称 -
查看网桥详情
docker inspect 网桥名称 -
启动容器时,指定网桥
docker run -d -p 8080:8080 --name tomcat01 --network tomcat-network test_tomcat:01
此时查看容器信息 docker inspect tomcat01
再使用上面的网桥启动一个容器
docker run -d -p 8082:8080 --name tomcat02 --network tomcat-network test_tomcat:01
使用network 指定网桥时,网桥必须存在
数据卷
- 作用
用来实现容器与宿主机之间的数据共享 - 数据卷的特点
数据卷可以在容器之间共享和重用
对数据卷的修改会立即影响到容器
对数据卷的修改不会影响到镜像
数据卷默认会一直存在,即使容器被删除 - 创建只读数据卷 加 ro
docker run -d -p 8080:8080 --name tomcat01 -v /root/apps/:/usr/local/tomcat/webapps/:ro test_tomcat:01 - 查看数据卷
docker volume ls - 查看数据卷细节
docker volume inspace 卷名