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 安装及应用
2.2.1 安装
环境准备
[root@kubernetes ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
更新yum源
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum install docker-ce-18.09.7-3.el7
启动
systemctl start docker
docker -v
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
916022e180d8a357b4f70a8b71f3a05e7dad21a1a8be7053451698ca2adfb145
5 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 nginx
7.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