Docker 学习二(Docker使用)
- Docker常用命令
docker help #检查docker可用命令
docker version #查看docker版本信息,-v也可以
docker exec #在正在运行中的容器中运行命令
docker info #显示系统范围信息
docker search tomcat #在docker hub中搜索tomcat镜像
docker pull tomcat #从注册表或者docker hub中搜索tomcat镜像
docker ps -a #查看所有的容器
docker start 容器 id #启动已停止的容器
docker stop 容器id #停止运行容器
docker restart 容器id #停止并启动容器
docker rm 容器id #删除容器,docker rm -f 强制删除
docker rmi 镜像名 #删除镜像
docker logs 容器id #查看容器日志
docker run #在隔离容器中运行命令
docker run -it 镜像名称 /bin/bash #-i 交互式操作 -t 终端 /bin/bash 交互式shell,退出容器直接输入exit
docker run -itd --name test 镜像名称 /bin/bash #-d 参数默认不会进入容器
docker exec #进入容器,退出容器不会导致容器停止
docker attach # 进入容器,退出容器会导致容器停止
docker system df #查看docker的磁盘使用情况
docker network ls
docker inspect container_name|grep Mounts -A 20 #查看容器映射路径,Container_name 是容器名称,也可以写容器的ID - 运行一个web应用
使用docker构建一个web应用程序,在docker容器中运行一个python flask来运行一个web应用
docker search webapp
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FSfmlcR3-1641782656499)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210722152613729.png)]
dcoker pull training/webapp
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7DwE2PMW-1641782656503)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210722152723924.png)]
docker run -itd -p training/webapp 5000:5000 python app.py
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4OhyTGtF-1641782656504)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210722163356854.png)]
将容器内部的5000端口映射到本地主机5000端口,通过页面可访问
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OF46wdTL-1641782656506)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210722171755414.png)] - Docker 网络模式
主机模式: 使用 –net=host 指定。与宿主机共享网络,此时容器没有使用网络的namespace,宿主机的所有设备,如Dbus会暴露到容器中,因此存在安全隐患
桥接模式:使用 –net=bridge 指定,默认设置。此时docker引擎会创建一个veth对,一端连接到容器实例并命名为eth0,另一端连接到指定的网桥中(比如docker0),因此同在一个主机 的容器实例由于连接在同一个网桥中,它们能够互相通信。容器创建时还会自动创建一条SNAT规 则,用于容器与外部通信时。如果用户使用了-p或者-Pe端口端口,还会创建对应的端口映射规
则。
自定义模式:使用自定义网络,可以使用docker network create创建,并且默认支持多种网络驱动,用户可以自由创建桥接网络或者overlay网络。
无网络模式:使用 –net=none 指定。不设置网络,相当于容器内没有配置网卡,用户可以手动配置
容器模式:使用 –net=container:NAME_or_ID 指定。指定与某个容器实例共享网络 - 数据挂载
docker run -itd -v /opt/data:/opt --name centos-test centos /bin/bash
-v 参数,冒号前为宿主机目录,为绝对路径,冒号为镜像挂载路径。默认镜像挂载的路径权限为读写
storage driver docker的存储模式
- 镜像打包
将镜像进行打包
docker save -o hello-2021.tar hello-word
也可以容器进行打包
docker export 容器id >webapp-test.tar
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vyYvGnIE-1641782656508)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210722185920335.png)]
镜像通过load还原至images
docker load < hell-2021.tar
导入镜像
docker import webapp-test.tar 容器名称:版本
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jBH559OX-1641782656510)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210722190036953.png)]
- 创建数据库
6.1 查询mysql镜像
docker search mysql - 6.2 拉取镜像到本地
docker pull centos/mysql-57-centos7
6.3 查询本地mysql镜像docker images|grep mysql
6.4 启动mysql镜像
docker run -d --name mysql57 -p 12100:3306 -e MYSQL_ROOT_PASSWORD=admin@123 --restart=always --privileged=true centos/mysql-57-centos7
其中:–name 容器名称(自定义即可)
-p : 宿主机端口:docker虚拟机的端口 #绑定虚拟机端口
-e : 环境变量
--restart :docker启动时是否同步启动应用
--privileged: 授权进入容器时是否使用root权限
netstat -lnop|grep 12100
查询虚拟机上12100端口是否启动成功
6.5 连接数据库
使用navicat preminum连接 ip:12100 ,输入root用户名和admin@123密码登录数据库,连接成功即可
6.6 登录mysql容器
复制sql文件到dockerm_mysql里面的tmp文件夹
docker cp nacos-mysql.sql 94df84cbaaaa:/tmp/
错误命令
正确命令:
mysql -u root -p -h 127.0.0.1
导入sql脚本
use nacos-config
source /tmp/nacos-mysql.sql