Docker 学习二(Docker使用)

  1. 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
  2. 运行一个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)]
  3. 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 指定。指定与某个容器实例共享网络
  4. 数据挂载
    docker run -itd -v /opt/data:/opt --name centos-test centos /bin/bash
    -v 参数,冒号前为宿主机目录,为绝对路径,冒号为镜像挂载路径。默认镜像挂载的路径权限为读写

storage driver docker的存储模式

  1. 镜像打包
    将镜像进行打包

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)]

  1. 创建数据库
    6.1 查询mysql镜像
    docker search mysql
  2. 注册表下载失败 docker_注册表下载失败 docker

  3. 6.2 拉取镜像到本地

docker pull centos/mysql-57-centos7

注册表下载失败 docker_运维_02


6.3 查询本地mysql镜像docker images|grep mysql

注册表下载失败 docker_容器_03


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/

错误命令

注册表下载失败 docker_注册表下载失败 docker_04


正确命令:

mysql -u root -p -h 127.0.0.1
导入sql脚本
use nacos-config

source /tmp/nacos-mysql.sql