1、准备工具


2、简介

===>>>首先需要介绍的是dockerHub,可以粗略的理解为镜像仓库,可以通过搜索,查询相关镜像信息。
Dockers是一个开源的应用容器引擎,基于go语言开发。Dockers可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app),更重要的是容器的性能开销极低。

  • web应用的自动化打包和发布
  • 自动化测试和持续集成、发布
  • 在服务型环境中部署和调整数据库或其他后台应用

Docker 20.10.5 安装(Centos7) - 图1

名称 说明
Docker镜像(images) Docker镜像用于创建Docker容器的模板。镜像是基于关联文件系统的一种层式结构,由一系列指令一步一步构建出来
Docker容器(Container) 容器是独立运行的一个或一组应用,镜像相当于类,容器相当于实例
Docker客户端(Client) Docker客户端通过命令行或者其他工具使用Docker API与Docker的守护进程通信
Docker主机(Host) 一个物理或者虚拟的机器用于执行Docker守护进程和容器
Docker守护进程 是Docker服务器端进程,负责支撑Docker容器的运行及镜像的管理
Docker仓库DockerHub(Registry) Docker仓库用来保护镜像,可以理解为代码控制中的代码仓库。Docker Hub提供了庞大的镜像集合供使用。用户也可以将自己本地的镜像推送到Docker仓库供其他人下载

3、Docker安装

Docker可以运行在Mac、Windows、Centos、DEBIAN、UBUNTU等操作系统,提供社区和企业版。centos6支持不算太好,本次使用centos7

3.1 yum更新

  1. 【更新】yum包更新到最新(相对来说速度比较慢)

    1. yum update
  2. 作用:安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖

    1. yum install -y yum-utils device-mapper-persistent-data lvm2

3.2 设置yum源

  1. 选择方案 ```shell

    方案一:使用ustc的(推荐)

    yum-config-manager —add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

方案二:使用阿里云(可能失败)

yum-config-manager —add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12883990/1632034673591-f6f2408b-0875-43a1-8050-3b7422fe68b0.png#clientId=uff4f553a-4b1d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=70&id=ub5b0ef20&margin=%5Bobject%20Object%5D&name=image.png&originHeight=140&originWidth=1746&originalType=binary&ratio=1&rotation=0&showTitle=false&size=37253&status=done&style=none&taskId=u318b6d3a-dad2-4530-988d-eaacfb76a40&title=&width=873)
  2. > **【注意】:使用yum源出现错误的时候:**
  3. > ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12883990/1617547424047-07908609-ac5c-4326-bc36-4ae5efce6d5c.png#crop=0&crop=0&crop=1&crop=1&height=419&id=QGjR1&margin=%5Bobject%20Object%5D&name=image.png&originHeight=837&originWidth=1703&originalType=binary&ratio=1&rotation=0&showTitle=false&size=141591&status=done&style=none&title=&width=851.5)
  4. > **删除docker相关的repo**
  5. > ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12883990/1617547495601-028bc5c5-0e29-447d-b8f1-e59ae762510b.png#crop=0&crop=0&crop=1&crop=1&height=216&id=ZKu2k&margin=%5Bobject%20Object%5D&name=image.png&originHeight=431&originWidth=1481&originalType=binary&ratio=1&rotation=0&showTitle=false&size=83983&status=done&style=none&title=&width=740.5)
  6. ```shell
  7. cd /etc/yum.repos.d
  8. rm -rf docker-ce.repo
  9. rm -rf mirrors.ustc.edu.cn_docker-ce_linux_centos_docker-ce_repo.repo
  1. 【安装】docker,出现输入的界面都按 y
    1. yum install -y docker-ce
    image.png

3.3 docker版本查看

  1. docker -v

3.4 设置ustc镜像

  1. 【编辑】/etc/docker/daemon.json

    1. mkdir /etc/docker
    2. vi /etc/docker/daemon.json
  2. 在daemon.json添加内容

    1. {
    2. "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
    3. }

3.5 docker启动与停止

  1. # 启动docker服务
  2. systemctl start docker
  3. # 停止docker服务
  4. systemctl stop docker
  5. # 重启docker服务
  6. systemctl restart docker
  7. # 查看docker服务状态
  8. systemctl status docker
  9. # 设置开机启动docker服务
  10. systemctl enable docker

4、docker常用命令

4.1 docker镜像查看

  1. docker images

image.png

4.2 docker搜索镜像

  1. docker search centos7

image.png

4.3 docker拉去镜像

  1. docker pull centos:7

4.4 docker删除命令

  1. docker rmi 8652b9f0cb4c
  2. # 批量删除(慎用)
  3. docker rmi `docker images -q`

4.5 服务运行占用

  1. netstat -tulpn

5、交互式容器

5.1 查看容器运行的镜像

  1. docker ps

image.png
查看容器运行和非运行的镜像

  1. docker ps -a

image.png

5.2 创建交互式容器

可以基于已有的镜像来创建和启动容器,创建与启动容器使用命令

  1. docker run
  • 参数说明
    • -i:表示运行容器
    • -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去,即分配一个伪终端
    • —name:为创建的容器命名
    • -v:表示目录映射关系(前者是宿主主机目录,后者是映射到宿主主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做好修改,然后共享到容器上。
    • -d:创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t这两个参数,创建后就会自动进入容器)
    • -p:表示端口映射,前者是宿主主机端口号,后者是容器内的映射端口。可以使用多个-p做多个端口映射

5.3 启动交互是容器

  1. 【pull】先拉取一个镜像

    1. docker pull centos:7

    image.png

  2. 【run】使用-it,容器运行镜像

    1. docker run -it --name=mycentos7 centos:7 /bin/bash

    image.png


6、创建守护式容器

  1. 【run】使用-di,不需要加/bin/bash(不需要进入伪终端,后台启动)运行容器

    1. docker run -di --name=mycentos2 centos:7
  2. 守护式容器启动后,再次进入伪终端

    1. docker exec -it mycentos2 /bin/bash

7、操作容器

7.1 停止服务

  1. stop后面可以式容器名称,也可以式容器ID

    1. docker stop mycentos2

    image.png

  2. 【启动】停止服务后再次启动服务

    1. docker start mycentos2

    image.png

7.2 拷贝容器

  1. 宿主机文件拷贝到容器 ```shell cd / touch aaa.txt

将根目录下的文件复制到docker容器中

docker cp aaa.txt mycentos2:/

  1. 再次重新进入容器查看文件是否拷贝成功
  2. ```shell
  3. docker exec -it mycentos2 /bin/bash
  4. ll

image.png

  1. 容器文件拷贝到宿主机

    保证当前处在centos2容器伪终端的状态下(如果不在输入命令:docker exec -it mycentos2 /bin/bash) ```shell

    容器终端创建文件

    touch bbb.txt

退出容器(容器中并没有安装docker)回到宿主机终端

exit

宿主机执行复制命令

docker cp mycentos2:/bbb.txt /

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12883990/1617601551472-3efdfb69-2192-4188-b050-3e0b6bbcc62b.png#crop=0&crop=0&crop=1&crop=1&height=134&id=HM3qA&margin=%5Bobject%20Object%5D&name=image.png&originHeight=267&originWidth=1918&originalType=binary&ratio=1&rotation=0&showTitle=false&size=57655&status=done&style=none&title=&width=959)
  2. <a name="JBNWW"></a>
  3. ### 7.3 挂载
  4. 1. 目录挂载
  5. ```shell
  6. # 创建Linux宿主机器要挂载的目录
  7. mkdir /usr/local/test
  8. # 创建并启动容器mycentos3,并挂载Linux中的/usr/local/test目录到容器的/usr/local/test;也就是在Linux中的/usr/local/test中操作相当于对容器响应目录操作
  9. docker run -di -v /usr/local/test:/usr/local/test --name=mycentos3 centos:7
  10. # 在Linux下创建文件
  11. touch /usr/local/test/def.txt
  12. # 进入容器
  13. docker exec -it mycentos3 /bin/bash

【注意】:如果共享的是多级的目录,可能会出现权限不足的提示,这是因为centos7中的安全模块selinux把权限禁掉了,需要添加参数—privileged=true来解决挂载的目录没有权限的问题

7.4 查看IP

  1. docker inspect mycentos3

image.png

7.5 删除容器

  1. 删除mycentos7容器
    1. docker rm mycentos7

    【注意】:容器处于运行状态是无法删除的,需要先关闭容器 image.png 其实是可以删除的 但需要慎用 docker rm docker ps -a -q 删除所有容器

8、开机自启

8.1 可启动化

  1. 开启可启动设置

    1. systemctl enable docker

    image.png

  2. 出现如上的显示需要将文件存储到指定目录下

    1. cp /usr/lib/systemd/system/docker.service /etc/systemd/system/

8.2 修改重启服务

  1. 运行如下两句命令

    1. systemctl daemon-reload
    2. systemctl restart docker
  2. 查看配置情况

    1. ll /etc/systemd/system/multi-user.target.wants/docker.service

    image.png

    9、Docker-compose模板

    9.1 安装/卸载使用说明

    【安装使用说明】:请进入这个的文档中查看 点击进入Docker-compose 安装

10 容器之间link

单向link

不同docker服务都会有各自ip,容器更换导致关联容器需要重新配置连接信息

  1. docker 服务之间link

    1. docker inspect mysql8.0.21

    image.png

  2. 关联mysql服务 通过link命令

    1. docker run -d -p 8000:8080 --name mytomcat --link mysql8.0.21 tomcat:8.5.73-jdk8-corretto

    双向link

    网桥列表

    1. docker network ls

    image.png
    自己构建桥接

    1. docker network create -d bridge my_bridge

    image.png
    两个服务连接到创建的网桥上—-实现服务之间的互通

    1. docker network connect my_bridge mytomcat
    2. docker network connect my_bridge mysql8.0.21

文件挂载

文件挂载配置提前准备—-生成对应的容器

  1. docker create -v /usr/local/lixin/webapps/:/usr/local/tomcat/webapps --name webconfig tomcat:8.5.73-jdk8-corretto /bin/true

生成的配置容器 —volumes-from 配置即可

  1. docker run -d -p 80:8080 --volumes-from webconfig --name tomcat1 tomcat:8.5.73-jdk8-corretto