Linux运维-陈雷雷


docker的基本使用

admin 2019-11-16 47浏览 0条评论
首页/正文
分享到: / / / /

1. docker基本使用

#yum源安装
 cd /etc/yum.repos.d/
 wget -O /etc/yum.repos.d/ali_docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
 yum clean all
 
 
#依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

#安装docker软件
yum install -y docker-ce-18.09.9-3.el7

#设置开机启动
systemctl enable docker.service
systemctl start docker.service

#检查状态.
systemctl enable docker.service

1.1 配置docker镜像加速

# 刀客镜像1 [建议使用]:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
systemctl restart docker.service

# 阿里云镜像2:
[root@master docker]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://md4nbj2f.mirror.aliyuncs.com"]
}



# docker 下载加速
https://get.daocloud.io/

#尝试pull一个镜像,会发现快了很多
docker pull nginx

#更换源必须重启docker生效.

1.2 docker命令

#镜像创建 下载 查看 删除 操作:

### 下载镜像
docker pull 镜像名       |--如: docker pull nginx   

### 查看下载的镜像
docker images           |--直接命令就可以看到当前有哪些镜像

## 删除未运行的镜像
docker rmi [镜像名]      |-- 如: docker rmi nginx   删除刚pull下来的nginx镜像

## 查看运行中的镜像[已经停止的镜像无法看到,但是可以通过 docker images 看到]
docker ps -a

##停止正在运行的镜像
docker stop [IMAGE ID]    
如: 
[root@k8s-master yum.repos.d]# docker  ps -a

注意: 镜像配置了镜像源后,docker下载镜像都会从源中获取.

# 从容器复制文件到宿主机
docker cp 

1.3 namespace隔离

namespace用于对资源的隔离,大致如下
1. UTS: 主机名和域名隔离
2. IPC: 共享内存隔离
3. PID: 进程编号隔离
4. nerwork : 网络协议隔离 IP 和 端口隔离
5. User :  用户隔离

1.4 cgroup 资源限制

如 内存使用 ,磁盘使用 CPU使用

2.0 容器镜像管理

2.1 创建容器

创建容器的思考:
	1. 如何暴露出容器服务
	2. 主机名和IP地址设置
	3. 数据是否持久化(创建后产生的数据)
	4. 镜像变量如何传入.
	5. 资源限制, cpu 内存
	
docker stats 可以看到当前状态.

docker run -d \
-p 90:80  \      ##映射端口
-name web  \     ## 容器名
-e abc=123 \     ## 变量传入
-m "500m"  \     ## 限制内存 可以用 G  m  如:  -m=1G
--cpus="1.5"     ## 最多允许的cpu数量 .5 是百分之五十.{0-1,0,1}  cpu限制一般使用这个
-cpuset-cpus     ## 限制cpu使用的核心  ""
--oom-kill-disable  ##禁用 OOM killer
-v $PWD/wwwroot:/opt   ##将容器中的 容器中的 wwwroot映射到了本地/opt目录持久化.. 

2.2 运行第一个镜像

[root@master docker]# docker run -d -p 88:80 nginx
78a1215ca93412336de1c455c83d75d47d3cc4787c3713353c940f1beb3aeae7

[root@master docker]# docker ps -a
CONTAINER ID IMAGE  COMMAND                 CREATED        STATUS        PORTS                NAMES
78a1215ca934 nginx  "nginx -g 'daemon of…"  4 seconds ago  Up 3 seconds  0.0.0.0:88->80/tcp   musing

## 进入镜像
docker exec -it [CONTAINER ID] /bin/bash

3. docker原理

3.1 namespace 资源隔离

 UTS: 实现主机和域名的隔离
 IPC: 实现共享内存段,信号和消息列队的分离
 PID: 进程隔离
 network:  网络隔离   IP 端口隔离.
 mount: 文件系统隔离
 user:  用户之间隔离

3.2 cgroups 资源限制

cgroup:  为dokcer实现资源限制, 比如cpu 内存,磁盘的资源限制

3.3 UFS 联合文件系统

联合文件系统: 就是能够将多个目录挂载成同一个文件系统
换句话说就是将多个目录挂载成同一个目录,主要特点是能从不同的文件系统中将文件挂载到虚拟的 "联合文件系统" 中,还能够把 "多个目录挂载合并成同一个目录" 这样docker能够在不修改原有的镜像同时,以最小的空间消耗对存储文件的修改

3.4 容器镜像文件修改原理.

容器会在pull的镜像中添加了一个读写层,在运行容器中,文件改动时会先从镜像里将要修改的文件复制到文件系统中的读写层中,等待修改完成后复制到镜像中替代原文件,如此一来, 基础镜像额源文件不会被修改,运行中的镜像中的文件会被修改.
换个例子 如:  一个nginx  他只有nginx.conf.default的默认配置文件, 如果你需要用nginx,你就需要将nignx.conf.defult 拷贝一份为nginx.conf或者其他的名字,你接下来网站的所有配置修改都会基于nginx.conf 而不是nginx.conf.default,在另一个网站也需要配置文件的时候它同样是 拷贝一次 nginx.conf.default为它想要的配置文件名,重新配,如此下来,无论如何修改,源文件总会是初始配置文件,被修改的只是拷贝的新文件. docker中也是同理.

注意: 如果你需要做数据持久化,你可以写成dockerfile 指定你的源目录.

4. docker images 镜像命令基础

列出本地镜像: docker image ls
列出本地镜像: docker images
列出本地全部镜像: docker images -a
列出本地nginx镜像:  docker images nginx

docker images 可选项:
docker images -a  : 列出所有镜像


docker images build : 通过dockerfile构建镜像

5. docker 创建容器基础选项

一般选项:
1. 设置主机名,IP
2. 暴露端口
3. 持久化数据, 日志,配置文件,源码等
4. 变量传入相关动作
5. 资源限制,cpu,内存等

创建容器参数解释:
-p 映射端口 -p 容器外部端口:容器内部端口
-d 后台运行
-v 挂载目录
-e 变量传入
-m "1G"  内存限制

[cpu限制常用]
--cpus="0,1"  CPU使用个数限制 只允许使用两个 [重点]
--cpus=".5"   cpu使用百分比限制 .5 表示最多使用 50% cpu  1.5 表示最多使用一个半CPU 

--cpus-shars  cpu使用权重共享分配(按照权重分配)
--oom-kill-disable   oom自动关闭配置 关闭,不配置默认开启,特别是java应用,需要关闭
--memory-swap="100m"  swap使用100m 不写指 禁用swap


说了这么多选项,下面来一个示例:
#运行一个需要命令行解析的容器示例,如: nginx
docker container  run  -d \
-p 8888:8080 \
--name  web \
-v /www:/opt \
-e abc="123456" \
-m "1G" \
--cpus="2" \
--oom-kill-disable \
lizhenliang/java-demo

6. docker运行一个基础演示镜像

运行:

访问测试:

进入查看容器中的 opt中是否有html文件

[root@master www]# docker exec -it web bash
[root@ae3561a70c8e tomcat]# ls /opt/
index.html
有这个文件就证明,文件映射到了容器中.
最后修改:2019-11-16 16:20:30 © 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

上一篇

发表评论

评论列表

还没有人评论哦~赶快抢占沙发吧~

博客信息

  • 文章数目 80
  • 标签数目 232
  • 运行天数
  • 最后活动

广告



文章目录