Docker入门知识讲解与实践

文章目录

  • Docker
    • yum在线安装
      • 安装yum-utils
      • 下载aliyun的repo源
      • 下载Docker
      • 配置加速器
    • Docker基本操作
      • 拉取镜像
        • Ubuntu
        • Centos
      • 创建两个容器
      • 容器的停止/重启
      • 查看容器
      • 退出容器
        • 交互式
        • 非交互式
      • 查看容器内部信息
      • 查看Docker相关命令帮助
        • docker run
        • docker image
    • Docker save与Docker export的区别
      • 示例
    • Docker的网络模式
      • bridge
      • host
      • container
      • none

Docker

yum在线安装

安装yum-utils

用于支持yum-config-manager 命令

下载aliyun的repo源

[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

下载Docker

[root@localhost ~]# yum install docker-ce
#查看是否安装好
[root@localhost ~]# systemctl status docker.service 
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)Active: inactive (dead)Docs: https://docs.docker.com

配置加速器

(1)从2017年6月9日起,Docker 官方提供了在中国的加速器,以解决墙的问题。不用注册,直接使用 加速器地址:https://registry.docker-cn.com 即可。

(2)中国科技大学的镜像加速器: 中科大的加速器不用注册,直接使用地址 https://docker.mirrors.ustc.edu.cn/ 配加速器即可。进一步的信息可以访问: http://mirrors.ustc.edu.cn/help/dockerhub.html?highlight=docker。

(3)阿里云加速器: 注册阿里云开发账户(免费的)后,访问这个链接就可以看到加速器地址: https://cr.console.aliyun.com/#/accelerator。

#这里用中科大的源
[root@localhost ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

Docker基本操作

拉取镜像

Ubuntu

#搜索镜像
[root@docker ~]# docker search ubuntu
NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                           Ubuntu is a Debian-based Linux operating sys…   16295     [OK]       
#OFFICIAL 表示官方镜像
#拉取镜像
[root@docker ~]# docker pull ubuntu

Centos

[root@docker ~]# docker pull centos
#列出本地镜像
[root@docker ~]# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mysql        5.7       c20987f18b13   20 months ago   448MB
httpd        latest    dabbfbe0c57b   20 months ago   144MB
ubuntu       latest    ba6acccedd29   22 months ago   72.8MB
centos       latest    5d0da3dc9764   23 months ago   231MB

创建两个容器

docker run 创建容器并启动,也可以使用create 然后再 start启动。

[root@docker ~]# docker run --name os1 -d -it centos:latest /bin/bash
[root@docker ~]# docker run --name os2 -d -it ubuntu:latest /bin/bash
[root@docker ~]# docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES
9b6e62cba175   ubuntu:latest   "/bin/bash"   5 seconds ago    Up 4 seconds              os2
1eabe2af703a   centos:latest   "/bin/bash"   37 seconds ago   Up 36 seconds             os1

容器的停止/重启

[root@docker ~]# docker stop os1
os1
[root@docker ~]# docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS         PORTS     NAMES
9b6e62cba175   ubuntu:latest   "/bin/bash"   2 minutes ago   Up 2 minutes             os2
#这里也可用使用容器ID来替代名字
[root@docker ~]# docker restart os1
os1
[root@docker ~]# docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS         PORTS     NAMES
9b6e62cba175   ubuntu:latest   "/bin/bash"   3 minutes ago   Up 3 minutes             os2
1eabe2af703a   centos:latest   "/bin/bash"   4 minutes ago   Up 2 seconds             os1

查看容器

#用于查看已在运行的容器
[root@docker ~]# docker ps#查看所有已创建的容器
[root@docker ~]# docker ps -a

退出容器

交互式

[root@docker ~]# docker exec -it os1 /bin/bash
[root@1eabe2af703a /]# exit
exit

非交互式

[root@docker ~]# docker exec -it os1 /bin/bash
#然后另起一个终端
[root@docker /]# docker stop os1

查看容器内部信息

[root@docker ~]# docker inspect os1/ID

查看Docker相关命令帮助

docker run

[root@docker ~]# docker run --help

docker image

root@docker ~]# docker image --help

以此类推create、exec、start、stop等都可以此方法查看相应得语法及参数。

Docker save与Docker export的区别

docker save保存的是镜像(image),docker export保存的是容器(container)

示例

#导出镜像
[root@docker ~]# docker save centos:latest -o centos:latestV1.tar
#加载镜像
[root@docker ~]# docker load -i centos:latestV1.tar 
#导出容器
[root@docker ~]# docker export os1 -o containerCentOS1.tar
#载入容器,但载入后只能恢复为镜像
[root@docker ~]# docker import containerCentOS1.tar

所以,docker save 与docker load一起使用,docker export与docker import 使用。

Docker的网络模式

Docker分别有四种网络模式。

[root@docker ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
b77bf711431b   bridge    bridge    local
e9eb282b43f1   host      host      local
b51c040ec354   none      null      local

bridge

该模式可以理解为NAT模式;当docker服务安装好之后便会在宿主机上创建一张网卡,那么该网卡就是容器的网关;创建容器时不指定模式默认使用bridge模式。

#宿主机网卡及IP
[root@docker ~]# ip addr | grep docker 
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
17: vethe8c9633@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
#容器网卡及IP
[root@docker ~]# docker inspect os2 | grep -i ipaddress"SecondaryIPAddresses": null,"IPAddress": "172.17.0.3","IPAddress": "172.17.0.3",
#容器网关地址
[root@docker ~]# docker inspect os2 | grep -i gateway"Gateway": "172.17.0.1","IPv6Gateway": "","Gateway": "172.17.0.1","IPv6Gateway": "",

host

该模式是将宿主机的IP与端口等同时作为容器的IP地址与端口使用;即容器不再虚拟出自己的IP与端口。

演示

[root@docker ~]# docker run -d -it --name os1 --network host centos:latest /bin/bash
#查看容器信息
[root@docker ~]# docker inspect os1 | grep -i ipaddress"SecondaryIPAddresses": null,"IPAddress": "","IPAddress": "",
[root@docker ~]# docker inspect os1 | grep -i gateway"Gateway": "","IPv6Gateway": "","Gateway": "","IPv6Gateway": "",
#进入容器内部查看
[root@docker ~]# docker exec -it os1 /bin/bash
[root@docker /]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:1d:c5:f6 brd ff:ff:ff:ff:ff:ffinet 192.168.110.145/24 brd 192.168.110.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::108a:4d22:ab15:ea33/64 scope link noprefixroute valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:f4:0b:5b:35 brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft foreverinet6 fe80::42:f4ff:fe0b:5b35/64 scope link valid_lft forever preferred_lft forever
17: vethe8c9633@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default link/ether 12:70:d8:23:03:7b brd ff:ff:ff:ff:ff:ff link-netnsid 1inet6 fe80::1070:d8ff:fe23:37b/64 scope link valid_lft forever preferred_lft forever
[root@docker /]# exit
exit

不难看出容器与宿主机使用了同样的网络

container

该模式是与一个已存在的容器绑定,共享该容器的Network Namespace。

演示

[root@docker ~]# docker run -d -it --name os3 --network container:os2 centos:latest /bin/bash
#检查
[root@docker ~]# docker exec -it os3 /bin/bash
[root@9b6e62cba175 /]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever

IP为172.17.0.3与OS2一样

none

使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网 络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息,只有lo 网络接口。需要我们自己为 Docker容器添加网卡、配置IP等。

演示

[root@docker ~]# docker run -d -it --name os1 --network none centos:latest /bin/bash
#检查
[root@docker ~]# docker exec -it os1 /bin/bash
[root@5edd67c45823 /]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/49323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HJ53 杨辉三角的变形

以上三角形的数阵&#xff0c;第一行只有一个数1&#xff0c;以下每行的每个数&#xff0c;是恰好是它上面的数、左上角数和右上角的数&#xff0c;3个数之和&#xff08;如果不存在某个数&#xff0c;认为该数就是0&#xff09;。 求第n行第一个偶数出现的位置。如果没有偶数…

2023年计算机设计大赛国三 数据可视化 (源码可分享)

2023年暑假参加了全国大学生计算机设计大赛&#xff0c;并获得了国家三等奖&#xff08;国赛答辩出了点小插曲&#xff09;。在此分享和记录本次比赛的经验。 目录 一、作品简介二、作品效果图三、设计思路四、项目特色 一、作品简介 本项目实现对农产品近期发展、电商销售、灾…

金九银十面试题之《JVM》

&#x1f42e;&#x1f42e;&#x1f42e; 辛苦牛&#xff0c;掌握主流技术栈&#xff0c;包括前端后端&#xff0c;已经7年时间&#xff0c;曾在税务机关从事开发工作&#xff0c;目前在国企任职。希望通过自己的不断分享&#xff0c;可以帮助各位想或者已经走在这条路上的朋友…

删除链表的中间节点

题目&#xff1a; 示例&#xff1a; 思路&#xff1a; 这个题类似于寻找链表中间的数字&#xff0c;slow和fast都指向head&#xff0c;slow走一步&#xff0c;fast走两步&#xff0c;也许你会有疑问&#xff0c;节点数的奇偶不考虑吗&#xff1f;while执行条件写成fast&&…

Docker 的数据管理 网络通信

目录 1.管理容器数据的方式 数据卷 数据卷的容器 2.操作命令 3.Docker 镜像的创建 1.管理容器数据的方式 数据卷 可以独立于容器生命周期存储的机制 可提供持久化 数据共享 docker run -v /var/www:/data1 --name web1 -it centos:7 /bin/bash 数据卷的容器 用来提供持久化数…

那么多优秀的自动化测试工具,而你只知道Selenium?

如今&#xff0c;作为一名软件测试工程师&#xff0c;几乎所有人都需要具备自动化测试相关的知识&#xff0c;并且懂得如何去利用工具&#xff0c;来为企业减少时间成本和错误成本。这是为什么呢&#xff1f; 在以前&#xff0c;测试人员一般都只需要扮演终端用户&#xff0c;…

「隐语小课」拆分学习之“水平拆分学习”

一、引言 拆分学习是 2018 年由 MIT 最先提出的分布式算法。本文结合该领域的相关英文文献&#xff0c;介绍水平拆分学习的基本方法&#xff0c;同时还将对比拆分模型与中心化模型、联邦模型在不同条件下模型效率和准确性。拆分学习作为主流的隐私计算学习范式之一&#xff0c…

layui tree组件取消勾选

layui(2.8.15) tree的api中&#xff0c;只有 tree.setChecked(id, idArr) 方法&#xff0c;没有取消勾选的方法。 我的需求是&#xff1a;勾选后做判断&#xff0c;如果不符合条件则取消勾选。 实现方法&#xff1a; 使用 tree的oncheck事件&#xff0c;在回调函数中做判断&…

Python学习笔记_进阶篇(二)_django知识(一)

本章简介&#xff1a; Django 简介Django 基本配置Django urlDjango viewDjango 模板语言Django Form Django 简介 Django是一个开放源代码的Web应用框架&#xff0c;由Python写成。采用了MVC的软件设计模式&#xff0c;即模型M&#xff0c;视图V和控制器C。它最初是被开发来…

第十一章MyBatis查询专题

返回单个Car 返回单个可以直接用Car接收返回参数 Car carCarMapper.getOne(100);返回多个Car 返回多个可以直接用List接收返回参数 List<Car> carCarMapper.getAll();用一个对象无法接受返回多个参数&#xff0c;用list可以接收返回一个参数 返回Map 如果没有合适的…

亚马逊云科技 云技能孵化营——机器学习心得

亚马逊云科技 云技能孵化营机器学习心得 前言什么是机器学习&#xff1f;机器学习如何解决业务问题&#xff1f;什么时候适合使用机器学习模型&#xff1f;总结 前言 很荣幸参加了本次亚马逊云科技云技能孵化营&#xff0c;再本期的《亚马逊云科技云技能孵化营》中&#xff0c…

LeetCode算法心得——k-avoiding 数组的最小总和(标记数组)

大家好&#xff0c;我是晴天学长&#xff0c;这是一个细节题和一部分的思维题哈&#xff01; 2) .算法思路 k-avoiding 数组的最小总和 1,填充一个1到n 的Boolean的数组 要n个数&#xff0c;但是数组大小不能确定。 所以建立1000的大小。 2.遍历筛选&#xff0c;如果数组中有这…

【力扣】70. 爬楼梯 <动态规划>

【力扣】70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. …

ansible远程执行命令

一、ansible简介 需要在一台机器上搭建ansible环境&#xff0c;且配置目的ip的密码&#xff0c;通道没有问题即可下发命令 使用的通道是ssh&#xff08;端口&#xff1a;36000&#xff09; 二、搭建细节 1、安装ansible yum install -y ansible 2、把目的ip密码写到配置…

关于chromedriver.exe一系列问题的解决办法

最新 chromedriver.exe下载地址&#xff1a;https://googlechromelabs.github.io/chrome-for-testing/#stable 下载最新版本的 chromedriver.exe 将其解压在 python.exe 同目录下&#xff0c;以及Chrome 的路径下 例如&#xff1a; C:\Program Files\Google\Chrome\Applicati…

vue2,使用element中的Upload 上传文件,自定义上传http-request上传,上传附件支持多选,多个文件只发送一次请求,代码里有注释

复制直接使用&#xff0c;组件根据multiple是否多选来返回附件内容&#xff0c;支持多选就返回数据附件&#xff0c;则返回一个附件对象。 //uploadFiles.vue<template><div><el-uploadclass"avatar-uploader"action"#":accept"accep…

微信小程序测试策略和注意事项?

一、测试前准备&#xff08;环境搭建&#xff09; 1、前端页面 微信 Web 开发者工具安装、授权测试用的微信号可预览和调试小程序 2、管理后台 配置内网测试服务器环境&#xff0c;通过 PC 端 Web 站点管理小程序前端的输出内容&#xff0c;可从开发人员获取管理账号进行测…

(2023)Linux安装pytorch并使用pycharm远程编译运行

&#xff08;2023&#xff09;Linux安装pytorch并使用pycharm远程编译运行 安装miniconda 这部分参考我这篇博客的前半部分Linux服务器上通过miniconda安装R&#xff08;2022&#xff09;_miniconda 安装r_Dream of Grass的博客-CSDN博客 创建环境 创建一个叫pytorch的环境…

springMVC 已解密的登录请求

问题描述&#xff1a; 解决方案&#xff1a; 1.对用户所输入的密码在页面进行MD5加密并反馈至密码输入框。 2. 手动生成SSL安全访问证书&#xff1b;在此不做介绍&#xff0c;相关方法可通过网上查找&#xff1b; 3. 将产品HTTP访问方式改为SSL安全访问方式&#xff1b;在Ap…

postman接口参数化设置

为什么需要参数化&#xff1f; 我们在做接口测试的过程中&#xff0c;会遇到需要测试同一个接口使用不同的数据的情况&#xff0c;如果每次去一个个填写数据就太麻烦了&#xff0c;这时我们就需要用到接口参数化&#xff0c;我们把数据单独的存放在一个文件中管理&#xff0c;…