实验环境: 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 版本信息
查看 docker 信息(确认服务运行)显示 Docker 系统信息,包括镜像和容器数。
下载docker镜像
[root@146~]# docker search centos #从 Docker Hub 中搜索符合条件的镜像。
名字 描述 受欢迎受欢迎程度 是否官方提供
如果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
开启动网络转发功能
开启动网络转发功能,默认会自动开启.
手动开启:
[root@146 ~]# vim /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
二、docker平台基本使用方法
例1:运行一个 container并加载镜像centos,运行起来这个实例后,在实例中执行 /bin/bash命令
docker常用参数:
run 运行
-i 以交互模式运行容器,通常与 -t 同时使用;
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
[root@xuegod63 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 196e0ce0c9fb 12 days ago 196.6 MB
[root@xuegod63 ~]# 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 #强制删除