前言
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
一、容器介绍
容器其实是⼀种沙盒技术。顾名思义,沙盒就是能够像⼀个集装箱⼀样,把你的应用"装"起来的技术。这样,应⽤与应⽤之间,就因为有了边界⽽不⾄于相互⼲扰;⽽被装进集装箱的应⽤,也可以被⽅便地搬来搬去,这其实是 PaaS 最理想的状态。
1.1、容器简史
互联网企业生产环境的应用部署所经历的过程,大致可分三个阶段:
- 物理机部署
- 虚拟机部署
- 容器化部署
1.2、容器的成因
其⼀,这是技术演进的⼀种创新结果,其⼆,这是⼈们追求⾼效⽣产活动的⼀种⼯具。随着软件开发的发展,相⽐于早期的集中式应⽤部署⽅式,现在的应⽤基本都是采⽤分布式的部署⽅式,⼀个应⽤可能包含多种服务或多个模块,因此多种服务可能部署在多种环境中,如虚拟服务器、公有云、私有云等,由于多种服务之间存在⼀些依赖关系,所以可能存在应⽤在运⾏过程中的动态迁移问题,那这时如何保证不同服务在不同环境中都能平滑的适配,不需要根据环境的不同⽽去进⾏相应的定
制,就显得尤为重要。
二、Docker安装
Docker官方网站: https://www.docker.com/
1.1、下载Docker
1、删除已安装的docker,如果未安装可忽略
[root@localhost]# yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2、配置阿里云的docker yum源
[root@localhost]# yum install -y yum-utils device-mapper-persistent-data lvm2 git
[root@localhost]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
配置国内加速器,阿里云,按照官方提示进行配置 链接 阿里云
3、安装Docker
查看docker的版本信息
[root@localhost]# yum list docker-ce --showduplicates
可安装的软件包
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable
docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable
...
安装docker最新版
[root@localhost]# yum -y install docker-ce
4、启动Docker服务
[root@localhost]# systemctl enable docker
[root@localhost]# systemctl start docke
5、查看Docker版本及启动状态
[root@localhost]# docker -v
Docker version 20.10.2, build 2291f61
[root@localhost]# docker version
Client: Docker Engine - Community
Version: 20.10.2
API version: 1.41
Go version: go1.13.15
Git commit: 2291f61
Built: Mon Dec 28 16:17:48 2020
OS/Arch: linux/amd64
Context: default
Experimental: true
...
6、查看docker的运行状态
[root@localhost]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.2
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
...
2.2、下载docker镜像
7、下载官方镜像,已下载nginx镜像为例
在官方网站查找nginx镜像
[root@localhost]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 14340 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1947 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 802 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 140
jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho… 135
tiangolo/nginx-rtmp Docker image with Nginx using the nginx-rtmp… 111 [OK]
bitnami/nginx Bitnami nginx Docker Image 94 [OK]
alfg/nginx-rtmp NGINX, nginx-rtmp-module and FFmpeg from sou… 86 [OK]
jlesage/nginx-proxy-manager Docker container for Nginx Proxy Manager 84 [OK]
nginxdemos/hello NGINX webserver that serves a simple page co… 65 [OK]
nginx/nginx-ingress NGINX Ingress Controller for Kubernetes 47
privatebin/nginx-fpm-alpine PrivateBin running on an Nginx, php-fpm & Al… 45 [OK]
nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles 28
下载最新版nginx镜像
[root@localhost]# docker pull nginx #默认下载最新版 nginx:latest
nginx latest f6d0b4767a6c 12 days ago 133MB
查看本地镜像仓库
[root@localhost]# docker images
mysqlclient v1.1 8a1cd8bbc24a 4 days ago 39.7MB
busybox latest b97242f89c8a 11 days ago 1.23MB
redis latest 6060df96cef3 11 days ago 104MB
nginx latest f6d0b4767a6c 12 days ago 133MB
php 7.4-fpm f5460fa2369d 12 days ago 405MB
nginx alpine 629df02b47c8 5 weeks ago 22.3MB
alpine latest 389fef711851 5 weeks ago 5.58MB
centos latest 300e315adb2f 6 weeks ago 209MB
mysql/mysql-server 5.7 a9dda627da1f 3 months ago 360MB
启动nginx容器
[root@localhost]# docker run -itd nginx:latest sh
fb78d1f1e9e591ba3b6f4290cbdfaf61f8bd99e62af690ec5811b8eb10745d17
查看容器启动状态
[root@localhost]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb78d1f1e9e5 nginx "/docker-entrypoint.…" 42 seconds ago Up 41 seconds 80/tcp vigorous_rhodes
进入nginx容器
[root@localhost]# [root@docker ~]# docker exec -it fb78d1f1e9e5 sh
参考文档:
Docker 的源代码仓库: [https://github.com/moby/moby]
Docker 常见问题: https://docs.docker.com/engine/faq/
☺欢迎一起来学习交流。
网友评论