docker是一种容器,轻量级虚拟化技术,可以将系统/应用/代码打包到一个可移植的容器中。
容器:可以将若干进程禁锢起来运行。就像集装箱。
码头工人docker:负责集装箱的管理和搬运工作。
docker可以隔离:文件系统、用户和组、设备网络。
镜像和容器
镜像是用来创建并且启动容器的文件系统。
镜像文件系统包含容器启动时需要的命令工具、依赖包、应用APP等。
docker会把需要的用户程序、依赖包开机需要的启动的服务打包为tar格式的镜像文件,这些镜像文件是创建并启动容器的基础。
docker镜像可以分层 增加,镜像是只读的,使用镜像启动了一个容器时,容器就是镜像启动后的一个实例。
创建docker yum源
[docker]
name=docker
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
yum -y install docker-engine 的主要目的是可以让我们启动和管理容器
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
启动一个容器需要docker镜像
docker version 查看docker版本
systemctl start docker.service 启动docker服务
systemctl enable docker.service 设置docker开启自启动
systemctl status docker.service 查看服务状态
docker info 查看docker信息
启动一个容器需要docker镜像
docker pull hello-world 去docker hub(docker官网)下载一个镜像
docker run hello-world 启动一个镜像
显示以下信息表示docker已经正常工作
Hello from Docker!
This message shows that your installation appears to be working correctly.
容器:
docker images 查看镜像
docker run -itdp centos bash (i交互模式,t伪终端 d守护进程 p将docker和物理机端口绑定 ) 启动centos镜像,打开一个bash程序。
docker run -id centos 使用centos镜像启动容器
根据容器ID进入容器
docker exec -it 72 bash 进入容器
docker ps 查看容器
docker inspect 16 查看容器底层信息
docker top 容器ID全称/简称 查看容器运行的进程列表
exit 关闭容器,停止
dcoker pa -a 查看所有容器
docker ps 查看运行的容器
docker top 72 查看容器内运行的程序
镜像制作:
Dockerfile:可以制作镜像,镜像可以用来启动docker容器。
docker启动容器的shell/echo之类的不常驻内存的进程,exit后容器自动消亡。
Dockerfile的编写格式
From centos (基础镜像,所以操作的基础)
MAINTAINER zhanggen zhanggen@le.com(镜像作者和邮箱)
WORKDIR /tmp (指定使用该镜像启动容器后,默认的工作目录。)
ADD boot /dockerfile(把当前真实机的目录boot 打包到镜像里面/dockerfile目录下)
EXPOSE 80 开启端口
RUN mkdir /dockerfile/ (运行的命令)
ENV = Jacob (设置变量)
CMD echo "test"(启动容器后自动执行该命令,类似开机自启动程序。)
ENTRYPOINT ["http","-DFOREGROUND"] (和CMD类似但是entrypoint 在运行容器时添加了参数也不会被覆盖掉,-DFOREGROUND" 永不退出)
dock historyer centos 查看打包过程
docker build -t testimage . (使用dockerbuild 创建一个镜像,会启动一个容器)
-t testimage指定名称 .读取当前目录下dockerfile文件
docker inspect 查看docker的底层信息
镜像传播
docker save nginx > nginx.tar (将镜像打成tar包)发送
docker load < nginx.tar 将传过来的tar包制作成镜像文件
端口映射
docker run -d -p 8080:80 nginx
开启nginx容器,将主机8080端口映射到容器的80端口
目录映射:docker容器中的数据是临时的,所有需要目录映射
dcoker run -d -v /html/ : /html 74 (注意需要关闭selinux)
将服务器的 目录 挂载到 容器
进入容器:
docker exec -it 72 bash 进入容器
关闭容器
docker stop 容器名 停止容器
docker restart 容器 重启容器
docker rm 容器 删除容器数据
docker rm 'docker ps -'aq'删除全部容器
docker rmi 镜像名称/id 删除镜像
创建镜像
第一种方式:在现有容器上部署想要的业务,完成后将容器打包成镜像,在通过镜像启动新容器。
docker commit -a 'zhanggen' -m "test imge" 72e test
作者 注释 使用的容器名称 要创建的镜像名称
docker run -id test 使用test创建一个容器
name space: 通过一个网桥的各个端口将各个name space(隔离空间)连接起来
创建隔离空间(name space): ip netns add namespace1 netns add namespace1
查看隔离空间中的IP地址:ip netns exec namespace1 ip a s
创建虚拟网卡和虚拟网桥端口:ip link add veth2 type veth peer name br-port2
将创建好的虚拟网卡加入隔离空间:ip link set veth1 netns namespace1
查看隔离空间中的网卡设备:ip netns exec namespace2 ip a s
给隔离空间中的网卡设备设IP:
centos6.5安装docker需要升级内核
更新下载EPELyum源
wget http://www.hop5.in/yum/el6/hop5.repo
yum install kernel-ml-aufs kernel-ml-aufs-devel
/etc/grub.conf,设置default=0
docker依赖包
yum upgrade device-mapper-libs
修改网卡配置
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
容器:可以将若干进程禁锢起来运行。就像集装箱。
码头工人docker:负责集装箱的管理和搬运工作。
docker可以隔离:文件系统、用户和组、设备网络。
镜像和容器
镜像是用来创建并且启动容器的文件系统。
镜像文件系统包含容器启动时需要的命令工具、依赖包、应用APP等。
docker会把需要的用户程序、依赖包开机需要的启动的服务打包为tar格式的镜像文件,这些镜像文件是创建并启动容器的基础。
docker镜像可以分层 增加,镜像是只读的,使用镜像启动了一个容器时,容器就是镜像启动后的一个实例。
创建docker yum源
[docker]
name=docker
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
yum -y install docker-engine 的主要目的是可以让我们启动和管理容器
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
启动一个容器需要docker镜像
docker version 查看docker版本
systemctl start docker.service 启动docker服务
systemctl enable docker.service 设置docker开启自启动
systemctl status docker.service 查看服务状态
docker info 查看docker信息
启动一个容器需要docker镜像
docker pull hello-world 去docker hub(docker官网)下载一个镜像
docker run hello-world 启动一个镜像
显示以下信息表示docker已经正常工作
Hello from Docker!
This message shows that your installation appears to be working correctly.
容器:
docker images 查看镜像
docker run -itdp centos bash (i交互模式,t伪终端 d守护进程 p将docker和物理机端口绑定 ) 启动centos镜像,打开一个bash程序。
docker run -id centos 使用centos镜像启动容器
根据容器ID进入容器
docker exec -it 72 bash 进入容器
docker ps 查看容器
docker inspect 16 查看容器底层信息
docker top 容器ID全称/简称 查看容器运行的进程列表
exit 关闭容器,停止
dcoker pa -a 查看所有容器
docker ps 查看运行的容器
docker top 72 查看容器内运行的程序
镜像制作:
Dockerfile:可以制作镜像,镜像可以用来启动docker容器。
docker启动容器的shell/echo之类的不常驻内存的进程,exit后容器自动消亡。
Dockerfile的编写格式
From centos (基础镜像,所以操作的基础)
MAINTAINER zhanggen zhanggen@le.com(镜像作者和邮箱)
WORKDIR /tmp (指定使用该镜像启动容器后,默认的工作目录。)
ADD boot /dockerfile(把当前真实机的目录boot 打包到镜像里面/dockerfile目录下)
EXPOSE 80 开启端口
RUN mkdir /dockerfile/ (运行的命令)
ENV = Jacob (设置变量)
CMD echo "test"(启动容器后自动执行该命令,类似开机自启动程序。)
ENTRYPOINT ["http","-DFOREGROUND"] (和CMD类似但是entrypoint 在运行容器时添加了参数也不会被覆盖掉,-DFOREGROUND" 永不退出)
dock historyer centos 查看打包过程
docker build -t testimage . (使用dockerbuild 创建一个镜像,会启动一个容器)
-t testimage指定名称 .读取当前目录下dockerfile文件
docker inspect 查看docker的底层信息
镜像传播
docker save nginx > nginx.tar (将镜像打成tar包)发送
docker load < nginx.tar 将传过来的tar包制作成镜像文件
端口映射
docker run -d -p 8080:80 nginx
开启nginx容器,将主机8080端口映射到容器的80端口
目录映射:docker容器中的数据是临时的,所有需要目录映射
dcoker run -d -v /html/ : /html 74 (注意需要关闭selinux)
将服务器的 目录 挂载到 容器
进入容器:
docker exec -it 72 bash 进入容器
关闭容器
docker stop 容器名 停止容器
docker restart 容器 重启容器
docker rm 容器 删除容器数据
docker rm 'docker ps -'aq'删除全部容器
docker rmi 镜像名称/id 删除镜像
创建镜像
第一种方式:在现有容器上部署想要的业务,完成后将容器打包成镜像,在通过镜像启动新容器。
docker commit -a 'zhanggen' -m "test imge" 72e test
作者 注释 使用的容器名称 要创建的镜像名称
docker run -id test 使用test创建一个容器
name space: 通过一个网桥的各个端口将各个name space(隔离空间)连接起来
创建隔离空间(name space): ip netns add namespace1 netns add namespace1
查看隔离空间中的IP地址:ip netns exec namespace1 ip a s
创建虚拟网卡和虚拟网桥端口:ip link add veth2 type veth peer name br-port2
将创建好的虚拟网卡加入隔离空间:ip link set veth1 netns namespace1
查看隔离空间中的网卡设备:ip netns exec namespace2 ip a s
给隔离空间中的网卡设备设IP:
centos6.5安装docker需要升级内核
更新下载EPELyum源
wget http://www.hop5.in/yum/el6/hop5.repo
yum install kernel-ml-aufs kernel-ml-aufs-devel
/etc/grub.conf,设置default=0
docker依赖包
yum upgrade device-mapper-libs
修改网卡配置
vim /etc/sysctl.conf
net.ipv4.ip_forward=1