引用:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
(从程序运行的环境配置这个难题出发,分别介绍了使用虚拟机和使用容器的优劣,然后引出了docker。)
Docker,一个开源的应用容器引擎。将应用程序和该程序的依赖打包在一个文件里。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就像运行在真实的物理机上一样。有了docker,就不用担心环境问题。
Docker的用途
- 提供一次性的环境,比如测试他人的软件
- 提供弹性的云服务,可以非常方便的进行动态缩扩容。
- 组件微服务架构。
Centos下安装docker
Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。下面的介绍都针对社区版。
参考:https://www.runoob.com/docker/centos-docker-install.html
方法其一:Install using the repository
1.查看已安装的docker程序
rpm -qa | grep docker
2.卸载
yum remove docker-common-1.13.1-161.git64e9980.el7_8.x86_64 docker-client-1.13.1-161.git64e9980.el7_8.x86_64 -y
3.清空docker目录
rm -rf /var/lib/docker/
4.安装所需软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
5.设置仓库(阿里源)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
这里有报错:except yum.Errors.RepoError, e:,原因是我升级过python,yum-config-manager应该使用的是python2,处理办法:
vim /usr/bin/yum-config-manager
改成#!/usr/bin/python2 -tt
,这里原来是#!/usr/bin/python -tt
[root@dewan01 ~]# ll /usr/bin/python2
lrwxrwxrwx 1 root root 9 May 8 13:49 /usr/bin/python2 -> python2.7
6.安装 Docker Engine-Community
yum install docker-ce docker-ce-cli containerd.io -y
7.启动
systemctl start docker
8.查看版本
docker version
Docker文件目录
[root@dewan01 ~]# cd /var/lib/docker/
Mon Jun 15 13:18:00 CST 2020
[root@dewan01 docker]# ll
total 36
drwx------ 4 root root 4096 Jun 12 18:16 containers
drwx------ 3 root root 4096 Jun 12 18:08 image
drwxr-x--- 3 root root 4096 Jun 12 18:08 network
drwx------ 8 root root 4096 Jun 12 18:16 overlay2
drwx------ 4 root root 4096 Jun 12 18:08 plugins
drwx------ 2 root root 4096 Jun 12 18:08 swarm
drwx------ 2 root root 4096 Jun 12 18:15 tmp
drwx------ 2 root root 4096 Jun 12 18:08 trust
drwx------ 2 root root 4096 Jun 12 18:08 volumes
查看docker用户和组
cat /etc/group
cat /etc/passwd
image文件
Docker把应用程序及其依赖,打包在image文件里面。
只有通过这个文件,才能生成docker容器。
image文件可以看作是容器的模板,Docker根据image文件生成容器实例。同一个image文件,可以生成多个同时运行的实例。
image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。
# 列出本机的所有 image 文件。
$ docker image ls
# 删除 image 文件
$ docker image rm [imageName]
image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。一般来说,为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作。即使要定制,也应该基于别人的 image 文件进行加工,而不是从零开始制作。
为了方便共享,image 文件制作完成后,可以上传到网上的仓库。Docker 的官方仓库 Docker Hub 是最重要、最常用的 image 仓库。此外,出售自己制作的 image 文件也是可以的。
实例:hello-world
通过最简单的image文件“hello-world”,认识一个docker。
[root@dewan01 ~]# docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
输出这段提示以后,hello world就会停止运行,容器自动终止。
有些容器不会自动终止,因为提供的是服务。比如,安装运行 Ubuntu 的 image,就可以在命令行体验 Ubuntu 系统。
[root@dewan01 ~]# docker run -it ubuntu bash
root@6c16b5775be9:/#
[root@dewan01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0eb8e15a2434 ubuntu "bash" 21 minutes ago
对于那些不会自动终止的容器,必须使用docker container kill
命令手动终止。
[root@dewan01 ~]# docker kill 0eb8e15a2434
0eb8e15a2434
容器文件
image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。
# 列出本机正在运行的容器
$ docker ps
# 列出本机所有容器,包括终止运行的容器
$ docker ps -a
Docker Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
实例:制作自己的 Docker 容器
(略)