docker

一. 容器化技术介绍

1. 虚拟机

  • 创建新的虚拟机,关联镜像(4.xG)使用,创建Linux操作系统...
    • 镜像占用的空间非常大
  • 给当前虚拟机分配计算机配置
    • 磁盘空间
    • 内存空间
    • 网卡
    • ...
  • 在当前的虚拟机中,创建环境进行使用
    • 安装Tomcat
      • 依赖JDK环境
    • 安装JDK
      • 配置环境变量
    • 安装Mysql
      • 安装配置过于复杂
      • 而且有的时候,不一定能够安装成功
      • 而且卸载起来也比较麻烦
    • 安装Redis
      • 解压缩/编译/编译并安装...

2. Docker

  • 容器化技术,通过镜像(只读文件组成),很多的镜像
    • Mysql镜像
    • Redis镜像
    • Tomcat镜像
    • 只需要根据镜像去创建容器,我们不需要关注安装过程,即可使用
    • 占用的是最少的内存和磁盘空间
    • 每个容器的环境是相互隔离的,安全

二、Docker官网

三、Docker仓库

四、Docker 安装&测试

1、如果有安装,请卸载旧版本 [如果没有安装,请跳过此步骤]

yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-engine

2、安装软件所需要的环境(软件包)

yum install -y yum-utils \
               device-mapper-persistent-data \
               lvm2

3、设置镜像源地址

使用以下命令来设置稳定的仓库

使用官方源地址(比较慢)
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

可以选择国内的一些源地址:[阿里云或清华大学二选一即可]

阿里云
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

清华大学源
yum-config-manager \
    --add-repo \
    https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

异常案例: 

4、安装Docker引擎

推荐使用方式一!!! 

方式一:默认安装最新版

yum install docker-ce docker-ce-cli containerd.io

方式二:指定版本

①列出并排序您存储库中可用的版本

yum list docker-ce --showduplicates | sort -r

②通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-20.10.9

yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

5、启动 Docker

systemctl start docker

6、测试docker,通过运行 hello-world 镜像来验证是否正确安装了 Docker Engine-Community 。

docker run hello-world

其它:查看docker版本号:

docker version

五、卸载 docker,只做了解

删除安装包:

yum remove docker-ce

删除镜像、容器、配置文件等内容:

rm -rf /var/lib/docker

六、Docker命令

1. 镜像命令

1.1 查看所有本地镜像

docker images

1.2 搜索镜像

  • 根据命令,搜索docker仓库中的镜像
docker search 关键字

1.3 下载镜像

# 默认下载的是最新版本的镜像
docker pull 镜像名称
# 指定下载的版本的镜像
docker pull 镜像名称:版本号

注:版本号通过docker仓库搜索

下载对应版本的hello-world,这里下载的是Linux版,命令:docker pull hello-world:linux

再次查看本地镜像,docker images

1.4 删除镜像

# 删除最新版本的本地镜像
docker rmi 镜像名称
# 删除指定镜像的版本
docker rmi 镜像名称:版本号
  • 注意:删除镜像时,需要将其运行的容器,也一并删除掉,才可以删除镜像

2. 容器命令

2.1 查看正在运行的容器

docker ps

2.2 查看所有容器 [运行或停止]

docker ps -a

2.3 创建并运行容器 

① 交互式运行容器:进入黑窗口

# 交互式运行容器,会进入容器内部,终端
# 进入容器内部,容器是指Linux操作系统
# 当退出容器时,执行exit,也会停止容器运行
# 语法 : docker run -it --name 容器名称 镜像名称:镜像版本
docker run -it --name myCentOS centos:centos7

② 守护式运行容器

# 守护式运行容器,不会进入容器内部,会停留在宿主机上(Linux虚拟机/Windows/MacOS)
# 不会进入容器内部,容器是指Linux操作系统
# 语法 : docker run -id --name 容器名称 镜像名称:镜像版本
docker run -id --name myCentOS7 centos:centos7

  • 参数介绍
    • docker run 创建并运行容器
    • -i : 交互式操作
    • -t : 终端操作
    • -d : 守护式操作
    • -it : 相当于 -i -t
      • 创建容器并进入容器内部,使用它的终端操作(命令行)
    • -id : 相当于 -i -d
      • 创建容器并运行容器,停留在宿主机上,不进入容器内部
    • --name : 容器名称
    • -p : 指定宿主机和容器的端口映射
      • 具体参考tomcat案例
    • -P : 宿主机随机端口映射容器端口
      • 具体参考tomcat案例
    • -v : 宿主机和容器的目录映射关系建立
      • 具体参考mysql案例

2.4 启动容器

  • 启动已经创建完成的容器
docker start 容器ID或者容器名称

2.5 停止容器

docker stop 容器ID或者容器名称

停止多个容器:
docker stop 容器ID或者容器名称 容器ID或者容器名称

2.6 重新启动容器(无论容器是否正在运行或已经停止了,都可以)

docker restart 容器ID或者容器名称

2.7 删除容器

  • 删除容器之前,需要先停止容器运行
docker rm 容器ID或者容器名称

2.8 进入容器内部

  • 当前停留在宿主机,想要进入容器的内部执行操作
  • 进入的容器必须是运行的状态
# 语法 : docker exec -i -t 容器ID或容器名称 /bin/bash
# 语法 : docker exec -it 容器ID或容器名称 /bin/bash
# /bin/bash 代表进入容器内部执行终端操作
docker exec -i -t 容器ID或容器名称 /bin/bash

2.9 从容器中退出到宿主机

# 如果是交互式运行(进入容器),退出时,会自动关闭容器
# 如果是守护式运行(停留宿主机),退出时,不会关闭容器
exit

2.10 容器复制文件

  • 将容器和宿主机之间进行文件传输和通信

  • 将文件从宿主机复制到容器中

docker cp 文件路径或文件名称 容器ID:容器的路径
  • 将文件从容器中复制到宿主机中
docker cp 容器ID:容器的路径 文件路径或文件名称
  • 以 tomcat中的 tom猫的资源为例,进行操作
    • 将tom猫的资源(事先准备的)从宿主机上复制到容器中

2.11 查看容器日志信息

docker logs 容器ID

2.12 查看容器配置信息

# 通过这个命令, 可以查看容器里面的详细的配置信息,IP地址,映射的目录等内容
docker inspect 容器ID

七. Docker的使用组件

1. Tomcat

  • 拉取镜像
# 查找镜像
docker search tomcat
# 拉取镜像到本地,默认拉取最新的版本
# 拉取官方的tomcat,是没有tom猫的环境资源的
# 拉取的tomcat默认是自带jdk环境的(不需像直接装在虚拟机一样先安装配置jdk环境)
docker pull tomcat:8.5.82

先在docker-hub仓库找到想下载的版本

  • 创建tomcat容器(注意:小写p和大写P有区别)
# 将宿主机的端口号和容器的端口号进行映射的关联
# 连接宿主机的指定的端口号就相当于连接tomcat服务器
# docker run -id -p 宿主机端口号:容器端口号 --name 容器名称 镜像名称:版本号
docker run -id -p 8888:8080 --name myTomcat tomcat:8.5.75
# 随机指定宿主机的端口映射到虚拟机的8080端口,随机映射了宿主机某个端口
docker run -id -P --name myTomcat1 tomcat:8.5.75

  • 将ROOT目录复制到容器中目录中/usr/local/tomcat/webapps
docker cp ROOT 容器ID:/usr/local/tomcat/webapps/

由于关联了宿主机和容器的端口映射,就可以在宿主机的浏览器中进行访问,查看tomcat猫的资源信息

删除tomcat容器后,重新修改了端口号,终于能够访问了

2. Redis

  • 拉取镜像
# 搜索redis相关镜像
docker search redis

# 拉取最新的版本的redis镜像,默认latest
docker pull redis

  • 创建并运行容器
# 关联宿主机和容器的端口号(6379)
docker run -id -p 6666:6379 --name dockerRedis redis:latest

# 二选一操作即可

# 宿主机随机端口关联容器默认端口
docker run -id -P --name dockerRedis redis:latest

注意:上面演示的是交互式运行容器

交互式运行容器(前台启动)
docker run -it -p 6366:6379 --name dockerRedis redis:latest

交互式运行容器(后台启动)
docker run -it -p 6366:6379 --name dockerRedis redis:latest &

守护式运行容器(不进入容器终端)
docker run -id -p 6366:6379 --name dockerRedis redis:latest
  • 通过redis的客户端远程连接Redis容器

3. Mysql

  • 拉取镜像
docker pull mysql:5.7.39

  • 创建容器
# 创建并运行docker容器
# 按照之前的命令创建,会创建失败
# docker -id --name dockerMysql -p 3333:3306 mysql:5.7.39
# 通过查看日志信息,看到需要指定一个参数MYSQL_ROOT_PASSWORD,指定root用户的密码
docker -id --name dockerMysql -p 3333:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7.39
# 如果容器一旦创建,比如有端口没有关联或关联错误,那么就需要删掉这个容器重新创建

  • mysql容器中的数据库存储路径位置
    • 容器中 : /var/lib/mysql

数据库存储路径探索过程:

①进入容器内部

②搜索默认库,找到数据库存放位置

 

  • 创建容器,并关联数据库的目录映射,进行数据库的数据备份
    • 以后再也不担心数据库异常导致数据可能丢失,或者数据只能存在docker容器中没有安全感
docker run -id --name dockerMysql -p 3333:3306 -e MYSQL_ROOT_PASSWORD=root -v 宿主机目录:/var/lib/mysql mysql:5.7.39

  • 创建并关联了宿主机的数据目录,即使docker容器出现问题或异常,直接删掉容器,重新创建一个,指定到相同的宿主机目录,即可加载到之前的mysql的数据

退出容器,把容器删了,模仿出现故障 

这时,我们保存在宿主机中的数据依然存在

我们只需重新创建一个mysql容器,关联到宿主机存放数据的路径即可

4. Nginx

  • 拉取Nginx镜像

docker pull nginx
  • 创建Nginx容器

docker run -id --name dockerNginx -p 8888:80 nginx:latest
  • /usr/sbin/nginx nginx的启动命令,启动脚本

  • /etc/nginx/nginx.conf 启动时加载的配置文件

    • 在该配置文件的虚拟主机位置,引入了另一个配置文件的目录

    • /etc/nginx/conf.d/default.conf

      • 主要的配置信息都在此处进行配置的

upstream tomcats {
    server 172.17.0.3:8080;
    server 172.17.0.4:8080;
}
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        proxy_pass http://tomcats;
    }
}
  • /usr/share/nginx/html 加载静态资源的目录

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值