1.简介
docker是内核虚拟化,直接运行在系统层面,提高系统资源利用率
docker遵守不可变技术
1.1 docker组成
docker基于硬件和网络,操作系统后,是docker服务,而虚拟化是虚拟操作系统
docker有较高的隔离性,但是相比虚拟化,不彻底隔离,虚拟化彻底隔离(docker甚至有一些部分不隔离,如用户空间)
虚拟化部署复杂,管理完整但是复杂,操作复杂.docker部署简单,操作简单,管理为单进程(前台启动服务,前台挂了,服务也挂了)管理方便简单
docker轻量级服务.一个镜像mb级别 .而虚拟化GB级别
docker是隔离进程,而虚拟化技术是隔离操作系统
1.2 docker改变了什么
简化了配置服务
代码流水线管理
快速部署
面向产品: 产品交付(更快速的交付)
面向开发: 简单化配置(更快速使用环境)
面向测试: 多版本测试
面向运维: 环境一致性
面向架构: 自动扩容(微服务)
2.docker安装
2.1环境准备
[root@lb02 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@lb02 ~]# uname -r 3.10.0-862.3.2.el7.x86_64
2.2安装及应用
yum install docker -y systemctl start docker systemctl status docker
3.daocker
3.1镜像
3.1.1查看镜像
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE
3.1.2查询镜像
[root@docker ~]# docker search centos
3.1.3获取镜像
[root@docker ~]# docker pull centos
3.1.4删除镜像启动镜像后无法删除)
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/centos latest d123f4e55e12 6 days ago 196.6 MB [root@docker ~]# docker rmi d123f4e55e12
3.1.5 启动镜像
(格式:docker命令 选项参数 镜像名 执行命令)
( -t? 伪终端 -i? 开放输入)
[root@docker ~]# docker run --name mydocker -t -i centos /bin/bash [root@2374fe85e0f0 /]#
4.docker基础操作
4.1 退出重新启动
[root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2374fe85e0f0 centos "/bin/bash" 3 hours ago Exited (0) 2 hours ago mydocker [root@docker ~]# docker start mydocker mydocker [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2374fe85e0f0 centos "/bin/bash" 3 hours ago Up 7 seconds mydocker
4.2进入容器方法
4.2.1最佳
[root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2374fe85e0f0 centos "/bin/bash" 3 hours ago Up 13 seconds mydocker [root@docker ~]# docker inspect -f "{{ .State.Pid }}" mydocker 14266 [root@docker ~]# nsenter -t 14266 -m -u -i -n -p [root@2374fe85e0f0 /]# exit exit [root@docker ~]# docker exec -it mydocker /bin/bash [root@2374fe85e0f0 /]# exit
4.2.2 删除容器
#-f 停止容器,并删除
[root@docker ~]# docker rm -f mydocker
#run --rm? 启动容器执行内容后 退出并删除
[root@docker ~]# docker run --rm centos /bin/echo "123" 123
#快速删除所有容器:
[root@docker ~]# docker rm -f $(docker ps -a -q ) 9146f7e26188 a13519f0377c c5b0041b7213
4.3容器后台运行
[root@docker ~]# docker run -d nginx 916022e180d8a357b4f70a8b71f3a05e7dad21a1a8be7053451698ca2adfb1455?docker 网络
?端口映射:
?把docker Nginx 80端口映射到本地81端口
[root@docker ~]# docker run -d -p 192.168.184.128:81:80 --name myngix nginx 24d2dcf2d90d1a0db40342c76988387cd5474e0ed390a20a86115c6901410461 [root@docker ~]# docker port myngix 80/tcp -> 192.168.184.128:81
多端口映射
[root@docker ~]# docker run -d -p 443:443 -p 80:82 --name mynginx nginx 9707e898f6eea0169623716f51eab2028497a85f6a80c122c01cff540eea1d23 [root@docker ~]# docker port mynginx 82/tcp -> 0.0.0.0:80 443/tcp -> 0.0.0.0:443
6.docker数据管理
6.1数据卷
[root@docker ~]# docker run -d --name nginxV1 -v /data nginx 6cd92fe83e6c1604bf18f0d0a80e952b79eaa3c5fa1d546da1d5b40f87707d7b [root@docker ~]# sh docker_in.sh nginxV1
6.2 数据卷容器
[root@docker ~]# docker run -d -v /data/nfs-data:/data --name nfs-test nginx 9146f7e26188cb33818fc264e726a26a3b005781550ae6ce87c61565daf1315c [root@docker ~]# docker run -it --rm --volumes-from nfs-test centos /bin/bash
7.构建镜像
7.1手动
[root@docker ~]# docker run --name mynginx -it centos yum install wget -y wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum install nginx -y vi /etc/nginx/nginx.conf daemon off; exit [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fea0f02517db centos "/bin/bash" 10 minutes ago Exited (0) 29 seconds ago mynginx [root@docker ~]# docker commit -m "My Nginx" fea0f02517db www/mynginx:V1 sha256:01ea2e767fe86e2f017a8c627641a28b64e0141a8e994fe5436e26693643225e [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE www/mynginx V1 01ea2e767fe8 About a minute ago 380.4 MB [root@docker ~]# docker run --name mynginxv1 -d -p 81:80 www/mynginx:V1 nginx7.2??dockfile 自动创建
创建docker目录,docker会自动找到docker目录
[root@docker nginx]# mkdir -p /opt/dockerfile/nginx [root@docker nginx]# cd .
编写自动构建(开头D必须大写,才能被读到)
[root@docker nginx]# cat Dockerfile #This Dockerfile
#基础构建镜像
FROM centos
#维护者
MAINTAINER Jason.g
#执行的命令
RUN yum install wget -y RUN wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo RUN wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo RUN yum install nginx -y RUN echo "daemo off;" >>/etc/nginx/nginx.conf ADD index.html /usr/share/nginx/html/index.html EXPOSE 80 CMD ["nginx"] [root@docker nginx]docker build -t mynginx:V2 . [root@docker nginx]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mynginx V2 3fdf9835f234 2 minutes ago 382.1 MB