docker容器的使用
Docker 容器是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
二、docker容器的安装
1)安装docker和相关的依赖性
libsemanage-2.5-8.el7.x86_64.rpm libsemanage-python-2.5-8.el7.x86_64.rpm
pigz-2.3.4-1.el7.x86_64.rpm policycoreutils-2.5-17.1.el7.x86_64.rpm
policycoreutils-python-2.5-17.1.el7.x86_64.rpm
2)开启docker服务
---> systemctl start docker
3)开启docker后,系统会为docker容器分配一个ip地址。
---> ip addr
4)查看docker的信息的命令
---> docker info # docker宿主机的信息
---> docker version # 查看版本
---> docker images # 查看当前镜像
三、现有镜像的导入和使用
1)将game2048进行导入并加载
---> docker load -i game2048.tar
2)查看导入的镜像
---> docker images
3)运行game2048
---> docker run -d --name vm1 game2048 # -d表示打入后台,--name表示容器的名字
4)查看容器vm1的信息
---> docker inspect vm1 # 此时,vm1获得的ip地址在docker的网段是随机分配的
---> docker container ps # 查看启动的容器。参数-a 表示所有docker进程
5)在浏览器中访问172.17.0.2(ip为自己的私有ip,其他人是不可以访问的)
四、在网络中拉取镜像
1、首先在阿里云注册帐号
2、编辑配置文件来使用加速器
---> cd /etc/docker/
---> vim daemon.sjon
3、重启服务并拉取镜像
---> systemctl daemon-reload
---> systemctl restart docker
---> docker pull nginx # 拉取镜像(比较费时)
---> docker images nginx # 查看拉取的镜像的信息
---> docker run -d --name vm2 nginx # 运行vm2
# 此时,我们启动了httpd服务。可以使用docker inspect vm2查看nginx服务的ip
4)我们可以修改nginx的发布目录。
方法1:把发布文件拷贝到容器空间中
---> vim /tmp/index.html # 编辑发布文件
server1
---> docker cp /tmp/index.html vm2:/usr/share/nginx/html/ # 拷贝
# 此时浏览器中结果为
方法2:通过挂载的方式,这样可以直接修改发布文件。
---> mkdir -p /tmp/docker/web
---> vim /tmp/docker/web/index.html
hello world
---> docker rm -f vm2 # 删除之前建立的vm2
---> docker run -d --name vm2 -v /tmp/docker/web/:/use/share/nginx/html nginx # 把本地目录挂载在容器中
# 在浏览器中查看
5)对自己创建的容器的删除操作
---> docker kill vm2 # 关闭容器
---> docker rm vm2 # 移除自己创建容器
五、Dockerfile文件的编写(镜像的编写)
我们利用最简单的镜像rhel7来进行改造,最终封装成可以自带httpd服务的v1版本镜像
1)首先得到简单的rhel7的镜像,里面可以操作的命令比较少。
2)编写Dockerfile文件 (一边编写,一边验证)
---> vim /tmp/docker/Dockerfile
# yum源的配置文件---> vim /tmp/docker/dvd.repo
---> cd /tmp/docker
---> docker build -t rhel7.v1 .
---> docker images rhel7 # 查看rhel7镜像版本(有v1,大小为191M)
4)创建容器,并查看是否安装httpd服务