CentOS7安装Docker

释放双眼,带上耳机,听听看~!

一、Docker简介

          Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

1、Docker有以下几个部分组成:

  • dockerClient客户端

  • Docker Daemon守护进程

  • Docker Image镜像

  • DockerContainer容器 

2、特性

docker的典型场景:

  • Automating the packaging and deployment of applications(使应用的打包与部署自动化)

  • Creation of lightweight, private PAAS environments(创建轻量、私密的PAAS环境)

  • Automated testing and continuous integration/deployment(实现自动化测试和持续的集成/部署)

  • Deploying and scaling web apps, databases and backend services(部署与扩展webapp、数据库和后台服务)

由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。

3、局限

Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:

  • Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用

  • LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的

  • 隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库

  • 网络管理相对简单,主要是基于namespace隔离

  • cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)

  • Docker对disk的管理比较有限

  • container随着用户进程的停止而销毁,container中的log等用户数据不便收集

二、安装Docker

1、通过 uname -r 命令查看你当前的内核版本


1
2
1uname -r
2

2、使用 root 权限登录 Centos,更新yum包到最新


1
2
1sudo yum update
2

如果安装过旧版本的话,需要卸载旧版本


1
2
1sudo yum remove docker  docker-common docker-selinux docker-engine
2

3、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖


1
2
1sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2

4、设置yum源


1
2
1sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2

 推荐使用阿里云安装:


1
2
1yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2

5、查看所有仓库中所有docker版本,并选择特定版本安装


1
2
1yum list docker-ce --showduplicates | sort -r
2

6、安装docker


1
2
1sudo yum install docker-ce-18.03.1.ce
2

7、启动并加入开机启动


1
2
3
1sudo systemctl start docker
2sudo systemctl enable docker
3

8、验证安装是否成功


1
2
1docker version
2

有client和service两部分表示docker安装启动都成功了

8、测试运行 hello-world

9、Docker 客户端

docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。

可以通过命令 docker command –help 更深入的了解指定的 Docker 命令使用方法。

 例如我们要查看 docker stats 指令的具体使用方法:


1
2
1docker stats --help
2

10、运行一个web应用

在docker容器中运行一个 Python Flask 应用来运行一个web应用。


1
2
3
1docker pull training/webapp  # 载入镜像
2docker run -d -P training/webapp python app.py
3

使用 docker ps 来查看我们正在运行的容器:


1
2
1docker ps
2

这里多了端口信息。

0.0.0.0:32768->5000/tcp

Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上。

这时可以通过浏览器访问WEB应用:

可以通过 -p 参数来设置不一样的端口:


1
2
1docker run -d -p 5000:5000 training/webapp python app.py
2

查看 WEB 应用程序日志


1
2
1docker logs -f 4d1aa7d8ebd9  #docker logs [ID或者名字] 可以查看容器内部的标准输出。
2

注意:-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

使用 docker top 来查看容器内部运行的进程


1
2
1docker logs 4d1aa7d8ebd9
2

停止 WEB 应用容器:


1
2
3
1docker stop 4d1aa7d8ebd9
2
3

已经停止的容器,可以使用命令 docker start 来启动:


1
2
1docker start 4d1aa7d8ebd9
2

查询最后一次创建的容器:


1
2
1docker ps -l
2

正在运行的容器,可以使用 docker restart 命令来重启:


1
2
1docker restart 4d1aa7d8ebd9
2

可以使用 docker rm 命令来删除不需要的容器:


1
2
1docker rm 4d1aa7d8ebd9
2

注意:删除容器时,容器必须是停止状态,否则会报如下错误:


1
2
1Error response from daemon: You cannot remove a running container bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Stop the container before attempting removal or force remove
2

三、配置docker镜像加速器

1、创建目录


1
2
1mkdir -p /etc/docker
2

2、创建daemon.json文件


1
2
1vim /etc/docker/daemon.json
2

daemon.json


1
2
3
4
5
6
1#网易云
2{"registry-mirrors":["http://hub-mirror.c.163.com"]}
3
4#阿里云
5{"registry-mirrors":["https://xxx.mirror.aliyuncs.com"]}
6

1
2
1systemctl daemon-reload
2

1
2
1systemctl restart docker
2

四、Docker 镜像 

          当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

1、列出镜像列表


1
2
1[root@localhost ~]# docker images
2

各个选项说明:

  • **REPOSITORY:**表示镜像的仓库源

  • **TAG:**镜像的标签

  • **IMAGE ID:**镜像ID

  • **CREATED:**镜像创建时间

  • **SIZE:**镜像大小

因为我的是刚装的,只运行了一个helloworld和测试web应用时装的两个镜像。

当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。

2、查找镜像

      可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/

      也可以使用 docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。可以通过 docker search 命令搜索 MySQL来寻找适合我们的镜像。


1
2
1docker search MySQL
2

 

CentOS7安装Docker

参数说明:

  • **NAME:**镜像仓库源的名称
  • **DESCRIPTION:**镜像的描述
  • **OFFICIAL:**是否docker官方发布

3、拖取镜像


1
2
1docker pull mysql
2

下载完成后,就可以使用这个镜像了。

4、启动镜像


1
2
1docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql
2
  • —name 为设置容器的名字,我设置为mysql

  • -p 端口映射

  • -e 为设置执行时的环境变量,在这里我设置mysql的root密码,相关变量可参考官网

  • -d 为设置镜像,镜像名:版本

5、 查看Docker当前运行


1
2
1docker ps
2

CentOS7安装Docker

6、停止Docker容器


1
2
1docker stop ID
2

** **7、删除镜像


1
2
1docker rmi ID
2

 在镜像未停止的情况下,可以使用 -f 是强制删除,但是这样不友好。


1
2
1docker rmi -f ID
2

报错:
Error response from daemon: conflict: unable to delete 3ee5e1ce00fc (cannot be forced) – image has dependent child images 

解决方法:找到你要删除的那个TAG,然后通过docker rmi [repository]:[tag]来删除,例如:


1
2
1docker rmi docker-demo:1.0.0
2

8、Docker命令小结

docker pull
获取image
docker build
创建image
docker images
列出image
docker run
运行container
docker ps
列出container
docker rm
删除container
docker rmi
删除image
docker cp
在host和container之间拷贝文件
docker commit
保存改动为新的image

9、导入导出镜像

导出:


1
2
1sudo docker save -o docker-demo.tar docker-demo
2

CentOS7安装Docker

导入:


1
2
1docker load -i docker-demo.tar
2

CentOS7安装Docker

五、DockerFile创建镜像

1、创建文件Dockerfile文件,该文件名不可更改


1
2
1vi Dockerfile
2

编写文本,并保存退出:


1
2
3
4
1FROM alpine:latest
2MAINTAINER smilevt
3CMD echo "Hello Docker!
4

docker build命令用于使用 Dockerfile 创建镜像,


1
2
1docker build -t hello_docker .
2
  • -t :镜像的名字及标签,通常 name:tag 或者 name
  • path : **. **点代表当前路径下的所有文件。

2、镜像分层

Dockerfile的每一行都会产生一个新层(新ID),比如:

CentOS7安装Docker

已经存在image里面的层是只读的,一旦镜像运行为容器之后,就会产生一个新层(RW读写),分层的好处就是多个image可以共享相同的层,减少存储大小。

3、Dockerfile命令小结

FROM
base image
RUN
执行命令
ADD
添加文件
COPY
拷贝文件
CMD
执行文件
EXPOSE
暴露端口
WORKDIR
指定路径
MAINTAINER
维护者
ENV
设定环境
ENTRYPOINT
容器入口
USER
指定用户
VOLUME
mount point

六、卸载Docker

 

1、查询安装过的包


1
2
1yum list installed | grep docker
2

2、删除安装的软件包


1
2
1systemctl stop docker
2

1
2
1yum -y remove docker-engine.x86_64
2

3、删除镜像/容器


1
2
1rm -rf /var/lib/docker
2

给TA打赏
共{{data.count}}人
人已打赏
安全运维

MySQL,Redis,MongoDB 三种数据库优势

2021-12-11 11:36:11

安全运维

Ubuntu上NFS的安装配置

2021-12-19 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索