首页 > 其他分享 >Docker

Docker

时间:2023-05-14 16:33:37浏览次数:50  
标签:容器 systemctl mysql 镜像 Docker docker

Docker应用场景

Web应用的自动化打包和发布
自动化测试和持续集成,发布
在服务器环境中部署和调整数据库或其他的后台应用
使用Docker可以实现开发人员的开发环境,测试环境运维人员的生成环境保持一致性

仓库(Repository)
仓库用户保持镜像,可以理解为代码控制中的代码仓库
** 镜像**
Dokcer镜像(Image)可以理解为创建Docker容器的模版(静态只读),相当于root文件系统
镜像产生容器
容器(container)
容器是一个运行时环境,是镜像的一个运行状态,他是镜像执行的动态表现

Docker常用指令

docker search tomcat #在docker Hub(https:hub.docker.com/)中搜索tomcat镜像

课程内容

  1. Docker各个应用场景
  2. Python+Paramiko实现远程操作
  3. Jenkins的FreeStyle,Pipline

Docker的特性与虚拟机的异同:

  1. 安装虚拟机软件如:VMware,在此虚拟机软件上安装操作系统(下载),把操作系统的虚拟机文件备份,随时复制并启动该操作系统。
  2. 在Linux上安装Docker软件,从镜像仓库拉取(Pull)操作系统或应用环境,基于该镜像文件创建一个容器(运行环境),备份容器以供下次使用(直接export容器,将容器提交(Commit)为本地镜像)。
  3. 虚拟机环境直接完全模拟一套全新的硬件环境,Docker环境不虚拟硬件,直接使用宿主机资源(Docker默认下不限制CPU,内存资源),也可以直接指定分配某个容器的CPU或内存资源。
  4. 虚拟机可以直接与宿主机或局域网连接,分配IP地址(Brige,NAT),Docker容器无法获取IP地址(跟随于宿主机的IP地址)。
  5. 镜像相当于是容器的模板,通过镜像创建容器,容器修改后也可提交为镜像,删除容器并不会删除镜像,删除镜像则无法创建容器。

容器使用注意事项:

  1. 尽量让一个容器做一件事情,或启动一个服务。
  2. 尽量使用挂载的方式将数据文件挂载到容器中,容器里面尽量不要保存数据。
  3. 尽量让容器按照Docker化的要求来使用容器,而不是安装一个虚拟机。
  4. 尽量不使用交互模式来直接操作容器,而是在宿主机上执行命令,或者使用Docker File。
  5. 只要能解决问题,高效地解决问题,无论怎么用,都行。

安装Docker:

  1. 安装网络相关命令:yum install net-tools
  2. 安装实用工具:yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 添加yum镜像:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. 更新yum缓存:yum makecache fast
  5. 安装docker-ce:yum -y install docker-ce
  6. 启动docker服务:systemctl start docker, 对应的还有stop, restart等
  7. 查看docker信息:docker info
  8. 查找centos可用镜像:docker search centos
  9. 镜像仓库地址:https://hub.docker.com https://hub.daocloud.io
  10. 注意事项:建议在CentOS 7版本上安装Docker,确保有足够的硬盘空间,确保内存和CPU资源足够。
  11. 查看Docker服务,systemctl list-unit-files | grep docker, 如果显示disabled, 说明Docker服务不会随操作系统的启动而自动启动。systemctl enable docker

快速验证安装是否成功:

  1. 搜索镜像:docker search hello-world
  2. 拉取镜像:docker pull hello-world,默认情况下,会拉取最新版本镜像,如果需要拉取指定版本,则必须指定TAG标签。
  3. 运行镜像:docker run hello-world
  4. 查看镜像:docker images
  5. 查看容器:docker ps, docker container ls -a
  6. 启停容器:docker start/stop/restart hello-world(容器名)
  7. 删除容器:docker rm 容器名 (可通过container ls -a查看)
  8. 删除镜像:docker rmi hello-world

安装MySQL 5.6:

  1. 从docker hub上拉取镜像:docker pull mysql:5.6.46
  2. 从daocloud上拉取镜像:docker pull daocloud.io/library/mysql:5.6.22
  3. 创建一个容器,并指定容器名称和主机名:docker create --name mysql-5.6 -h mysql56 daocloud.io/library/mysql:5.6.22 (可以理解为复制了一台虚拟机过来)
  4. 列出所有容器:docker container ls -a
  5. 查看目前正在运行的容器:docker ps
  6. 启动容器:docker start mysql-5.6 (可以理解为启动了一个虚拟机的概念),此时可通过docker ps查看容器启动状态
  7. 重新创建并启动:docker run --name mysql-5.6 -e MYSQL_ROOT_PASSWORD=123456 -d daocloud.io/library/mysql:5.6.22
  8. 删除一个容器:docker rm mysql-5.6
  9. 添加端口映射:
    /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json 修改为:"PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"8080"}]}
    并确认:ExposedPorts":{"3306/tcp":{}} 在config.v2.json 文件中。
  10. 停止容器:docker stop mysql-5.6,重启docker服务:systemctl restart docker,重启容器。

安装Tomcat8.0:

  1. 拉取镜像:docker pull daocloud.io/library/tomcat:8.0.23-jre8
  2. 解压War包到/mnt/tomcat/woniusales目录用于挂载到tomcat容器中:unzip -oq woniusales.war -d ./woniusales
  3. 创建并启动:docker run --name tomcat-8.0 -h tomcat80 -p 8081:8080 -d -v /mnt/tomcat/woniusales:/usr/local/tomcat/webapps/woniusales daocloud.io/library/tomcat:8.0.23-jre8
  4. 修改db.properties文件,确保连接到正确的MySQL数据库上。(可以docker exec -it tomcat-8.0 bash进入交互模式,也可以直接在宿主机上修改)
  5. 重启容器: docker restart tomcat-8.0

直接安装裸CentOS并自已配置环境:

  1. 拉取CentOS7.6镜像:docker pull daocloud.io/library/centos:7.6.1810
  2. 创建并启动镜像,考虑到需要启动MySQL,所以需要使用特权模式:--privileged=true centos:7.6.1810 /sbin/init

特殊场景:

  1. 特权模式:docker run -tid --name centos-all -p 8081:8080 -p 23:22 -p 3307:3306 --privileged=true centos:7.6.1810 /sbin/init,(如果不使用特权模式,则MySQL将无法作为后台服务来启动 systemctl start serviceName).
  2. 限制CPU和内存:https://www.cnblogs.com/zhuochong/p/9728383.html
  3. 环境变量 -e JAVA_HOME=/opt/jdk
  4. 自动启动 /etc/rc.d/rc.local 开机自动运行脚本:chmod +x /etc/rc.d/rc.local
  5. 配置基于Ubuntu的vnc server,可通过VNC Viewer或Web页面直接操作Ubuntu的界面,适用于构建一些临时的实验环境:
    docker run --name ubuntu-vnc -d -p 6080:80 -p 5900:5900 -e VNC_PASSWORD=123456 -e RESOLUTION=1440x900 -v /dev/shm:/dev/shm dorowu/ubuntu-desktop-lxde-vnc
  6. 如何将宿主机目录与容器内目录进行交换?可视化你的容器内容!
    这样的场景是比较多的:
    比如为了统一管理安装包,不让所有安装包散乱在各个容器的各个目录;
    比如为了让容器的数据存储使用一块新买的磁盘;
    比如我想复制同一份代码到新容器使用,从而方便后续独立修改;
    比如你无法进入你的容器,却想拿到其中的数据等等;
    所以,我们需要使用到目录映射功能,这是 docker 自带的功能,方便实用: -v 参数设置即可.
  7. 查看容器的资源使用率:docker stats --no-stream
  8. 查看容器IP地址:docker inspect mysql-5.6 | grep IPAddress
  9. 复制文件到容器中:docker cp /host/file container:/docker/file
  10. 容器或镜像的导出,导入:docker export, import, save, load.
  11. 将容器提交为镜像:docker commit 容器名称 镜像名称:TAG

独立安装MySQL:

  1. 查询已安装的mysql:rpm –qa | grep mysql
  2. 安装种子文件:rpm -ivh mysql-community-release-el7-5.noarch.rpm
  3. 查看或编辑源,确认安装了正确的版本:/etc/yum.repos.d/mysql-community.repo
  4. 安装MySQL:yum install -y mysql-server
  5. 检查是否安装成功:chkconfig –list | grep mysqld (CentOS 6)或 systemctl list-unit-files | grep mysql (CentOS 7)
  6. 启动MySQL:service mysqld status 或 systemctl start mysqld
  7. 关闭防火墙:service iptables stop 或 systemctl stop firewalld
  8. 设置开机启动MySQL(默认为自启动):systemctl enable mysqld
  9. 修改Root用户密码:mysqladmin -u root password '123456'
  10. 登录MySQL交互式命令行:mysql –u root –p
  11. 出于安全考虑,默认root用户不能远程访问mysql,为方便学习,解决办法:
    GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
    flush privileges;
  12. 使用远程连接工具如navicat等连接到MySQL,成功则表达过程没有问题。
  13. 如果是在Docker中安装MySQL,则需要注意以下几点:
    必须将3306的端口映射到宿主机上
    必须将Docker容器设置为特权模式,才能启动MySQL服务

独立安装Tomcat:

  1. 操作方式与安装MySQL类似,需要注意的几个关键步骤:
    必须将8080端口映射到宿主机上
    建议webapps目录挂载到宿主机上
    建议配置/etc/rc.d/rc.local文件,设置环境变量并授予可执行权限,这样可以让tomcat随容器自启动
    需要安装JDK并配置JAVA_HOME和CATALINA_HOME
  2. 建议不要把Docker当成虚拟机来运行,保持Docker化,但是特殊情况下也无所谓。

CentOS 6与7版本关于服务处理的命令:

任务 旧指令 新指令
使某服务自动启动 chkconfig --level 3 httpd on systemctl enable httpd.service
使某服务不自动启动 chkconfig --level 3 httpd off systemctl disable httpd.service
检查服务状态 service httpd status systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active)
显示所有已启动服务 chkconfig --list systemctl list-units --type=service
启动某服务 service httpd start systemctl start httpd.service
停止某服务 service httpd stop systemctl stop httpd.service
重启某服务 service httpd restart systemctl restart httpd.service

基于Docker的持续集成过程:

  1. 利用Python的paramiko库通过命令直接操作
  2. 利用Jenkins的SSH插件直接通过命令操作
  3. 建议观看直播回放视频:http://www.woniuxy.com/live/20 ,则可以与本次直播课程有更好的结合。
  4. Docker命令及参数使用大全:https://www.w3cschool.cn/docker/docker-command-manual.html
  5. Docker File用于构建镜像,通过一系列指令,基于某一个原始镜像来创建一个新的镜像,基于文本文件,维护比较方便,构建比较灵活。[root@mycentos tool]# vi Dockerfile
    FROM daocloud.io/library/centos:7.6.1810
    RUN yum install -y net-tools
    && yum install -y unzip

标签:容器,systemctl,mysql,镜像,Docker,docker
From: https://www.cnblogs.com/jiangxuling/p/17399527.html

相关文章

  • Docker 部署 zookeeper
    1.单节点安装官方镜像:https://registry.hub.docker.com/_/zookeeper/tagsdockerpullzookeeper:3.6.4#创建卷dockervolumecreatezookeeper;dockervolumelsdockerrun-d\-eTZ="Asia/Shanghai"\-p2181:2181\-vzookeeper:/data\--namezookeeper\......
  • 【大数据】通过 docker-compose 快速部署 Presto(Trino)保姆级教程
    目录一、概述二、前期准备1)部署docker2)部署docker-compose三、创建网络四、Trino编排部署1)下载trino2)配置1、coordinator配置2、worker配置3)启动脚本bootstrap.sh4)构建镜像Dockerfile5)编排docker-compose.yaml6)开始部署五、简单测试验证1)mysql数据源2)hive数据源一、......
  • windows 10安装docker
    win10安装docker,软件下载地址是:https://www.docker.com/products/docker-desktop/安装后报错了这个错误:DockerDesktoprequiresanewerWSLkernelversion.需要更新wsl更新包,下载地址是:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi打开Doc......
  • 解决docker search influxdb 报错Error response from daemon: Get "https://index.do
    解决dockersearchinfluxdb报错Errorresponsefromdaemon:Get"https://index.docker.io/v1/search?q=influxdb&n=25":dialtcp:lookupindex.docker.ioon192.168.12.2:53:readudp192.168.12.128:39189->192.168.12.2:53:i/otimeoutdockerpull&......
  • docker 安装Es教程
    转载于:你必须会的Docker安装ElasticSearch教程创建网络dockernetworkcreateitmentu-net安装Es命令dockerrun-d\ --nameelasticsearch\-e"ES_JAVA_OPTS=-Xms512m-Xmx512m"\-e"discovery.type=single-node"\-ves-data:/usr/share/elas......
  • ubuntu20.4安装docker
    1.删除某软件,及其安装时自动安装的所有包sudoapt-getautoremovedockerdocker-cedocker-enginedocker.iocontainerdrunc2.删除docker其他没有没有卸载dpkg-l|grepdocker3.卸载没有删除的docker相关插件(结合自己电脑的实际情况)sudoapt-getautoremovedoc......
  • 如何使用Docker构建运行时间较长的脚本
    问题让我们从这个我试图解决的问题开始。我开发了一个会运行很长时间的构建脚本,这个脚本中包含了很多的步骤。这个脚本会运行1-2个小时。它会从网络下载比较大的文件(超过300M)。后面的构建步骤依赖前期构建的库。但最最烦人的是,运行这个脚本真的需要花很长的时间。文件系统是固......
  • docker相关命令
       例:dockersearchmysql:8.0dockerpullmysql:8.0容器常用命令   ......
  • docker的使用
    前提:我是安装的windows版docker,先开启电脑虚拟设置,而后装了wsl,最后成功安装dockerdesktop搜索镜像:dockersearchimage-name安装镜像:dockerpullimage-name假如安装了python3.9镜像,启动python3.9环境:dockerrun--namepy3.9-itd-vC:\project\data:/wwwpython:3.9上......
  • docker 安装 ha supervisor [aarch64]
    克隆镜像下载hassio-supervisor,homeassistant镜像打开网址下面两个网址,获取最新版本镜像,使用dockerpull拉取镜像https://github.com/home-assistant/supervisor/pkgs/container/aarch64-hassio-supervisorhttps://github.com/home-assistant/core/pkgs/container/aarch64......