Docker是完整的一套容器管理系统,提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术
一 .安装前准备:(需要64位操作系统 至少RHEL6.5以上的版本,强烈推荐RHEL7)
1.1 自定义yum源
cp docker-engine* /var/ftp/public
cd /var/ftp/public
createrepo .
vim /etc/yum.repos.d/docker.repo
[local_docker]
name=CentOS docker
baseurl="ftp://192.168.1.254/public"
enabled=1
gpgcheck=0
1.2 修改主机名 和静态ip
echo docker01 >/etc/hostname
vim /etc/sysconfig/network-scripts/ifcfg-eth0
.....
BOOTPROTO="static"
IPADDR="192.168.1.11"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.254"
1.3 安装
yum -y install docker-engine
查看版本 : docker version
设置开机自启动 systemctl enable docker
重启虚拟机 reboot
二.Docker镜像
在Docker中容器是基于镜像启动的,镜像是启动容器的核心,镜像采用分层设计,使用快照的COW技术,确保底层数据不丢失
Docker hub 镜像仓库
https://hub.docker.com
Docker官方提供公共镜像的仓库(Registry)
下载镜像 :docker pull rhel7
上传镜像 : docker push rhel7
导入镜像: docker load < xx.tar 查看 :docker images
到处镜像 : docker save image_name > xx.tar
查看命令帮助 :docker help 命令
搜索镜像 : docker search 关键字
启动镜像 : docker run -it 镜像的名字:标签 /bin/bash
查看镜像底层信息 : docker inspect 镜像名
删除本地镜像 : docker rmi 镜像名:标签 (注意:启动容器时删除镜像会提示错误)
重命名镜像名称(复制) : docker tag centos:latest test:test
三.容器常用命令
使用镜像启动容器 : docker run -itd centos bash (-i 交互式 -t 终端 -d 后台进程)
列出容器列表 : docker ps -a 查看所有容器列表 docker ps -aq 仅显示容器id
管理容器 : docker stop|start|restart
进入容器 : docker attach|exec
– docker attach 进入容器,exit会导致容器关闭
– docker exec 进入容器,退出时不会关闭容器
查看容器底层信息 : docker inspect 容器id
查看容器进程列表 : docker top 容器id
删除容器 : docker rm 容器id
容器另存为一个镜像 : docker commit 容器id 镜像名称:标签
自定义镜像 :Dockerfile 语法格式
– FROM:基础镜像
– MAINTAINER:镜像创建者信息
– EXPOSE:开放的端口
– ENV:设置变量
– ADD:复制文件到镜像
– RUN:制作镜像时执行的命令,可以有多个
– WORKDIR:定义容器默认工作目录
– CMD:容器启动时执行的命令,仅可以有一条CMD
举例: vim Dockerfile
FROM myos
RUN yum install -y httpd
WORKDIR /var/www/html
RUN echo "hello nsd1804" >index.html
ENV EnvironmentFile=/etc/sysconfig/httpd
EXPOSE 80
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
四. 创建私有仓库
4.1 安装registry : docker pull registry
4.2添加配置 vim /etc/docker/daemon.json
{
"insecure-registries" : ["192.168.1.10:5000"]
}
4.3 给镜像打标记 : docker tag 镜像 IP:5000/镜像:label
4.4 完成配置以后重启 docker 服务 : systemctl restart docker
4.5 启动私有仓库服务 : docker run -d -p 5000:5000 registry
4.6上传镜像 : docker push IP:5000/镜像:label
查看私有仓库有什么样的镜像 curl http://192.168.1.11:5000/v2/_catalog
查看私有仓库的镜像有什么样的标签 curl http://192.168.1.11:5000/v2/镜像名/tags/list
五. 持久化存储
docker容器不保持任何数据,重要数据请使用外部卷存储(数据持久化),容器可以挂载真实机目录或共享存储为卷
一台共享存储服务器可以提供给所有Docker主机使用共享存储服务器(NAS、SAN、DAS等)
如:
– 使用NFS创建共享存储服务器
– 客户端挂载NFS共享,并最终映射到容器中
存储卷映射 : docker run -itd -v 物理机文件夹:容器内文件夹 镜像:标签
六.Docker 网络架构
查看默认Docker创建的网络模型 : docker network list
yum -y install bridge-utils
查看网卡 : brctl show
新建Docker 子网 : docker network create --subnet=192.168.100./24 test01
启动容器,使用刚刚创建的自定义网桥 : docker run --network=test01 -id nginx
客户端访问容器内的内容 : (默认容器通过SNAT可以访问外网, 但外部网络的主机不可以访问容器内的资源,使用端口映射可以实现外部网络访问容器内的资源)
docker run -d -p 80:80 -v /var/data:/var/www/html myos:httpd