centos安装docker

1.卸载旧版的docker

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

2.更新yum包

sudo yum update

3.下载需要的安装包

 下载命令: yum install -y yum-utils若执行上面的命令报Error: Failed to download metadata for repo ‘appstream‘:类似的问题可以进行如下操作,出现此错误的原因是 CentOS 已经停止维护的问题。2020 年 12 月 8 号,CentOS 官方宣布了停止维护 CentOS Linux 的计划,并推出了 CentOS Stream 项目,CentOS Linux 8 作为 RHEL 8 的复刻版本,生命周期缩短,于 2021 年 12 月 31 日停止更新并停止维护(EOL),更多的信息可以查看 CentOS 官方公告。如果需要更新 CentOS,需要将镜像从 mirror.centos.org 更改为 vault.centos.org首先,进入到 yum 的 repos 目录cd /etc/yum.repos.d/其次,修改 centos 文件内容sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*然后,生成缓存更新(第一次更新,速度稍微有点慢,耐心等待两分钟左右)yum makecache

4.设置镜像的仓库,建议使用阿里云的,国外的网速巨慢!

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

5.安装docker相关的配置,docker-ce 是社区版,docker-ee 企业版,正常推荐都是社区版

 yum install docker-ce docker-ce-cli containerd.io
出现了completed即安装成功

6.启动Docker

systemctl start docker#查看docker版本
docker version#设置开机自启动
systemctl enable docker

常用的docker镜像命令

1. 在镜像库中搜索镜像

docker search 镜像名称--也可以去dockerHub上去搜索具体的版本和详细的信息https://hub.docker.com/

2. 拉取/下载镜像

docker pull 镜像名称
-- 上面的方式会去自动拉取最新版本的镜像,若要指定版本可以指定版本进行下载
docker pull 镜像:镜像版本
例如:docker pull nginx:1.21

3. 查看本地仓库的镜像列表

-- 查看本地的顶层的镜像(实际上,在这里我们没有办法区分一个镜像和一个只读层,所以我们提出了top-level 镜像。只有创建容器时使用的镜像或者是直接pull下来的镜像能被称为顶层(top-level)镜像,并且每一个顶层镜像下面都隐藏了多个镜像层)
docker images--查看所有的镜像
docker images -a--如果你想要查看某一个image-id下的所有层,可以使用docker history来查看
docker history 镜像ID

4. 提交一个自己的镜像

当我们在别的镜像上做了修改想要把已经修改的镜像单独再保存一个镜像然后提交到image列表内

docker commit -a="作者" -m="提交的简介信息" 已经修改的容器ID 自定义的镜像名称:版本
例如: docker commit -a="Yin" -m="add to tomcat" 3a709db41501 tomcat02:1.0

常用docker容器命令

创建一个容器,关于镜像与容器的区别,容器的创建过程,其实docker run 命令是集成了两个命令,这里请参考这个博客https://www.cnblogs.com/bethal/p/5945038.html

docker run -it 镜像名称
docker run 的命令有很多,例如后台启动,指定端口启动,可以使用docker run --help查看
例如后台启动一个nginx镜像:
docker run -d --name nginx01 -p3344:80 nginx -- 在dockerHub推荐用来测试镜像的命令,先下载镜像然后直接运行,停止后自动删除刚才运行的容器
docker run -it --rm 镜像名称:版本

1. 查看容器的详细信息

docker inspect  容器ID-- 查看容器的耗费资源情况
docker stats 容器ID #添加容器ID就是查看指定容器的状态,否则查询全部的容器的状态

2. 进入当前正在运行的容器

方式一:docker exec -it 容器ID/容器名称 bashShell(进入容器开启一个新的终端,可在里面操作(常用))
例如:docker exec -it 137bf1a4e489 /bin/bash
方式二:docker attach 容器ID (进入容器正在执行的终端,不会启动新的进程)

3. 将容器中的文件拷贝到本机上

docker cp 容器ID:容器内文件的路径 目的主机路径
例如:docker cp 09b25008c9de:/home/test.txt /home

4. 查看容器列表

--查看本地正在运行中的容器,容器的状态有created(已创建),restarting(重启中),running(运行中),removing(迁移中),paused(暂停),exited(停止),dead(死亡)
命令1:sudo docker container ls
命令2:docker ps-- 查看所有的容器,包括未运行的
docker ps -a

5. 删除容器

-- 删除单个容器,只会删除非运行状态的容器
docker rm -f 容器ID
-- 删除多个容器
#删除所未运行的容器
sudo docker rm $(sudo docker ps -a -q)
#删除Exited状态的容器
sudo docker rm $(sudo docker ps -qf status=exited)
#删除所有的容器,一般不推荐使用
sudo docker rmi $(docker images -q)

docker Portainer的应用

Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。

单机运行模式,直接运行在当前宿主机。并分配9000端口

docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer-test portainer/portainer

docker 使用容器卷

docker 容器卷是一种容器内外数据同步的一种技术,主要解决删除容器后容器内数据也一起被删除的问题,主要使用挂载目录来实现。
使用数据卷命令

dcoker run -v 主机目录:容器内目录示例:将容器内的home目录与容器外的、home/ceshi 目录进行数据共享
docker run -it -v /home/ceishi:/home centos /bin/bash示例2:运行mysql (mysql需要设置密码,可参考docker hub)
docker run -d -p 3310:3306 -v /home/mysql:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

具名挂载和匿名挂载

-- 匿名挂载 只写容器内的路径,并没有写容器外的路径
-v 容器内路径
示例:
docker run -d -P --name nginx01 -v /etc/nginx nginx-- 具名挂载 指定卷名
-v 卷名:容器内路径
示例:
docker run -d -P --name nginx02 -v juan-name:/etc/nginx nginx-- 查看容器挂载的卷列表
docker volume ls
--查看卷挂载的详细信息
docker volume inspect 卷名

挂载时数据卷时设置权限

-- 挂载时设置只读权限,设置只读之后,容器内将不能修改只能通过宿主机来操作
例:docker run -d -P --name nginx02 -v juan-name:/etc/nginx:ro nginx
-- 挂载时设置读写权限
例:docker run -d -P --name nginx02 -v juan-name:/etc/nginx:rw nginx

DockerFile的介绍和使用

dockerflie 是用来构建docker镜像的文件! 命令参数的脚本!

DockerFile构建的镜像的步骤:
1.编写一个dockerfile文件
2.使用 docker build 命令构建成为一个镜像
3.docker run 运行镜像
4.docker push 发布镜像(DockerHub,阿里云镜像仓库!)

DockerFile的构建过程
1.每个保留关键字(指令)都必须是大写字母。
2.执行从上到下顺序执行
3.#表示注释
4.每一个指令会创建和提交一个新的镜像层,并提交!

DockerFIle的指令

FROM       #基础镜像,一切在这里开始构建
MAINTAINER #镜像是谁写的,姓名+邮箱
RUN        #镜像构建的时候需要运行的命令
ADD        #添加其他镜像或文件
WORKDIR    #镜像的工作目录
VOLUME     #挂载的目录,
EXPOSE     #保留端口配置
CMD        #指定这个容器启动的时候需要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候需要运行的命令,可以追加命令
COPY       #类似于ADD,将文件拷贝带镜像中
ENV        #构建的时候设置环境变量

创建一个自己的centos镜像

编写dockerfile文件

FROM centos
MAINTAINER yin
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash

创建一个镜像

# docker build -f dockerfile的文件路径 -t 镜像名:版本
docker build -f mydockerfile-centos -t mycentos:0.1 .
# 若当前目录下的镜像文件名为Dockerfile则可以省略 -f 文件名
docker bulid -t mycentos:0.1 .

创建一个带有jdk的Tomcat镜像

FROM centos
MAINTAINER yin
#拷贝自己创建的一个文档
COPY readme.txt /usr/local/readme.txt
#将事先准备的的压缩包添加到镜像中
ADD jdk-8u261-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.57.tar.gz /usr/local/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum -y install vim
#设置工作目录
ENV MYPATH /usr/local
WORKDIR $MYPATH#配置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_261
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.57
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.57
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:CATALINA_HOME/bin#暴露端口
EXPOSE 8080#启动Tomcat
CMD /usr/local/apache-tomcat-8.5.57/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.57/bin/logs/catalina.out

将镜像打包成tar包,gz包,以及将将tar包生成镜像

#将镜像打包成tar包
docker  save  -o xxx.tar  imagexxx # 当前路径下会生成一个xxx.tar
docker save -o electric_know_1.31_0.tar electric_know_1.31_0:latest#将tar包再次压缩为gz包
tar -zcvf xxx.tar.gz xxx.tar    # 当前路径生成一个xxx.tar.gz压缩包#将tar.gz 解压缩,会生成一个tar包
tar -zxvf xxx.tar.gz#将tar包生成镜像
docker load --input XXXX.tar

将自己的镜像推送到阿里云
1.登录阿里云
2.找到容器镜像服务
3.创建自己的命名空间和镜像仓库
4.创建自己的仓库后阿里云有详细的教程,根据教程命令推送即可

docker流程图

Docker网络

理解docker0网络

1.一般我们使用云服务器安装docker服务时一般会有三个网卡

2.当我们运行一个镜像并进入查看镜像的IP时发现docker会自动给镜像分配一个ip

3.当我们退出容器到宿主机在查看网卡的时候,我们发现多了一对网卡,多的其实就是启动的容器的网卡

每增加一个容器。就会相应的增加一对网卡,他们一端连着协议,一端彼此相连,运用的是evth-pair桥接,这样容器与容器之间就可以通信了

4.docker网络通信简图
在不设置网络的情况下所有的容器都共用一个路由器,那就是docker0,docker0会给我们所有的容器来分配一个默认的可用ip


5.容器互联 --link与自定义网络
场景描述:我们的微服务项目中需要连接一个数据库的容器,而每当数据库容器重新启动的时候对应的容器ip则会改变,这样就每次都要在项目中修改数据库的容器ip,为了解决这个问题我们用到了 --link 命令,他可以直接将两个容器连接起来,直接ping 容器名称即可。(注意:–link 只可以正向连接不可以反向连接,而且现在已经不建议使用这种方式进行互联了,这种方式有局限性,一般使用自定义网络

#使用centos03 连接 centos02 这样我们就可以使用centos03 直接ping centos02了,但是centos02不可以ping通centos03
docker run -d -P --name centos03 --link centos02 centos:latest

那centos03是怎样实现和centos02互联的呢,其实link命令是将centos02的地址写进了centos03的hostst文件内

自定义网络

#查看所有docker网络列表
docker network ls


网络模式:
bridge : 桥接(docker 默认的)
npne : 不设置网络
host : 和宿主机共享网络
container 容器网络连通(用的少,局限性很大)

#之前我们的启动容器的命令
docker run -d -P --name cnteos01 centos
#其实这里面有一个默认的参数,默认的就是docker0网络,docker0不能使用域名访问
docker run -d -P --name cnteos01 --net bridge centos

创建一个自己的docker网络

#docker network create --driver 网络类型 --subnet 子网掩码 --gateway 网关地址 自定义网络名称
#遇到问题可以使用 docker network --help 来查看各个命令的详解
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

#在自己创建的网络下创建两个容器。然后再查看网络则会发现在自己的网络上多了另个容器地址
docker run -d -it -P --name centos-net-01 --net mynet centos
docker run -d -it -P --name centos-net-02 --net mynet centos


自定义网络与docker0的对比的命令的对比:自定义网络可以ping ip也可以直接使用容器名
好处:我们可以通过自定义的网络建立不同的集群,而不同的网络又是相互隔离的。从而保证了集群的健康和安全

不同集群示意图(之间相互隔离,同时docker也给我们提供了不同集群之间相互通信的解决方案)

实现两个网络的互联
首先我们现在有两个docker的网络环境一个默认的docker0网络一个mynet网络我们上边已经向mynet中放入了两个容器现在我们向docker0中放入两个

两个网络要想互通并不能网络中的容器之间直接打通,而是要一个网络中的容器跟另一个网络打通,

需要用到以下命令将一个容器跟一个网络打通

将mynet网络与docker0中的cenos01连通,连通之后就是将centos01加到了mynet网络中了

我们在查看centos01就会发现这个容器有了两个地址,一个mynet网络的地址,一个docker0的地址

 docker inspect centos01


这样就可以实现互通了

小结,docker的命令以及流程图

Docker基础------安装docker,以及一些常用的docker命令,docker网络,自定义docker网络相关推荐

  1. docker基础安装使用

    文章目录 一.简介 1.虚拟化 2.Docker组件 2.1 Docker服务器与客户端 2.2 Docker镜像与容器 2.3 Registry(注册中⼼) 3.小结 4.Docker和虚拟机的区别 ...

  2. Docker的安装部署及优化详解(汇总版,学习docker这一篇就够了)

    目录 一.部署20版本的docker 1.1 安装依赖包 1.2 设置阿里云镜像 1.3 安装docker社区版 1.4 关闭增强机制 1.5 前体准备(开启服务) 1.6 设置镜像加速 1.6-1 ...

  3. Python零基础入门(2)——常用的快捷命令、数据类型、输入输出格式、变量介绍

    1.常用快捷名命令 pycharm设置界面(ctrl + alt + s) 快速创建文件(alt + insert) 格式化python代码(ctrl + alt + l) 快速注释代码(ctrl + ...

  4. 3、Docker 基础安装和基础使用 二

    Docker 网络 启动了nginx容器,但却不知道从哪里进行访问nginx. 启动nginx容器,并附加网络映射 在启动nginx容器的时候,增加一个-P大写的P的参数 表示随机映射一个端口 [ro ...

  5. Docker的安装和使用及其Docker容器间通信,云计算技术与应用实验报告

    实验环境:Windows操作系统,阿里云资源,Docker 实验内容和要求:安装Docker并进行相关实验,熟悉Docker的相关操作.实验包括Docker的安装.镜像和容器的使用.容器的连接.容器间 ...

  6. docker删除es数据_Docker的常用命令

    Docker的常用命令 docker version#显示docker的版本信息 docker info#显示docker的系统信息,包括镜像和容器的数量 docker --help#docker帮助 ...

  7. 虚拟机下载安装、Docker下载安装

    虚拟机 虚拟机使用准备 首先检查自己计算机的虚拟化状态. win10为例,打开任务管理器: 如果虚拟化是已禁用,需要自己上网百度自己的电脑如何开启虚拟化,一般都是在开机时进入BIOS去调试每个品牌或主 ...

  8. Docker的安装及使用

    1 为什么会出现docker 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协助我们需要关心的问题很多,这也是很多互联网公司不得不面对的问题, 特别是各种版本的迭代之 ...

  9. Ubuntu中docker的安装和使用

    Ubuntu 中docker安装和使用 安装VMware16 安装Ubuntu22.04 安装docker Docker的主要作用 起到一个"容器"(代码+环境)的作用,解决了软件 ...

最新文章

  1. NSight Compute 用户手册(中)
  2. nebula注释符号
  3. Linux下对网络进行配置nmcli、nmtui
  4. memcache 缓存的批量删除方案(转)
  5. html流光按钮,【CSS】css实现流光效果-按钮流光显示效果-自发光
  6. 交易软件 python_Python实现银行账户资金交易管理系统
  7. laravel表单验证
  8. 消格子时一个很深的bug的修复纪录
  9. 常见的C++应用领域有哪些?
  10. xilinx基础篇Ⅰ(7)ISE14.7开发基础流程 [CPLD章节]
  11. 前端框架EasyUI
  12. 微信号码检测工具的使用成功案例(一)
  13. dota2api的介绍与使用
  14. Blender烘焙光照贴图
  15. unity简单的脚本 播放3D立体音效(近大远小效果)
  16. 基地树洞 | 自动化小系列之番外篇
  17. 服务器关机 正在注销,Win7系统关机一直卡在正在注销如何解决
  18. HBase Java API操作数据库
  19. Discom BKS03/KS91D传感器
  20. [JZOJ5542] 董先生的钦点

热门文章

  1. 尚硅谷课程vue学习(一)
  2. JavaScript面向对象和ES6笔记
  3. 《51单片机》用Proteus8画仿真电路的步骤
  4. Spring优雅停机
  5. 全球区块链游戏生态大会8月2日将于船厂1862举办,大会官网、议程一览为快
  6. 代码随想录算法训练营第七天|454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
  7. 21.Kubernetes(三)-----集群部署(service)
  8. RSS Reader in PC iPhone
  9. reportviewer控件mysql_reportviewer 控件动态绑定数据 报表灵活绑定数据
  10. Android12 Zygote的启动流程