Docker容器
这个暑假有幸找到了电信公司的实习。我所在的部门分管的是云计算,因此除了了解相关的云产品及其功能外,还了解到了一些技术构成,例如虚拟化技术等。
在师傅的介绍下,有幸了解到了docker这个容器。Docker相比较于虚拟机,没有Hypervisor(虚拟机管理系统),而是用Docker进程守护来管理每一个容器,它相当于一个运行在后台的进程。并且每个容器无需运行一个Guest OS,所以有着占用系统资源少,启动快的优点。但是,由于缺少了虚拟化CPU这个步骤,所有容器是共用CPU的资源的,所以在隔离性这一方面,Docker是要比虚拟机差的。在使用方面,虚拟机适用于隔离不同的用户,而容器则适合用来彻底隔离完全不同的应用,如前端、数据库等。
Docker的安装和使用我都是在CentOS 7 环境下操作
1.Docker安装
yum install docker-io -y
2.设置开机启动
service docker start
3.使用腾讯云提供的国内镜像资源来加速访问Docker Hub
echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker systemctl daemon-reload service docker restart
4.下载CenOS镜像
docker pull centos
可以查看已经安装的镜像
docker images
5.生成一个以镜像为模版的容器
docker run -it centos /bin/bash
使用bash shell
之后就进入了容器当中,可以像操作常规服务器一样操作容器
6.Docker容器的其他基本操作
docker [命令名] --help 查看命令介绍 docker run 创建并启动一个容器,在run后面加上-d参数,则会创建一个守护式容器在后台运行。 docker ps -a 查看已经创建的容器 docker ps -s 查看已经启动的容器 docker start con_name 启动容器名为con_name的容器 docker stop con_name 停止容器名为con_name的容器 docker rm con_name 删除容器名为con_name的容器 docker rename old_name new_name 重命名一个容器 docker attach con_name 将终端附着到正在运行的容器名为con_name的容器的终端上面去,前提是创建该容器时指定了相应的sh 执行这个命令后,按下回车键,会进入容器的命令行Shell中。 docker logs con_name 获取容器名为con_name的容器日志 docker inspect 查看容器的详细信息 docker top con_name 查看容器名为con_name的容器内部的进程 docker exec 可以用来在容器中运行一个进程
Docker的特点就是它能将不同的应用隔离开来,因为每个Container都可以有不同的依赖。我们还可以在一个容器中部署好环境之后,把它打包成一个新的镜像,之后我们到了另外一个环境中,只要基于docker安装这个镜像,就能快速部署这个环境。
1.先基于上面创建的容器,安装apache服务器
[root@67096e40b7a1 /]# yum install apache
2.退出容器,执行打包命令
[root@VM_0_7_centos ~]# docker commit -m "apache" -a "goto" 67096e40b7a1 goto/centos
3.查看docker中的镜像
[root@VM_0_7_centos ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE goto/centos latest 8cbe9c410cbb 2 minutes ago 319 MB docker.io/centos/diy git 90f24856ac30 About an hour ago 339 MB docker.io/hello-world latest 2cb0d9787c4d 9 days ago 1.85 kB docker.io/centos latest 49f7960eb7e4 6 weeks ago 200 MB
第一个就是刚刚创建的镜像
4.使用镜像创建新建容器
[root@VM_0_7_centos ~]# docker run -it goto/centos /bin/bash
[root@8a007aa50100 /]# httpd --v
5.这个容器包含httpd相关配置文件
[root@8a007aa50100 httpd]# ls conf conf.d conf.modules.d logs modules run