centos 部署docker容器 安装 、基本使用方法(一)

实验环境: CENTOS 7.4

官方网站:https://www.docker.com/

源代码下载:https://github.com/docker/docker.github.io

安装说明 https://docs.docker.com/compose/install/#prerequisites

docker容器技术和虚拟机对比:
相同点: docker容器技术和虚拟机技术,都是虚拟化技术。
 docker相对于VM虚拟机,少了虚拟机操作系统这一层,所以docker效率比虚拟机高
 

一、安装 直接使用centos系统自带的yum源安装

yum -y install docker  

启动docker平台:

[root@146~]# systemctl start docker   #启动 docker 服务

[root@146~]# systemctl enable docker  #设置开机启动docker服务

[root@146~]# docker version    #显示 Docker 版本信息

centos 部署docker容器 安装 、基本使用方法(一)_第1张图片

查看 docker 信息(确认服务运行)显示 Docker 系统信息,包括镜像和容器数。

centos 部署docker容器 安装 、基本使用方法(一)_第2张图片

info信息中 :

 Network: bridge host macvlan null overlay #桥接到主机的 docker0 上,在物理机上执行ifconfig 可以看到 docker0 桥设备

Docker Root Dir: /var/lib/docker ##默认的 docker 的家目录

Registry: https://index.docker.io/v1/ #默认的 dockerhub 的镜像源
 

建立 docker 用户组(参考)

默认情况下, docker  命令会使用 Unix socket 与 Docker 引擎通讯。而只有root  用户和  docker  组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用  root  用户。因此,更好地做法是将需要使用  docker  的用户加入  docker  用户组。建立  docker  组:        $ sudo groupadd docker
将当前用户加入  docker  组:              $ sudo usermod -aG docker $USER

 

下载docker镜像

[root@146~]# docker search centos  #从 Docker Hub 中搜索符合条件的镜像。

centos 部署docker容器 安装 、基本使用方法(一)_第3张图片

名字                        描述                             受欢迎受欢迎程度  是否官方提供

如果OFFICIAL 为[ok] ,说明可以放心使用。

方法1:从公网docker hub 拉取(下载)image   pull:拉

[root@146~]# docker pull docker.io/centos

(#报错了,因为网络的问题。 无法连接到dockerhub 下载镜像。 如果你的网络没有问题,你可以下载。)

方法2:163镜像

[root@146 ~]# docker pull hub.c.163.com/library/tomcat:latest
[root@146 ~]# docker images 
REPOSITORY                     TAG           IMAGE ID            CREATED             SIZE
hub.c.163.com/library/tomcat   latest         72d2be374029        4 months ago        292.4 MB

查看 images 列表
[root@146 ~]# docker images  #列出本地所有镜像。其中 [name] 对镜像名称进行关键词查询。
[root@146 ~]# docker images 
centos 部署docker容器 安装 、基本使用方法(一)_第4张图片

 

请开启动网络转发功能 否则回报IPV4的错误

开启动网络转发功能,默认会自动开启.

手动开启:
[root@146 ~]# vim /etc/sysctl.conf  #插入以下内容   (也可以 echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf  直接添加)
net.ipv4.ip_forward = 1
[root@146 ~]# sysctl  -p   #生效
net.ipv4.ip_forward = 1
[root@146 ~]# cat /proc/sys/net/ipv4/ip_forward
1

否则会报错以下警告: WARNING: iPv4 forwarding is disabled network will not work 的处理

 

虚悬镜像
上面的镜像列表中,还可以看到一个特殊的镜像,这个镜像既没有仓库名,也没有
标签,均为    。:
00285df0df87 5 d
ays ago 342 MB
这个镜像原本是有镜像名和标签的,原来为  mongo:3.2  ,随着官方镜像维护,发布了新版本后,重新  docker pull mongo:3.2  时, mongo:3.2  这个镜像名被转移到了新下载的镜像身上,而旧的镜像上的这个名称则被取消,从而成为了  。除了  docker pull  可能导致这种情况, docker build  也同样可以导致这种现象。由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为    的镜像。

这类无标签镜像也被称为 虚悬镜像(dangling image) 

一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命
令删除。
$ docker rmi $(docker images -q -f dangling=true)

二、docker平台基本使用方法

例1:运行一个 container并加载镜像centos,运行起来这个实例后,在实例中执行 /bin/bash命令

docker常用参数:

run  运行

-i   以交互模式运行容器,通常与 -t 同时使用;
-t  为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-d 后台运行   再次进入一个正在运行的容器   docker attach   id或name  

centos 部署docker容器 安装 、基本使用方法(一)_第5张图片

[root@146~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

docker.io/centos    latest              196e0ce0c9fb        12 days ago         196.6 MB

[root@146~]# docker run  -it docker.io/centos:latest /bin/bash   #启动一个实例,也就2秒就可以搞定

[root@068fd8c70344 /]# ls   #查看实例环境

[root@f072b5ae7542 /]# cat /etc/redhat-release

退出容器:

[root@f072b5ae7542 /]#exit

 

例2:在 container 中启动一个长久运行的进程,不断向stdin输出 hello world 。模拟一个后台运行的服务

docker常用参数:

-d  后台运行容器,并返回容器ID;
-c  后面跟待完成的命令

[root@146~]# docker run  -d docker.io/centos:latest /bin/sh -c "while true;do echo hello world; sleep 1; done"

1b3493487c4fde6eb233d59fa9ab9a204ad993cd3debbd5a9a28be6816694605

#容器的ID

从一个容器中取日志,查看输出的内容

语法: docker  logs   容器实例的Name/ID  

[root@146~]# docker logs 1b3493487c4    #容器的ID可以写全,也可以不写全,只要唯一就可以了

查看正在运行的容器:

[root@146~]# docker ps  #列出所有运行中容器。

[root@146~]# docker ps -a  #-a 列出所有容器(含沉睡/退出状态的容器);

例3:杀死一个容器。 比如:杀死一个正在后台运行的容器

杀死ID为c4a213627f1b容器

[root@146~]# docker kill c4a213627f1b  #杀死一个容器 

[root@146~]# docker stop 1a63ddea6571 #关闭容器

[root@146~]# docker restart 1a63ddea6571 #重启

删除指定 container : rm

[root@146~]# docker rm  e085da6919af

[root@146~]# docker rm -f 1a63ddea6571 #强制删除

删除镜像 :decker rmi 镜像id  

.docker 特性:
文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
资源隔离:系统资源,像 CPU 和内存等可以分配到丌同的容器中,使用 cgroup。
网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和 IP 地址。
日志记录:Docker 将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理:容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用模板或手劢配置。
交互式 shell:Docker 可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互 shell。
优点:
1.一些优势和 VM 一样,但不是所有都一样。
比 VM 小,比 VM 快,Docker 容器的尺寸减小相比整个虚拟机大大简化了分布到云和从云分发时间和开销。Docker 启劢一个容器实例时间徆短,一两秒就可以启劢一个实例。
2.对于在笔记本电脑,数据中心的虚拟机,以及任何的云上,运行相同的没有变化的应用程序,IT 的发布速度更快。
Docker 是一个开放的平台,构建,发布和运行分布式应用程序。
Docker 使应用程序能够快速从组件组装和避免开发和生产环境乊间的摩擏。
3.您可以在部署在公司局域网或云或虚拟机上使用它。
4.开发人员并丌关心具体哪个 Linux 操作系统
使用 Docker,开发人员可以根据所有依赖关系构建相应的软件,针对他们所选择的操作系统。
然后,在部署时一切是完全一样的,因为一切都在 DockerImage 的容器在其上运行。
开发人员负责并且能够确保所有的相关性得到满足。
5.Google,微软,亚马逊,IBM 等都支持 Docker。
6.Docker 支持 Unix/Linux 操作系统,也支持 Windows 或 Mac

缺点局限性:
1.Docker 用于应用程序时是最有用的,但并丌包含数据。日志,跟踪和数据库等通常应放在 Docker
容器外。 一个容器的镜像通常都徆小,丌适合存大量数据,存储可以通过外部挂载的方式使用。比如使用:
NFS,ipsan,MFS 等, -v 映射磁盘分区

一句话:docker 叧用于计算,存储交给别人。
oracle  不适合使用 docker 来运行,太大了,存储的数据太多
--------------------- 
 

 

你可能感兴趣的:(linux,docker)