Docker学习笔记
这一部分我们先从实践入手,不会有太多的理论知识,关于Cgroup,namespace,docker网络等docker基础理论,我打算另外写,这一次分享主要是复试一下我们上课讲过的知识,及用docker封装各种应用。
1.Centos安装docker(其他系统后面会有个补充文件)
1.1Docker支持以下的CentOS版本:
CentOS 7 (64-bit)
CentOS 6.5 (64-bit)【这应该是官网在吹牛逼用的,大家最好用centos7以上】
1.2实验前提条件
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
注:系统版本可以用cat /etc/redhat-release 检测(看大版本为7即可,小版本号可以不关注)
系统内核可以用uname -r检测

1.3使用yum安装docker
从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。我们用社区版玩玩即可(注:关于Docker CE 和 Docker EE的区别,我后面会整理一下发给大家)
1.3.1移除旧的版本(如果你有root权限不用sudo)
$ sudo yum remove docker docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-selinux
docker-engine-selinux
docker-engine
1.3.2安装一些必要的系统工具
$sudo yum install -y yum-utils device-mapper-persistent-data lvm2
1.3.3添加软件源信息
$sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.3.4更新 yum 缓存
$sudo yum makecache fast
1.3.5安装 Docker-ce
$sudo yum -y install docker-ce
1.3.6启动 Docker 后台服务
$sudo systemctl start docker
1.3.7 测试运行 hello-world
[root@ouxionghu ~]# docker run hello-world
1.3.8删除 Docker CE
$ sudo yum remove docker-ce
$ sudo rm -rf /var/lib/docker
2.先简单玩玩Docker hello world压压惊
2.1先来条命令回忆一下
[root@ouxionghu ~]# docker run ubuntu:15.10 /bin/echo “Hello world”
各个参数解析:
docker: Docker 的二进制执行文件。
run:与前面的 docker 组合来运行一个容器。
ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo “Hello world”: 在启动的容器里执行的命令
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果

2.2运行交互式的容器
我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力
[root@ouxionghu ~]# docker run -i -t ubuntu:15.10 /bin/bash
root@467fdf4d22ee:/#

各个参数解析:
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。
此时我们已进入一个 ubuntu15.10系统的容器,我们可以通过运行exit命令或者使用CTRL+D来退出容器。
2.3启动容器(后台模式)
使用以下命令创建一个以进程方式运行的容器
[root@ouxionghu ~]# docker run -d ubuntu:15.10 /bin/sh -c “while true; do echo hello world; sleep 1; done”
8f7fe4967e2d6b485aa9fce09e5f7231edfb74ee532a6824ae9faf5dd4d10734

在输出中,我们没有看到期望的"hello world",而是一串长字符
8f7fe4967e2d6b485aa9fce09e5f7231edfb74ee532a6824ae9faf5dd4d10734
这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。首先,我们需要确认容器有在运行,可以通过 docker ps 来查看
[root@ouxionghu ~]# docker ps

CONTAINER ID:容器ID
NAMES:自动分配的容器名称(这个后面我们可以自定义)
注:图片中的其他参数后面介绍
在容器内使用docker logs命令,查看容器内的标准输出
[root@ouxionghu ~]# docker logs 8f7fe4967e2d(注:也可以不用ID有NAMES生产环境一般都用NAMES)
2.4停止容器
我们使用 docker stop 命令来停止容器:
[root@ouxionghu ~]# docker stop 8f7fe4967e2d(注:也可以不用ID有NAMES生产环境一般都用NAMES)

[root@ouxionghu ~]# docker ps

240

被折叠的 条评论
为什么被折叠?



