Docker 介绍
Docker是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于docker 通过操作系统层的虚拟化实现隔离,所以docker 容器在运行时不需要类似虚拟机额外操作系统开销,提高资源利用率
一.Docker 安装及基本操作 环境基于: CentOS 7 1. 安装docker的yum源 tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF 2.执行安装 #yum -y install docker-engine 3.设置开机启动 # systemctl start docker && systemctl enable docker 4.添加Docker Hub国内镜像 # 如果没有此文件,则新建一个 vi /etc/docker/daemon.json { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] } systemctl restart docker #重启docker 5.搜索镜像 #docker search centos 6.从Docker hub下载镜像到本地 #docker pull centos 7.列出所有本地镜像 #docker images 8.删除本地镜像 #docker rmi centos 9.镜像导入导出 [root@node1 ~]# docker save centos >/opt/centos.tar.gz #导出镜像 [root@node1 ~]# docker load -i /opt/centos.tar.gz #导入镜像 二.容器管理 1.启动一个新容器 [root@node1 ~]# docker run --name mycentos -t -i centos /bin/bash --name #起一个名字 -t #分配一个终端 -i #标准输入输出
2.退出容器
3.再次启动容器 [root@node1 ~]# docker ps -a [root@node1 ~]# docker start a36e3f8cf5fe
5. util-linux 管理容器进程 #yum install util-linux -y
#!/bin/bash Pid=$(docker inspect --format "{{.State.Pid}}" $1) nsenter -t $Pid -u -i -n -p #通过容器的 id查询PID 进行容器管理 #docker stop $(docker ps -a -q) #关闭正在运行的容器
三.Docker 网络访问
1. 自定义端口启动容器 [root@node1 ~]# docker run -d -p 81:80 nginx
四.Docker 数据存储
1.挂载一个数据卷 [root@node1 ~]# docker run -it --name volue-test -v /data centos 查看数据在物理机的存储位置 [root@node1 ~]# docker inspect 4baccbb8dd6e
2.挂载指定目录 [root@node1 ~]# docker run -it --name volue-test1 -v /opt:/opt:rw centos
3.挂载文件到容器 [root@node1 ~]# docker run -it -v ~/.bash_history:/.bash_history centos
4.数据卷容器
容器挂载一个目录 [root@node1 ~]# docker run -d --name nfs -v /data centos [root@node1 ~]# docker run -it --name test2 --volumes-from nfs centos
五.docker-手动构建镜像 1.启动一个容器,在容器里安装上nginx [root@node1 ~]# docker run --name mynginx -it centos
2. 提交修改过的容器 [root@node1 ~]# docker commit -m "my nginx" aed6c9b92d1d nginx/mynginx:v1 查看镜像:
3. 修改nginx设置nginx 前台运行 [root@node1 ~]# docker run -it --name nginxv1 nginx/mynginx:v1 [root@d5457d4454d2 /]# vi /etc/nginx/nginx.conf daemon off; #最上方加一条 4. 退出容器提交容器版本 [root@node1 ~]# docker ps -a [root@node1 ~]# docker commit -m "my nginx" d5457d4454d2 nginx/mynginx:v2
5. 启动修改过的镜像 [root@node1 ~]# docker run -d -p 81:80 nginx/mynginx:v2 nginx
六.Dockerfile 构建
1.Dockerfile 书写 [root@node1 ~]# mkdir /opt/nginx [root@node1 nginx]# vi /opt/nginx/Dockerfile #This docker file #VERSION #Author: Jason demo #Base image FROM centos #Mintainer #Commands RUN yum install epel-release -y RUN yum install -y nginx ADD index.html /usr/share/nginx/html/index.html RUN echo "daemon off;" >>/etc/nginx/nginx.conf EXPOSE 80 CMD ["nginx"] [root@node1 nginx]# echo "Hello Word nginx!" > /opt/nginx/index.html 2.构建镜像 [root@node1 nginx]# docker build -t nginx/mynginx:v3 /opt/nginx/
构建成功返回
[root@node1 nginx]# docker images
3.启动镜像 [root@node1 nginx]# docker run -d -p 82:80 nginx/mynginx:v3
|