*一、Docker*简介与为什么要用 **Docker
*1.1、*Docker **介绍
Docker 是一个跨平台的开源的应用容器引擎,诞生于 2013 年初,基于
Go语言
并遵从 Apache2.0 协议开源, Docker 可以把它理解成虚拟机,但是 Docker 和传统虚拟化方式有所不同:传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系 \统上再运行所需应用进程;Docker 相比传统的虚拟化技术要更轻量级,Docker 容器内的应用程序是直接运行在宿主内核中的,容器内没有自己的内核,也没有进行硬件虚拟
运行在容器上的docker的程序,直接使用的都是宿主机的硬件资源,因此在cpu、内存、利用率上,Docker将会在效率上具有更大的优势,Docker直接利用宿主机的系统内核,避免了虚拟机启动时所需要的系统引导时间和操作系统运行的资源消耗,利用Docker能够在几秒钟之内启动大量的容器,是虚拟机无法办到的。快速启动低资源消耗的优点,使Docker在弹性云平台自动运维系统方面具有很好的应用场景。容器的启动时间是秒级的,大量节约开发、测试、部署的时间,还有一个非常关键的点,Docker能够高效地部署和扩容,Docker容器几乎可以在任意平台上运行,包括虚拟机、物理机、公有云、私有云、个人电脑、服务器等,这种兼容性,可以让用户把一个应用程序从一个平台直接迁移到另外一个平台。但是,虚拟机的安全性比容器好一些,docker与宿主机共享内核、文件系统等资源,更有可能对其他容器、宿主机造成影响
因此Docker容器要比传统虚拟机占用资源更小、系统支持量更大、启动速度更快、**更容易 **
维护和扩展
**Docker官网:**https://hub.docker.com
*1.2***、为什么要使用 **Docker
除了刚才说的Docker容器要比传统虚拟机占用资源更小、系统支持量更大、启动速度更快、 更容易维护和扩展外,Docker还是世界领先的软件容器平台
(1).开发人员利用Docker快速部署调试我们的应用
(2).开发人员利用Docker可以消除协作编码时“**在我的机器上可正常工作,其他机器不能正 **
常工作”的问题,Docker可以提供一致的运行环境,开发过程中一个常见的问题是环境一致
性问题,由于开发环境、测试环境、生产环境不一致,导致有些bug并未在开发过程中被发现
(3).运维人员利用Docker可以在隔离容器中并行运行和管理应用
(4).Serverless 也是基于docker 容器技术
*1.4***、学习 ****Docker **必备基础
docker 容器都是基于 linux 内核,所以学习 docker 必须具备 linux 基础,如果不会 linux 请参:
一些经常使用的linux命令,
linux内存、cpu、进程、端口、硬盘管理,
Linux 目录结构介绍
**Docker **环境要求
(1).linux 系统
使用安装docker需要的最小内核是 3.10,Centos7 和 Centos8 都能满足要求,查看内核命令: uname -r
(2).Windows
安装 docker 建议使用 win10
(3).macOS
must be version 10.14 or newer
*二、***Docker **的安装
*2.1、*Windows ****中安装 **Docker
注意:windows操作系统需要启用 Hyper-V 和适用 Linux 的子系统
Hyper-V是微软开发的虚拟机,类似于VMWare或VirtualBox,仅适用于 Windows 10,这
是 Docker Desktop for Windows所使用的虚拟机,但是,这个虚拟机一旦启用,QEMU、
VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用,如果必须在电脑上使用其
他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V
2.1.1**、下载软件包
2.1.2**、安装软件
双击软件,点击'下一步',安装即可
注意:此方法仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版
2.1.3**、运行软件
如果第一次打开提示下面错误,请下载安装 wslupdatex64.mis后重启 docker
下载 wslupdatex64.mis 安装后重启 docker
2.1.4**、镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,可以需要配置加速器来解决,可以使用阿里的镜像地址:https://02xz0m84.mirror.aliyuncs.com
在任务栏点击 Docker for mac 应用图标 -> Perferences... -> Docker Engine
{
... "registry-mirrors": ["https://02xz0m84.mirror.aliyuncs.com"]
...
}
*2.1.5**、通过运行 **hello world **映像来验证 **Docker *引擎安装是否正确
docker run hello-world
[root@localhost /]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:df5fxxx491a9e
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal. To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
*2.2、*Macos ****中安装 **Docker
2.2.1**、下载安装
如同 macOS 其它软件一样,安装也非常简单,双击下载的 .dmg 文件,然后将图标拖拽到 Application文件夹即可
从应用中找到 Docker 图标并点击运行。可能会询问 macOS 的登陆密码,输入即可
第一次点击图标,可能会看到这个安装成功的界面,点击 "Got it!" 可以关闭这个窗口
启动终端后,通过命令可以检查安装后的 Docker 版本
docker --version
2.2.2**、镜像加速
操作同windows镜像加速一致,之后可以通过 docker info 来查看是否配置成功
$ docker info
... Registry Mirrors:
http://hub-mirror.c.163.com
Live Restore Enabled: false
*2.2.3**、通过运行 **hello world **映像来验证 **Docker *引擎安装是否正确
启动 hello-world 容器
docker run hello-world
[root@localhost /]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal. To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
*2.3、*Linux ****中安装 **docker
建议使用 Centos7 或者 Centos8,Centos7 和 Centos8 用法配置都是一样的
linux 安装 docker 官方文档:https://docs.docker.com/install/linux/docker-ce/centos/
*2.3.1、Linux **中安装 **Docker *的准备工作
为了方便测试请关闭 selinux、关闭防火墙
**SELinux **防火墙的设置:
[root@localhost ~]# getenforce
Disabled
修改/etc/selinux/config 文件
将 SELINUX=enforcing 改为 SELINUX=disabled
**Firewalld **防火墙的设置:
见
【精选】CentOS8防火墙相关命令
1、firewalld 的基本使用: 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 : systemctl enable firewalld 2、firewall-cmd 的基本使用: 那怎么开启一个端口呢: firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent 永久生效, 没有此参数重启后失效) 重新载入: firewall-cmd --reload 修改 firewall-cmd 配置后必须重启 查看: firewall-cmd --zone= public --query-port=80/tcp 删除: firewall-cmd --zone= public --remove-port=80/tcp --permanent 查看所有打开的端口: firewall-cmd --zone=public --list-ports
*2.3.2、Linux Centos **中安装 *Docker
安装需要的软件包
yum install -y yum-utils
**配置 docker源 **
yum-config-manager --add-repo
https://download.docker.com/linux/centos/d
ocker-ce.repo
或者阿里云源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.re
po
yum search docker
**安装 **docker
yum install docker-ce docker-ce-cli containerd.io -y
*2.3.3 **、启动 *docker
systemctl start docker
开机启动
systemctl enable docker
**看 ****docker **状态
systemctl status docker
查看自启动
systemctl list-unit-files|grep enabled
systemctl list-unit-files | grep enabled |grep docker
**第一个 ****docker **命令
docker info
[root@localhost zph]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.7.1-docker)
scan: Docker Scan (Docker Inc., v0.12.0)
Server:
Containers: 31
Running: 2
Paused: 0
Stopped: 29
Images: 391
Server Version: 20.10.12
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc io.containerd.runc.v2 io.containerd.runtime.v1.linux
Default Runtime: runc
Init Binary: docker-init
containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc version: v1.0.2-0-g52b36a2
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 4.18.0-348.el8.x86_64
Operating System: CentOS Linux 8
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 782MiB
Name: localhost.localdomain
ID: DA45:YS5F:4YIO:2ZL3:U4YN:JISO:CWPI:W3A3:OBV3:PGDO:7ZTP:KNPX
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
**第二个命令查看 ****docker **版本
[root@localhost zph]# docker --version
Docker version 20.10.12, build e91ed57
*2.3.4**、安装指定版本的 *docker
要安装特定版本的 Docker Engine,请在 repo 中列出可用版本,然后选择并安装: 列出并排序您的存储库中可用的版本,此示例按版本号对结果进行排序,从高到低, 并被截断
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.i
o
*2.3.5、docker daemon.json *配置阿里云加速器
当需要对 docker服务进行调整配置时,不用去修改主文件 docker.service 的参数,通过
daemon.json 配置文件来管理,更为安全、合理
mkdir -p /etc/docker
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://02xz0m84.mirror.aliyuncs.com"]
}
如果没有/etc/docker 这个目录就创建这个目录,然后重新加载 daemon 重启 docker
加载配置文件
systemctl daemon-reload
systemctl restart docker
docker info
*2.3.6**、通过运行 **hello world **映像来验证 **Docker *引擎安装是否正确
启动 hello-world 容器
[root@localhost docker]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:88ec0acaa3ec199d3b7eaf73588f4518c25f9d34f58ce9a0df68429c5af48e8d
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
*2.3.7**、卸载 *docker
(1).卸载 Docker Engine、CLI 和 Containerd 包:
$ sudo yum remove docker-ce docker-ce-cli containerd.io
(2).删除所有镜像、容器和卷
主机上的映像、容器、卷或自定义配置文件不会自动删除,使用命令删除
$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd
必须手动删除任何已编辑的配置文件
*2.4***、阿里云 ****Docker **镜像加速器
访问 https://www.aliyun.com/ 搜索 “容器镜像服务”
[下一节][Docker]二.Docker 镜像,仓库,容器介绍以及详解
版权归原作者 zhoupenghui168 所有, 如有侵权,请联系我们删除。