写在前面:结合往期docker理论篇,进行实战!在Ubuntu 64位操作系统虚机安装容器引擎docker,通过docker创建container,输出hello world!
容器引擎docker的安装准备条件
2. vmware workstation工具。
为什么选择Ubuntu 16.04.3 64位操作系统?它具备哪些能力?待安装查看,不要心急。
安装容器引擎docker
在docker社区版本Community Edition (CE)中选择stable可靠版本分支进行实践,其余edge新特性分支和企业版本Enterprise Edition(stable和edge)后期考虑实践下。
步骤1. 在vmware workstation工具中启动好一个ubuntu 16.04.3 64位OS操作系统的虚机,以便安装docker。
ubuntu 16.04.3 64位OS具备什么能力:
1)含有容器依赖的lxc,内核版本
2)含有容器依赖的内核版本
步骤2:在Ubuntu虚机内部安装容器引擎docker。
先获取docker安装和服务启动的脚本然后指定阿里云软件安装源执行脚本即可。
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
脚本执行完可以看到,docker client和server的版本号,API版本号,开发语言等等。
从安装后的提示信息看,假如使用docker的用户不是root权限的,需要要将你的用户添加到docker用户组内。在未加入docker用户组前,执行了docker命令,发现当前用户没有权限连接到docker daemon socket,原因是在通过Unix socket访问docker sock时没有权限。王宝强问什么情况?原理是什么?
刘若英说后来了解到,在默认情况下,docker 命令会用Unix socket和Docker引擎通讯。而只有 root 用户和docker组的用户才可以访问Docker引擎的Unix socket。出于安全考虑,一般Linux系统上不会直接使用root用户。因此,更好地做法是将docker的用户加入docker用户组。
$ sudo usermod -aG docker_123 $USER
注意要先执行exit退出,重新登录才会有效。或者是不退出,执行source /etc/profile。
容器引擎docker的相关检查
1) docker服务状态检查
2) docker进程检查
docker有两个进程:dockerd守护进程及其子进程docker-containerd。pwdx 进程id可以看到进程运行的目录。到docker-containerd运行目录下可以看到daemon等信息。
3) docker命令执行,在添加到docker用户组时已经执行查看image。
容器引擎docker启动HelloWorld容器
1) docker中指定镜像名称执行run命令
从执行日志中看,本地没有此镜像,从docker仓库里pull拉取下来。然后启动容器输出,Hello from docker!更详细过程如下图:
根据安装提示信息还尝试了ubuntu的安装。
容器启动成功了,代表docker安装结束。老师说杰伦不要着急,杰伦答我等你下课。
本着理论结合实践的目的,我们看下Ubuntu和HelloWorld的镜像分层结构长啥样?
小岳岳看见了,“我的天啊!”,HelloWorld镜像大小只有1.85KB!镜像可以这么小嘛!
从docker history 镜像名来看,HelloWorld只有两层:拷贝文件和输出hello。Ubuntu结构有6层。
看到HelloWorld容器输出的是hello,能不能改成hello robot_test_boy!如何修改制作容器镜像,请看下期内容!不见不散哦!
本期主要参考资料: