Docker安装部署 及相关命令

  • 前言
  • 一、安装Docker
    • 1.yum包更新到最新
    • 2. 安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
    • 3. 设置yum源
    • 4. 安装docker,出现输入的界面都按 y
    • 5. 查看docker版本,验证是否成功
    • 6.启动docker 环境
    • 7.设置开机启动
  • 二、 Docker架构
  • 三,配置Docker镜像加速器
  • 四,Docker 服务相关命令
  • Docker 镜像相关命令
  • Docker 容器相关命令
  • 五,Docker 容器的数据卷
    • 数据卷概念及作用
  • 六,Docker 应用部署
  • MySQL部署
  • Tomcat部署
  • Nginx部署
  • Redis部署
  • 七,Docker 镜像原理
  • 镜像导入导出
  • 八,Docker 私有仓库
    • 搭建私有仓库
    • 上传镜像到私有仓库
    • 从私有仓库拉取镜像
  • Docker与VM区别

前言

Docker概念
Docker是一个开源的应用容器引擎

诞生于2013年初,基于Go语言实现,dotCloud公司出品(后改名Docker Inc)

Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上

容器是完全使用沙箱机制,相互隔离(沙箱就是限制应用程序对系统资源的访问的运行环境)

容器性能开销极低

简单来说 docker就是一种容器技术 解决软件跨环境迁移的问题。

Docker可以运行在在MAC、Windows、CentOS、UBUNTU等操作系统上

官网:https://www.docker.com

一、安装Docker

1.yum包更新到最新

yum update

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

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

3. 设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4. 安装docker,出现输入的界面都按 y

yum install -y docker-ce

5. 查看docker版本,验证是否成功

docker -v

6.启动docker 环境

systemctl start docker

7.设置开机启动

systemctl enable docker

二、 Docker架构

  • 镜像(Image):Docker镜像(Image),就相当于是一个root文件系统。比如官方镜像 ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
  • 仓库(Repository):仓库可以看成一个代码控制中心,用来保存镜像

三,配置Docker镜像加速器

默认情况下,将从docker hub(https://hub.docker.com/)上下载docker镜像,太慢。一般都会配置镜像加速器

  • USTC:中科大镜像加速器(https://docker.mirrors.ustc.edu.cn)
  • 阿里云
  • 网易云
  • 腾讯云
    第一种方式: 阿里云镜像加速器,登陆阿里云查看个人加速地址
    注意:用阿里云时,每个人加速器地址不同,然后在终端输入下面指令
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://eob5atc6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker#上面操作完成后输入下面代码测试是否成功cat /etc/docker/daemon.json

第二种方式:创建或修改 /etc/docker/daemon.json 文件,修改为如下形式:

# 中国科技大学镜像地址
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}# 网易云镜像地址
{"registry-mirrors":["http://hub-mirror.c.163.com"]
}# 阿里云镜像,需要自己手动生成的加速地址:https://cr.console.aliyun.com/
测试:
# 重启docker
systemctl restart docker# 查看是否成功
docker info

四,Docker 服务相关命令

  • 启动docker 服务:

    • systemctl start docker
      
  • 停止docker 服务:

    • systemctl stop docker
      
  • 重启docker 服务:

    • systemctl restart docker
      
  • 查看docker 服务状态:

    • systemctl status docker
      
  • 设置开机启动docker:

    • systemctl enable docker
      

Docker 镜像相关命令

  • 查看镜像:查看本地所有的镜像

    • docker images
      docker images -q #查看所有镜像的id
      
  • 搜索镜像:从网络中查找需要的镜像

    • docker search 镜像名称
      
  • 拉取镜像:从Docker 仓库下载镜像到本地,镜像名称格式为名称:版本号,如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去docker hub 搜索对应镜像查看

    • docker pull 镜像名称
      
  • 删除镜像:删除本地镜像

    • docker rmi 镜像id/名称号:版本号 #删除指定本地镜像
      docker rmi 'docker images -q' #删除所有本地镜像
      

Docker 容器相关命令

  • 查看容器

    • docker ps #查看正在运行的容器
      docker ps -a #查看所有容器
      
  • 创建并启动容器

    • # 创建一个新的容器并运行(-d 后台运行容器,并返回容器ID  -p 主机端口:容器端口  指定映射关系)
      docker run -d -p 80:80 --name 容器名 镜像名称
      
    • 参数说明:

      • -i:保持容器运行。通常与-t同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
      • -t:为容器重新分配一个伪输入终端,通常与-i同时使用
      • -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec进入容器docker exec -it c2 /bin/bash。退出后,容器不会关闭
      • -it创建的容器一般称为交互式容器;-id创建的容器一般称为守护式容器
      • --name:为创建的容器命名
  • 进入容器

    docker exec -it 容器名称 /bin/bash

    
    
  • 停止容器

    • docker stop 容器名称
      
  • 启动容器

    • docker start 容器名称
      
  • 删除容器:如果容器是运行状态则删除失败,需要停止容器参能删除

    • docker rm 容器名称
      
  • 查看容器信息

    • docker inspect 容器名称
      

五,Docker 容器的数据卷

数据卷概念及作用

数据卷

  • 数据卷是宿主机中的一个目录或文件
  • 当容器目录和数据卷目录绑定后,对方的修改会立即同步
  • 一个数据卷可以被多个容器同时挂载
  • 一个容器也可以被挂载多个数据卷

数据卷的作用

  • 容器数据持久化
  • 外部计价器和容器间接通信
  • 容器之间数据交换
    配置:
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir -p /root/tomcat/webapps# 创建容器,设置端口映射、目录映射
# docker run ... –v 宿主机目录(文件):容器内目录(文件) ...
docker run -d --name=tomcat1 -p 8081:8080 -v /root/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8.5
docker run -d --name=tomcat2 -p 8082:8080 -v /root/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8.5

六,Docker 应用部署

  • 容器内的网络服务和外部机器不能直接通信
  • 外部机器和宿主机可以直接通信
  • 宿主机和容器可以直接通信
  • 当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射到宿主机的端口上。外部机器访问宿主机的端口,从而间接访问容器的服务
  • 这种操作称为:端口映射

MySQL部署

  1. 搜索mysql镜像

    docker search mysql
    
  2. 拉取mysql镜像

    docker pull mysql:5.6
    
  3. 创建并启动容器

docker run -d -p 3306:3306 --name=mysql5.7 -e MYSQL_ROOT_PASSWORD=root mysql:5.7 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

Tomcat部署

  1. 搜索Tomcat 镜像

    docker search tomcat
    
  2. 拉取mysql镜像

    docker pull tomcat
    
  3. 创建容器,设置端口映射、目录映射

    #在/root目录下创建tomcat目录用于存放tomcat数据信息mkdir ~/tomcat
    cd ~/tomcat
    
    docker run -id --name=c_tomcat \
    -p 8080:8080 \
    -v $PWD:/usr/local/tomcat/webapps \
    tomcat
    
    • 参数说明:

      • -p 8080:8080:将容器的8080端口映射到主机的8080端口
      • -v $PWD:/usr/local/tomcat/webapps:将主机中当前目录挂载到容器的webapps
  4. 最后使用外部机器访问tomcat

Nginx部署

  1. 搜索Nginx 镜像

    docker search nginx
    
  2. 拉取mysql镜像

    docker pull nginx
    
  3. 创建并启动容器

docker run -d --name=nginx -p 80:80 nginx
  1. 使用外部机器访问nginx

Redis部署

  1. 搜索Redis 镜像

    docker search redis
    
  2. 拉取Redis 镜像

    docker pull redis:5.0
    
  3. 创建并启动容器

docker run -d --name=redis5.0 -p 6379:6379 redis:5.0

七,Docker 镜像原理

  • Docker 镜像的本质是什么?

    • 是一个分层的文件系统
  • Docker 中一个CentOS 镜像为什么只有200MB,而一个CentOS 操作系统的iso 文件要几个G?
    • CentOS的iso镜像文件包含bootfs和rootfs,而Docker的CentOS镜像复用操作系统的bootfs,只有rootfs和其他镜像层
  • Docker 中一个Tomcat 镜像为什么有500MB,而一个Tomcat 安装包只有70多MB?
    • 由于Docker中镜像是分层的,tomcat虽然只有70多MB,但他需要依赖于父镜像和基础镜像,所以整个对外暴露的tomcat镜像大小500多MB

操作系统组成部分:

  • 进程调度子系统
  • 进程通信子系统
  • 内存管理子系统
  • 设备管理子系统
  • 文件管理子系统
  • 网络通信子系统
  • 作业控制子系统

Linux文件系统由bootfs 和rootfs 两部分组成

  • bootfs:包含bootloader(引导加载程序)和kernel(内核)
  • rootfs:root文件系统,包含的就是典型的Linux 系统中的/dev、/proc、/bin等标准目录和文件
  • 不同的Linux 发行版,bootfs 基本一样,而rootfs 不同,如ubuntu,CentOS等

Docker 镜像原理:

  • Docker 镜像是由特殊的文件系统叠加而成
  • 最低端是bootfs,并使用宿主机的bootfs
  • 第二层是root 文件系统rootfs ,称为base iamge
  • 然后再往上可以叠加其他的镜像文件
  • 统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统
  • 一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像称为基础镜像
  • 当从一个镜像启动容器时,Docker会在最顶层加载一个读写文件系统作为容器

镜像制作:

  • 容器转为镜像

    docker commit 容器id 镜像名称:版本号
    
    docker save -o 压缩文件名称 镜像名称:版本号
    
    docker load -i 压缩文件名称
    

镜像导入导出

例:将mynginx:hehe镜像共享给其他人,或者是将别人共享给的镜像包导入到系统中

# 将镜像保存成tar包: docker save -o 包名 镜像:版本
[root@itcast ~]# docker save -o mynginx.tar mynginx:hehe
[root@itcast ~]# ls
mynginx.tar# 接下来删除我们本地的mynginx:hehe镜像
[root@itcast ~]# docker rmi mynginx:hehe
Untagged: mynginx:hehe
Deleted: sha256:0121bd7115b67719cc215cea3c2a2b090c0a42a1d70cbd46d4d243fa9c8b0edd# 然后再从tar包中将镜像导入到本机
[root@itcast ~]# docker load -i  mynginx.tar
Loaded image: mynginx:hehe

八,Docker 私有仓库

搭建私有仓库

Docker 私有仓库

  • Docker 官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。

私有仓库搭建

  1. 拉取私有仓库镜像

    docker pull registry
    
  2. 启动私有仓库容器

    docker run -id --name=registry -p 5000:5000 registry
    
  3. 打开浏览器,输入地址https://私有仓库服务器ip:5000/v2/_catalog看到{"repositories":[]}表示私有仓库搭建成功

  4. 修改deamon.json

    vim /etc/docker/daemon.json
    #在上述文件中添加一个key,保存退出。
    #此步用于让docker信任私有仓库地址
    #注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip
    {"insecure-registries": ["私有仓库服务器ip:5000"]}
    
  5. 重启docker 服务

    systemctl restart docker
    docker start registry
    

上传镜像到私有仓库

  1. 标记镜像为私有仓库的镜像

    docker tag centos:7 私有仓库服务器ip:5000/centos:7
    
  2. 上传标记的镜像

    docker push 私有仓库服务器ip:5000/centos:7
    

从私有仓库拉取镜像

#拉取镜像
docker pull 私有仓库服务器ip:5000/centos:7

Docker与VM区别

相同:

  • 容器和虚拟机具有相似的资源隔离和分配优势

不同:

  • 容器虚拟化的是操作系统,虚拟机虚拟化的是硬件。
  • 传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统
特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为MB 一般为GB
CPU/内存消耗
系统支持量 单机支持上百个容器 一般十几个

【Docker】安装部署 及相关命令相关推荐

  1. docker安装部署和常用命令

    一 添加yum源 yum install epel-release –y yum clean all yum list 二 安装运行Docker yum install docker-io –y sy ...

  2. saiku docker配置部署_【安装教程】01 Gitea Docker 安装部署 - 【SkywenCode】技术团队基...

    在2016年-2019年,SkywenCode技术团队使用码云Gitee 作为线上代码库管理,基于敏捷开发和持续构建的思路,我们整体基础建设以Drone / Jenkins + Docker 的方式构 ...

  3. Docker安装部署,最详细教程

    2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业. 但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?今天就来详细解释,帮助大家理解它,还带有简单 ...

  4. docker安装部署LDAP

    docker安装部署OpenLdap 使用docker安装openldap前的工作准备 首先你的电脑端需要先安装docker 然后就是准备开始安装openldap 1.获取相关的镜像: docker ...

  5. 【Docker安装部署FastDFS详细过程】

    0.国人之光~FastDFS 分布式文件存储的由来: 在我们的项目中有很多需要存储的内容出现,比如图片,视频,文件等等,在早期的时候用户量不大,产生的文件也不是很多,这时我们可以把文件和服务程序放在一 ...

  6. 一丶宝塔+青龙面板安装部署教程及命令-依赖库

    一丶宝塔+青龙面板安装部署教程及命令-依赖库 QQ交流群:1014549449 直达 - 没有服务器的先自行购买,这里推荐腾讯云2H4G首年70 点击购买 建议装centos7.6安装宝塔,后期调试及 ...

  7. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需 ...

  8. 采用docker安装部署Nginx

    四.采用docker安装部署Nginx 在主机192.168.1.138下,安装nginx,docker 的安装命令如下: docker run \ -d \ -p 8080:80 \ --name ...

  9. Docker安装部署及使用

    Docker安装部署及使用 实验内容 安装Docker. 创建自己的第一个容器 容器使用,查看.启动.进入.停止.删除对应容器. 容器安装MySQL. Experimental environment ...

最新文章

  1. c 中ajax不起作用,Jquery AJAX調用:$(this)在成功后不起作用
  2. css使用1-搜狐浏览器和chrome浏览器不同点记录
  3. ubuntu9.10安装显卡驱动
  4. 服务器物理部署拓扑图,【网络】叶脊(Spine-Leaf)网络拓扑下全三层网络设计与实践(五)-物理服务器路由方案及配置...
  5. ShaderLab学习小结(四)简单产生阴影
  6. azure 入门_Azure Databricks入门指南
  7. spring boot 配置网关时404错误_Kong中使用grpcweb插件代理grpc服务时遇到的坑
  8. api hook 例子,截获封包(转载)
  9. 中国诚信全球垫底?讲讲《Science》现在的论文有多不靠谱
  10. 解决PID 4、NT Kernal占用80、445等端口
  11. word批量替换交叉引用格式
  12. Sandwell模型和卫星测高反演海底地形
  13. IOS点,分辨率,尺寸,机型
  14. 学习“基于深度学习的故障诊断”开源
  15. Linux下的sock_stream和sock_dgram
  16. android项目学习心得(全源导航)
  17. 等保2.0的自动代码审计及开源治理解决方案
  18. html文件右键没有打开方式,Win7右键菜单中的”打开方式“不见了的解决方法
  19. 最好云计算机,教你怎么挑选最合适自己的云电脑
  20. dede 百度主动推送插件

热门文章

  1. 低温对锂电池的性能有哪些影响?
  2. Apache Hadoop 2.9.2 的YARN High Available 模式部署
  3. Android蓝牙相关—蓝牙打印
  4. Docker创建paddlepaddle、paddlex深度学习环境并导出镜像
  5. IPV6可以为每一粒沙子分配一个ip地址的证明
  6. 51单片机-点亮LED的多种方式
  7. Gridea同步不成功的解决方案
  8. Java 学习文章汇总
  9. 使用js原生代码实现类似新闻列表的滚动 题目来自4399小游戏2020年前端笔试编程题
  10. 世间事,除了生死,哪一件不是闲事