目录
一、什么是docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化。(引用百度)
Docker是一个使用Go语言开发的一个容器管理软件,运行于 Linux 和 Windows 上的软件,用于创建、管理和编排容器。(我的理解)
一个完整的docker由以下几部分组成:
-
DockerClient客户端
-
Docker Daemon守护进程
-
Docker Image镜像
-
DockerContainer容器
二、docker的基本概念
1.Docker Image镜像
Docker Image可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
通俗的讲,可以理解成一个打包好的文件,是一个程序代码,资源的软件包,相当于一个工具,用来创建容器,需要人去制作。
2.Docker Container容器
Docker Container就是运行镜像的地方,背后就是起一个进程来运行这个镜像。使用容器可以构建、共享和运行应用程序。
3.Docker Repository仓库
Docker Repository集中存放镜像的地方,Docker运行中使用的默认仓库是 Docker Hub 公共仓库
总之,镜像是 Docker 运行容器的前提,仓库是存放镜像的场所,可见镜像更是Docker的核心。
三、比较容器和虚拟机
容器和虚拟机的架构:
容器是应用层的抽象,将代码和依赖项打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器作为用户空间中的独立进程运行。
虚拟机 (VM) 是将一台服务器变成多台服务器的物理硬件的抽象。管理程序允许多个 VM 在一台机器上运行。
容器的优点:
1.启动速度快:docker的每一个容器就是一个进程。
2.资源消耗小:资源可以有效的控制
3.扩展方便:自动扩容
容器的缺点:
1.隔离性上,应用程序的隔离没有虚拟机的彻底
2.可管理性上,docker集中化管理工具还不是成熟
3.安全性上,docker的安全性上也更弱
容器和虚拟机一起使用为部署和管理应用程序提供了极大的灵活性
四、centos系统上安装docker引擎
一、Uninstall old versions(卸载旧版本)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
二、Set up the repository(设置存储库)
安装yum-utils包(它提供yum-config-manager实用程序):
yum install -y yum-utils
设置稳定存储库(二者选其一,推荐使用第二种方法):
第一种方法,下载docker官方的yum仓库文件:
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
第二种方法,添加阿里云源文件:
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
三、Install Docker Engine(安装docker引擎)
yum install docker-ce docker-ce-cli containerd.io
四、Start Docker Engine(启动docker引擎)
开启docker:
systemctl start docker
设置开机启动docker:
systemctl enable docker
五、Test Docker Engine(测试docker引擎)
docker run hello-world
五、Ubuntu系统上安装docker引擎
一、Uninstall old versions(卸载旧版本)
sudo apt-get remove docker docker-engine docker.io containerd runc
二、Set up the repository(设置存储库)
更新apt包索引:
sudo apt-get update
安装包允许apt使用HTTPS存储库:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
添加Docker官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
设置存储库:
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
三、Install Docker Engine(安装docker引擎)
再次更新apt包索引:
sudo apt-get update
下载最新版本的docker引擎
sudo apt-get install docker-ce docker-ce-cli containerd.io
(注:Ubuntu系统安装好docker引擎,会自动启动docker)
四、Test Docker Engine(测试docker引擎)
sudo docker run hello-world
六、docker的使用
docker version 查看docker的版本
docker images 查看下载了哪些docker镜像
docker search XX(服务名) 查看有哪些xx镜像
举例:docker search nginx 表示查看有哪些nginx镜像
docker pull XX(镜像名) 下载xx镜像
举例:docker pull nginx 表示下载nginx镜像
docker rmi XX(镜像名) 删除xx镜像
doncker run 创建容器并启动容器
举例:docker run --name sc_nginx -d -p 8080:80 nginx
--name 表示容器名字
-d 表示后台运行容器
-p 表示端口映射
nginx 表示镜像名
docker ps 查看正在运行的容器
docker ps -a 查看所有的容器
docker start 容器名(或者容器id) 表示开启容器
docker stop 容器名(或者容器id) 表示停止运行的容器
docker kill 容器名(或者容器id) 表示强制关闭容器
docker rm 容器名 表示删除容器
注:正在运行的容器不能被删除
docker create 创建容器
举例:docker create --name sc_nginx -p 8080:80 nginx
这是创建了一个静态的容器,并没有运行
docker top 容器名 查看容器中运行的进程信息
docker logs 容器名 查看容器运行过程中的日志
docker container inspect 容器名 查看容器的详细信息
docker exec 表示进入容器
举例:docker exec -it sc-nginx-1 /bin/bash
-i:交互式方式进入容器
-t:开启一个终端
sc-nginx-1:容器名字
/bin/bash:进入容器执行操作的环境
注:进入容器后,exit退出容器
七、数据卷
卷就是存放数据的地方,可以映射到容器里
作用:实现容器和宿主机之间共享数据的
创建卷
docker create volume sc
表示创建一个名字为sc的卷
显示卷
docker volume ls
查看卷的详细信息
注意上图这个目录,可以将你需要共享的数据复制到这个目录下。
使用卷
docker run -d --name nginx1 -p 8880:80 --mount source=sc,target=/usr/share/nginx/html nginx:latest