本文主要讲解docker的操作的整体过程,一边讲解操作,一遍讲解原理。

docker操作一般分4个步骤:

1、安装Docker;

2、运行Docker;

3、下载镜像;

4、启动Docker容器实例;

一、安装Docker

我们使用的服务器环境是CentOs 7.9 。

1、安装环境依赖

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

2、配置国内 docker 的 yum 源(阿里云)

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

就这一句话就可以了。查看yum源信息的命令如下。

ls /etc/yum.repos.d/docker-ce.repo
vim !$    查看配置的yum源信息

3、安装 docker-ce

[root@centos7-9~]# yum install docker-ce docker-ce-cli containerd.io -y

docker-ce-cli 作用是 docker 命令行工具包

containerd.io 作用是容器接口相关包

yum info 软件包的名字,可以查看一个包的具体作用。

二、运行Docker

1、启动docker,并且随机启动

systemctl start docker && systemctl enable docker

其实该条命令修改的地方是

cat /proc/sys/net/ipv4/ip_forward

值为1,默认为0,启动docker后,会自动打开 转发功能 ip_forward

2、运行成功后,查看版本号

docker version

3、查看docker的信息

docker info |more

显示docker的运行情况,当前有几个容器,几个在运行,几个paused暂停,几个已停止等,cup,内存等。其中:

Docker Root Dir: /var/lib/docker

docker root dir: docker 的根地址,下载的镜像都默认会存在这个目录下。

registry:https://index.docker.io/v1

默认去这个 https:// index.docker.io/v1/ 网站找 docker 镜像

三、下载镜像到本地

一些公用的镜像,可以通过搜索来查找,命令如下:

docker search 镜像名

默认是从Docker  Hub中搜索符合条件的镜像。

如上图,几列分别表示:docker镜像名字  描述   受欢迎受程度

是否官方提供 OFFICIAL 为[ok] ,说明可以放心使用。

若我们直接pull这些镜像,会很慢,所以,我们需要添加镜像加速器。比如我们一般会使用阿里云的镜像加速器,提升 pull 的速度。

方法如下:

1 、你只需要登录容器 Hub 服务 https://cr.console.aliyun.com 的控制台,使用你的支付宝帐号,第一次登录时,需要设置一个独立的密码,然后重新打开该网址,左侧的加速器帮助页面就会显示为你独立分配的加速地址。

2、需要手动创建 daemon.json 文件。

 vim /etc/docker/daemon.json

写入以下内容

{"registry-mirrors": ["https://e9yneuy4.mirror.aliyuncs.com"]}

镜像源可以添加多个,根据自己的网络环境选择速度快的。这里给大家添加了 3 个常用的。

{"registry-mirrors":["https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://28usf5ts.mirror.aliyuncs.com"]}

3、重启服务

[root@centos7-9 ~]# systemctl daemon-reload[root@centos7-9 ~]# systemctl restart docker

4、查看docker信息

docker info

就可以看到

 Registry Mirrors:  https://dockerhub.azk8s.cn/  http://hub-mirror.c.163.com/  http://28usf5ts.mirror.aliyuncs.com/

3.2现在pull下载网上的常用的镜像就可以了。

比如我们下载个centos镜像

docker pull centos

注意:这里的centos镜像,就是刚刚搜索的centos的第一条,官方的镜像。现在默认为版本8,精简的版本,是不加任何其他东西。非常小,只有200多M.连linux的内核都没有,就是一些基本的包。

下载完毕后,查看下本地的镜像

docker images

就能看到刚刚下载的centos镜像了。

还有一些下载镜像的方法,我们接着将!

3.3 直接指定镜像的网址下载

 docker pull hub.c.163.com/library/tomcat:latest

3.4 将本机的镜像文件直接上传到linux载入镜像

1.使用ftp工具将镜像文件tar包上传到linux。

2.载入镜像

docker load -i /root/docker-centos7.tar

四、启动Docker容器实例

4.1、开启动网络转发功能

若不开启,docker 启动实例时,会报错以下警告:

手动开启的方法如下:

vim /etc/sysctl.conf

插入以下内容

net.ipv4.ip_forward = 1

启动服务

 sysctl -p

检查路由转发功能是否有效的方法:

cat /proc/sys/net/ipv4/ip_forward

返回的结果为1则表示有效,否则无效。

4.2、关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

关了防火墙,要把 docker 服务重启一下,不然后 docker 的 ip 包转发功能无法使用。即使防火墙关了,docker 会调用内核模块 netfilter 增加规则,所以有防火墙规则。重新启动docker的命令如下:

systemctl restart docker

可以查看到 防火墙的条目会多了很多关于docker 的

4.3、启动docker实例:

docker run -it centos:latest bash

退出该实例使用 exit,就将容器的实例关闭了。

Exit

或启动一个实例,后台运行:

docker run -d centos:latest /bin/sh -c "while true;do echo hello world; sleep 1; done"

表示在 container 中启动一个长久运行的进程,不断向 stdin 输出 hello world 。模拟一个后台运行的服务docker 常用参数:-d 后台运行容器,并返回容器 ID;-c 后面跟待完成的命令。

返回的字符串为容器的ID

99a2d6a864eed9b097c81b19dd5373eba43fc681afcb765632b61bca712f37e5

从一个容器中取日志,查看输出的内容,可用于后期检查 docker 实例在标准输出中弹出的错误信息或正常的信息。语法:

docker logs 容器实例的 Name/ID

通过 docker ps 可以查询现在运行的容器。

docker ps -a   #-a 列出所有容器(包含沉睡/退出状态的容器);

Exited表示退出,Up表示正在运行中;

杀死一个容器。比如:杀死一个正在后台运行的容器查看要杀死容器的 ID

docker kill c4a213627f1b #杀死一个容器

五、运行一个站点镜像

1、我们找个包含了站点的镜像,运行后,在外部访问。

下载地址:

​​​​​​​

 https://pan.baidu.com/s/1rnwugN0eVk4MBgaMFnB8Yg提取码:muxu

下载好后解压为一个镜像tar包:docker-centos-httpd-image.tar,这个镜像包含了一个静态站点和web服务器,然后使用ftp上传到linux服务器,使用3.4的方法

docker load -i /root/docker-centos-httpd.tar

2、运行一个镜像,是一个站点,并且做好端口映射。

docker run -d -p 80:80  centos:httpd-v2

-p 物理机的 80 端口:容器实例的 80 端口 ,把容器中的 80 端口映射到物理机上的 80 端口

3、查看物理机上开启的 80 代理端口

netstat -antup | grep 80

可以看到端口已映射成功了。我的Linux地址为:192.168.157.100

我们在外部访问下:http://192.168.157.100/

成功打开站点了。

六、一些小知识

1、查看docker 服务启动脚本

cat /usr/lib/systemd/system/docker.service

查看如上的文件,其中ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 即为启动的命令,启动的时候,真正启动的是/usr/bin/dockerd,后面再跟上一串,镜像加速器也可以加在这里, 不推荐该方法。

systemctl daemon-reload #只有修改了 systemd 服务启动脚本,才需要重新加载,修改配服务的置文件,不需要执行这个。

2、常用命令

启动、停止、重启 container 容器实例的常用命令,一定要记住

docker images #查看所有的镜像

docker run -d -p 80:80  centos:httpd-v2   #运行、启动一个容器实例;

docker  ps    #查看所有正在运行中的容器;

docker stop 容器id   #关闭容器

docker restart 容器id  #重启容器

docker rm 容器id  删除指定的容器,一般是先stop在删除,或者强制删除 加 -f

docker rm -f 容器id

3、docker 和容器实例的区别

很多初学者经常搞不清这2者的关系。其实docker相当于一个底层软件,需要先启动docker,

systemctl start docker

才可以docker pull镜像,启动容器实例

docker run -d -p 80:80  centos:httpd-v2 

centos安装 docker的教程相关推荐

  1. CENTOS 7 踢用户_从零学ELK系列(三):Centos安装Docker(超详细图文教程)

    CSDN博客地址(关注,点赞) 人工智能推荐 GitHub(Star,Fork,Watch) [前言] 为了更加真实的模拟生产部署环境,不仅需要Linux环境支持,而且ELK需要在不同的机器上部署:再 ...

  2. 从零学ELK系列(三):Centos安装Docker(超详细图文教程)

    [前言] 为了更加真实的模拟生产部署环境,不仅需要Linux环境支持,而且ELK需要在不同的机器上部署:再重新装几台虚拟机?本地资源不支持,于是乎想到了Docker:今天在上次的Linux系统(< ...

  3. 《 Docker 技术入门与实战 》读书笔记 ( CentOS 安装 Docker )

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. PS :个人所有读书笔记只记录个人想要的内容,很可能原书大量内容没有纳入笔记中... ... 以下全 ...

  4. 魔兽世界服务端AzerothCore+Centos系统+docker编译教程

    魔兽世界服务端AzerothCore+Centos系统+docker编译教程 1.1 准备工作 1.1.1 准备 1.1.2 安装软件 1.1.3 下载源码 1.1.4 地图文件 1.2 修改配置文件 ...

  5. CentOS搭建Docker容器教程

    本文讲解如何在 CentOS 安装宝塔面板,搭建 Docker 容器. 首先,你需要一个服务器.这里推荐一个云服务器服务商. 三丰云.三丰云服务器提供免费虚拟主机.免费云服务器.注册验证后即可免费使用 ...

  6. CentOS 安装docker.ce报错提示containerd.io >= 1.2.2-3问题

    centos安装docker.ce遇到报错,提示如下 # yum install -y docker-ce Last metadata expiration check: 0:01:49 ago on ...

  7. centos安装docker显示 No package docker-ce available

    https://blog.csdn.net/qq_25760623/article/details/88657491 centos安装docker显示 No package docker-ce ava ...

  8. (20200224已解决)CentOS安装Docker出错No package docker-ce available

    问题描述 在CentOS安装Docker,需要用到sudo yum install docker-ce docker-ce-cli containerd.io. 结果出现: 解决方案 缺失了一步设置: ...

  9. Centos安装Docker详细步骤,Debian安装Docker详细步骤

    Linux 安装Docker指令 1. Centos安装Docker 更新系统: sudo yum update 安装依赖包,以便使用 HTTPS 连接下载 Docker 软件包: sudo yum ...

最新文章

  1. 火车票上的星号暗藏玄机?!
  2. php json_decode \ 反斜杠 转义 问题
  3. UA MATH564 概率论 QE练习题2
  4. C语言 数组传递与值传递讲解
  5. MyBatis——@Result注解column参数传递——父查询函数的参数传递到子查询
  6. VTK:图片之ImageThreshold
  7. 计算机网络知识点补充
  8. [JSOI2008]最小生成树计数
  9. 怎样判断一个网站是不是前后端分离的?
  10. 用纯JSP实现按条件查询数据库
  11. Google的十个核心技术,互联网营销
  12. AllenNLP框架学习笔记(模型篇之保存与加载)
  13. android gps实训报告,GPS测量技术实训报告
  14. 多线程抢票_多线程抢票系统浅析
  15. 软件测试 | 测试开发 | Git分支管理搞定在线合并和本地合并
  16. 《快速掌握PyQt5》
  17. hicharts堆叠柱状图堆叠数据标签显示百分比
  18. OSAL 之功耗管理
  19. 开启子进程的两种方式,孤儿进程与僵尸进程,守护进程,互斥锁,IPC机制,生产者与消费者模型...
  20. OpenStack社区周报:Neutron网络之负载均衡,设计OpenStack云时需要避开的十个误区...

热门文章

  1. Dcloud课程2 什么是Dcloud
  2. 大数据学习路线(包含全套视频教程)
  3. 大数据学习路线-入门精简
  4. 创建office vsto外接程序,开发wps插件,配置启动wps进行调试
  5. java生成pdf方法_详解Java生成PDF文档方法|chu
  6. 什么是TCP/IP协议?
  7. 腾讯后端面试题python_python技术面试题(十九)--腾讯
  8. 在两台设备chrome之间同步自己的书签
  9. 在linux上gc日志详解,JVM Parallel Scavenge GC日志详解
  10. USB 设备驱动之设备接入梳理(六)