什么是docker:docker是一套完整的容器管理系统
容器技术的核心有以下几个内核技术组成:
1. CGroups(Control Groups)-资源管理
2. NameSpace-进程隔离
3. SELinux安全
Docker优点
1. 相比于传统的虚拟化技术,容器更加简洁高效
2. 传统虚拟机需要给每个VM安装操作系统
3. 容器使用的共享公共库和程序
Docker的缺点
1. 容器的隔离性没有虚拟化强
2. 共用Linux内核,安全性有先天缺陷
3. SELinux难以驾驭
4. 监控容器和容器排错是挑战
部署Docker
1. 需要64位的操作系统,可用qemu-img快速生成前端盘,内存至少4G
2. linux的版本至少为6.5以上的版本,6.5有很多的bug,强烈推荐7及以上
3. 关闭防火墙
4. 软件包列表:docker-engine,docker-engine-selinux,直接yum安装,会需要依赖包,建议挂载centos镜像
5. 注意需要修改成为静态IP地址
6. 启动docker systemctl start docker
systemctl enable docker
7. 重启虚拟机
8. 可以lsblk查看,和ifconfig查看
Docker镜像
Docker容器是基于镜像启动的,镜像是容器的核心,镜像采用分层设计,加载是采用联合加载,采用cow技术
Docker常用命令 (docker help 命令 //docker查看某个命令的帮助文档)
docker version //查看版本
docker images //查看镜像
docker search 关键字 //搜索
docker pull 镜像的名字 //下载镜像
docker push 镜像的名字 //上传镜像
docker load < xx.tar //通过tar包导入镜像文件
docker save 镜像名称:TAG名 > xx.tar //导出镜像为tar包,TAG可通过docker image查看
docker history 镜像名:TAG标签 //查看镜像制作历史
docker inspect //查看镜像底层信息(详细信息)
docker rmi 镜像名:TAG标签 //删除本地镜像(有容器就失败,需要先删除容器)
docker tag 原镜像名:标签 修改后镜像名:新标签 //修改镜像名称和标签
例:docker tag centos:latest test:v1 (相当于创建一个链接,ID还是一样的)
容器命令
docker ps 查看正在运行的docker容器列表,加-a:查看所有的
docker run -it 镜像名字:TAG标签名 镜像里面运行的命令
例:docker run -it centos:latest /bin/bash //bash就是打开终端
不写镜像里面运行的命令,就是默认命令(有些命令是交互命令。有些是非交互命令),不写TAG标签,就是默认latest标签
注意:docker容器中运行的命令其实就是运行在容器的宿主机上的,只是通过CGroup进行了隔离。虚拟机就是单独的一台机器,运行的进程并不会在宿主机上出现。
-i:交互式 如:docker run -it centos /bin/bash
-t:终端
-d:后台进程 如:docker run -d nginx 可以docker ps查看
例:docker run -itd centos //启动一个交互式的终端放入后台
启动的时候取个别名
Docker run –name xxx -it centos /bin/bash
注:如果启动一个交互式的系统,没有给它分配终端,那么会别系统识别为一个空的脚本,会立即退出
docker ps //查看容器列表
docker stop 容器的ID或者名称//关闭容器
docker start 容器的ID或者名称 //启动容器
docker restart 容器的ID或者名称 //重启容器
docker attach|exec 容器的ID或者名称 //进入某个容器,attach是连接的pid为1的进程,如果退出来那么容器就会停止消失 如果按住ctrl+p+q退出,那么容器不会消失 exec是启动一个新的命令
docker inspect 容器的ID或者名称 //查看容器底层信息(ps查看容器的ID)
-f “{{.xxx.xxx}}” //过滤某个数据下的某个数据
例:docker inspect -f "{{.NetworkSettings.IPAddress}}" abb807a5ba87
docker top 容器的ID或者名称 //查看容器进程列表
docker rm 容器的ID或者名称 //删除容器
例:docker rm `docker ps -aq` 删除所有的容器
Dockerfile(自定义镜像制作脚本)
使用Dockerfile工作流程,mkdir的dockerfile工作目录
1. mkdir build; cd build
2. vim Dockerfile
3. docker build -t imagename Dockerfile所在的文件夹
Dockerfile语法格式
1. FROM:基础镜像 例FROM centos
2. MAINTAINER:镜像创建者信息 例
3. EXPOSE:开放的端口
4. ENV:设置变量
5. ADD:复制文件到镜像 例:ADD a.repo(必须放在dockerfile工作目录) /etc/yum.repos.d/a.repo(容器中的命令)
6. RUN:制作镜像时执行的命令,可以有多个 例:RUN yum -y install xxx(镜像里面执行的命令)
7. WORKDIR:定义容器默认工作目录
例:WORKDIR /var/www/html/ 目录切换到html下了,RUN cd xxx 切换了后断开就没了
8. CMD:容器启动时执行的命令,仅可以有一条CMD
例: CMD [“全路径命令”,“选项”]
CMD [“/usr/bin/python”] //进入后默认启动python
创建镜像步骤
1.先创建一个文件夹,然后cd进入
2.Vim Dockerfile 注意:这个文件必须这个名字,并且首字母大写
3.在文件中写入修改镜像的内容
FROM centos:latest
RUN rm -rf /etc/yum.repos.d/*
ADD a.repo /etc/yum.repos.d/a.repo
RUN yum -y install net-tools psmisc lftp iproute vim
4.在这个目录中执行命令
docker build -t 创建的名称:标签 .(dockerdile所在的目录,当前目录就用.表示)
例:docker build -t myos1:latest .
5.docker images 可以查看到自己创建的镜像
自定义私有仓库
1.先在有安装docker服务的主机上创建一个装镜像的仓库
Vim /etc/docker/daemon.json
{
"insecure-registries" : ["仓库主机的IP:5000"]
}
例:"insecure-registries" : ["192.168.1.5:5000"]
2.重启docker服务
Systemctl restart docker
3.启动这个私有仓库服务
docker run -d -p 5000:5000 registry
3.给需要上传的镜像打一个标记
docker tag 镜像名:TAG标签 192.168.1.5:5000/镜像名:TAG标签
例子:docker tag busybox:latest 192.168.1.5:5000/busybox:latest
注意:需要上传哪个就给哪个镜像打上标签
4.上传镜像到仓库
docker push 标签名:TAG标签
例:docker push 192.168.1.5:5000/busybox:latest
注意:有大小显示,有进度条表示成功
5.客户机配置私有的镜像源
A.配置daemon.json
Vim /etc/docker/daemon.json
{
"insecure-registries" : ["仓库源主机的IP:5000"]
}
例:"insecure-registries" : ["192.168.1.5:5000"]
B.重启docker服务 systemctl restart docker
C.远程启动容器
docker run -it 192.168.1.5:5000/busybox:latest /bin/sh
6.客户端查看私有仓库有什么镜像(在浏览器中)
查看镜像:IP地址/v2/_catalog
curl http://192.168.1.10:5000/v2/_catalog
查看某个镜像有什么标签:IP地址/v2/镜像名/tags/list
P l http://192.168.1.10:5000/v2/myos/tags/list
持久化存储(将真实的目录映射到容器中的目录)
docker容器不保持任何数据
重要数据请使用外部卷存储(数据持久化)!!!
容器可以挂载真实机目录或共享存储为卷!!!
将真实的目录挂在到容器中提供持久化存储!!!
docker run -v 真实机的目录:容器中的目录 -it centos /bin/bash
例:docker run -v /abc:/var/www/html/ -it centos /bin/bash
注意:如果容器中的目录不存在,那么会自动生成一个目录
未经允许不得转载:天府数据港官方信息博客 » Docker的简单使用
客官点个赞呗! (0)