什么是Docker?
Docker:是基于Go语言实现的开源项目。
- Docker 是一个用于开发、交付和运行应用程序的开放平台。
- 它允许开发人员将应用程序及其依赖包打包到一个可移植的容器中, 然后在任何流行的 Linux 机器上运行。Docker 容器是完全隔离的, 使用沙箱机制,相互之间没有任何接口。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere” 也就是通过对应的组件的封装,分发,部署,运行等生命周期管理,是用户APP及运行环境能够做到 “一次封装,到处运行”
Docker的设计理念:构建(build)、运输(ship)、运行(running)
Docker的结构
- image镜像:docker镜像就是一个只读模板,比如,一个镜像可以包含一个完整的centos,里面仅安装apache或用户的其他应用,镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下一个已经做好的镜像来直接使用;
- container容器:docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动,开始、停止、删除、每个容器都是互相隔离的,保证安全的平台,可以把容器看做是要给简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序;
- repostory仓库:仓库是集中存储镜像文件的沧桑,registry是仓库主从服务器,实际上参考注册服务器上存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag);
- 仓库分为两种:公有仓库、私有仓库,最大的公开仓库是docker Hub,存放了数量庞大的镜像供用户下载;
国内仓库:
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://0c105db5188026850f80c001def654a0.mirror.swr.myhuaweicloud.com",
"https://5tqw56kt.mirror.aliyuncs.com",
"https://docker.1panel.live",
"http://mirrors.ustc.edu.cn/",
"http://mirror.azure.cn/",
"https://hub.rat.dev/",
"https://docker.ckyl.me/",
"https://docker.chenby.cn",
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io"
]
}
Docker安装【6步】
docker安装
第一步:安装依赖工具
yum -y install yum-utils device-mapper-persistent-data lvm2
第二步:下载镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第三步: 安装
yum makecache fast
yum -y install docker-ce
第四步: 启动
systemctl start docker
第五步:查看状态
systemctl start docker
第六步: 测试
docker run hello-world
- 安装依赖工具
yum -y install yum-utils device-mapper-persistent-data lvm2
- 下载镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装docker
yum makecache fast 【创建元数据缓存】
yum -y install docker-ce 【安装docker】
4.启动docker
systemctl start docker
5.查看docker状态为active,活动中
systemctl status docker
6.测试 docker run hello-world
发现测试失败,需要跳转到docker目录,添加一个daemon.json文件
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://0c105db5188026850f80c001def654a0.mirror.swr.myhuaweicloud.com",
"https://5tqw56kt.mirror.aliyuncs.com",
"https://docker.1panel.live",
"http://mirrors.ustc.edu.cn/",
"http://mirror.azure.cn/",
"https://hub.rat.dev/",
"https://docker.ckyl.me/",
"https://docker.chenby.cn",
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io"
]
}
systemctl restart docker 重启docker服务:
docker info 查看镜像仓是否生效:
再次执行:
docker run hello-world
输出Hello from Docker!说明安装成功!
Docker镜像
获取镜像:
docker pull 镜像名称
查看本地所有的镜像:
docker images
删除本地镜像
docker rmi 镜像标识id
获取nginx镜像:
查看本地所有镜像:
删除本地镜像:
docker安装nginx:
docker安装mysql:
查看docker中的镜像:
删除镜像:
删除nginx镜像:
Docker容器
运行容器:
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像的标识
参数解释:-d 代表后台执行-p 将当前Linux的端口和容器的端口号进行映射--name 容器的名字
查看正在运行的容器:
docker ps -qa
参数解释 :-a 所有容器(包括没有运行的容器)-q 只查看标识
停止容器运行:
docker stop 容器标识
启动容器:
docker start 容器标识
删除容器: (只能删除停止运行的容器)
docker rm 容器标识
docker rm -f 容器标识 (强制删除容器,(即使是运行中的)
启动docker中的nginx:
关闭nginx:
启动nginx:
删除docker容器:
不能删除正在运行的docker容器,除非强制删除;
Docker安装nginx
1.获取镜像
docker pull nginx
2. 创建容器并运行
docker run --name=my-nginx -p 80:80 -d 镜像编号
3. 测试
使用浏览器
docker run -d --name=my-nginx -p 12345:80 605c77e624dd
docker ps docker ps 是 Docker 命令行工具中用于列出当前正在运行的容器的一个命令
Docker部署nginx并访问网页
以下是 Nginx 在 Linux Docker 中的常见目录结构:
/etc/nginx: 存放 Nginx 的配置文件。
/var/log/nginx: 存放 Nginx 的日志文件。
/usr/share/nginx/html: 存放 Nginx 的静态资源文件。
查看nginx的配置文件
docker exec my-nginx cat /etc/nginx/nginx.conf
将网站部署到docker中的nginx
docker cp 宿主机的网址目录 docker中的nginx名或id:/usr/share/nginx/html/
docker cp ./qq my-nginx:/usr/share/nginx/html/
Dockerfile:
Dockerfile文件:
# 获取nginx镜像
FROM nginx:latest
# 将本地的nginx文件拷贝到nginx的配置目录中
COPY nginx.conf /etc/nginx/conf.d/default.conf
# 将本地的html项目拷贝到nginx目录中
COPY ./html /usr/share/nginx/html
# 开放80端口
EXPOSE 80
nginx.conf文件:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
创建html文件夹,写入一个html页面:
创建docker镜像:
访问: