首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
软件
运维软件
办公软件
书籍资源
技术陪跑营
重要信息
首页 运维教程虚拟化Docker的基本使用

Docker的基本使用

概念:

  • image:镜像,用于启动一个容器
  • container:容器
  • network:网络
  • volumes:卷,用来持久存储
  • plugin:插件

什么是docker?

  • docker就是用来管理容器的工具

什么是容器?

  • 容器就是一个独立的程序运行环境

docker用在什么场景?

  • 提升开发效率
  • 简化开发难度
  • 实现服务隔离
  • 实现快速部署

版本:

  • CE:社区版
  • EE:商业版本

系统条件

  • 64位的CPU
  • 内核版本3.10及以上
  • 内核支持cggroups 和 namespace

安装docker

  • 第一步:上传docker的rpm包到Linux
  • 第二步:进行安装
[root@master ~]# yum localinstall docker-ce-18.06.3.ce-3.el7.x86_64.rpm 

创建docker配置文件

[root@master ~]# mkdir /etc/docker
[root@master ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://mzxx8xy8.mirror.aliyuncs.com"]
}

启动docker

[root@master ~]# systemctl start docker
[root@master ~]# docker info

镜像:

  • 其实就是一个模板
  • 通过镜像可以快速启动一个服务
  • 比如,通过nginx镜像,就可以快速启动一个nginx服务

使用docker

  • 拉取镜像
  • 检查镜像
  • 启动容器

简单使用docker

1)拉取nginx镜像文件

[root@master ~]# docker search nginx
[root@master ~]# docker pull nginx

2)拉取centos镜像文件

3)拉取busybox镜像

[root@master ~]# docker pull busybox

3)查看镜像

[root@master ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              6678c7c2e56c        3 weeks ago         127MB

启动容器的命令格式:

  • docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

启动busybox容器

[root@master ~]# docker run --name mybox1 -it busybox
  • -it:进入容器

在容器中,启动一个web服务

# mkdir /data/html
# echo "test page">/data/html/index.html
# httpd -f -h /data/html

在宿主机中执行ps,查看进容器

[root@master ~]# docker ps
  • docker ps 仅仅可以查看正在运行的容器,已经停止的容器看不到
  • docker ps -a可以查看全部的容器
  • 一旦退出容器,容器会变成停止状态

查看容器的ip信息

[root@master ~]# docker inspect mybox | grep "Address"

通过ip访问容器的apache测试页

[root@master ~]# curl x.x.x.x

作业:

1) 准备一台Centos7的服务器,检测网络正常

[root@master ~]# ping www.qq.com

2) 检查服务器docker运行是否正常,如没有请安装

安装docker

  • 上传docker安装包
  • yum localinstall进行安装
  • 编写docker配置文件

启动docker

[root@master ~]# systemctl start docker
[root@master ~]# docker info

3) 请检查本机是否有centos镜像,如没有请下载centos镜像

[root@master ~]# docker image ls
[root@master ~]# docker pull centos:7

4) 请以centos镜像为基础镜像,创建Nginx镜像

第一步:启动一个nginx容器,让这个容器工作在后台

[root@master ~]# docker run --rm --name demo1 -d centos:7 /usr/sbin/init
[root@master ~]# docker ps
CONTAINER ID     IMAGE     COMMAND            CREATED        STATUS      PORTS  NAMES
a3a327f88ee3     centos:7  "/usr/sbin/init"   14 seconds ago  Up 13 seconds     demo1

第二步:进入容器

[root@master ~]# docker exec -it demo1 /bin/bash
[root@a3a327f88ee3 /]# 

第三步:在容器中编译安装nginx

[root@a3a327f88ee3 /]# yum install make gcc gcc-c++ pcre-devel ncurses-devel wget zlib-devel -y
[root@a3a327f88ee3 /]# wget http://nginx.org/download/nginx-1.16.1.tar.gz
[root@a3a327f88ee3 /]# tar xvf nginx-1.16.1.tar.gz
[root@a3a327f88ee3 /]# cd nginx-1.16.1
[root@a3a327f88ee3 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx && make && make install

第四步:在容器中修改nginx配置文件,让nginx工作在前台

[root@a3a327f88ee3 ~]# vi /usr/local/nginx/conf/nginx.conf

添加一行

daemon off;

第五步:退出容器,在宿主机上将demo1这个容器做成镜像

[root@master ~]# docker commit demo1 nginx

6) 请查看本地镜像列表,查看镜像创建是否成功

[root@master ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              82c8be6ecd2e        5 seconds ago       411MB

7) 请基于new-nginx:1.0镜像运行一个容器,容器名为wg-nginx,并且将本机的8000端口映射到容器的80端口(10分)

第一步:修改镜像名称

[root@master ~]# docker tag nginx:latest new-nginx:1.0
[root@master ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
new-nginx           1.0                 82c8be6ecd2e        3 minutes ago       411MB
nginx               latest              82c8be6ecd2e        3 minutes ago       411MB

第二步:启动容器

  • 这个容器需要进行端口转发,就是将访问宿主机的8000转发到容器的80端口
  • 这个容器需要运行的程序是nginx,启动nginx的命令:/usr/local/nginx/sbin/nginx
[root@master ~]# docker run --name wg-nginx -d --rm -p 8000:80 new-nginx:1.0 /usr/local/nginx/sbin/nginx

**8) wg-nginx容器运行成功

[root@master ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
3e0a3d93414f        new-nginx:1.0       "/usr/local/nginx/sb…"   7 seconds ago       Up 6 seconds        0.0.0.0:8000->80/tcp   wg-nginx

9) 成功使用浏览器访问we-nginx容器的测试页面

  • 用浏览器访问自己linux主机的ip:http://192.168.0.63:8000/

27日【11】案例

案例1:nsible-playbook电商项目实战:

1) 配置一台远程主机并查看连接情况

以下命令必须全部写在playbook中,否则无效

2) 设置nginx版本名称为变量并在后文playbook中使用

3) 使用模块安装apache、php及所需依赖

4) 使用模块分发apache整合php配置文件

5) 使用模块启动apache

6) 使用模块安装mysql等环境

7) 使用模块启动mysql

8) 使用模块为wordpress创建数据库并授权

9) 使用模块关闭防火墙

10) 使用模块设置触发为,关闭防火墙成功后重启apache

​ 以上完成ansible-playbook的编写

11) 使用ansible-playbook命令检查剧本的准确性并执行

12) 使用浏览器访问并成功配置博客

案例2:docker实战27日作业

1)配置docker环境并安装

2)设置docker镜像加速

[root@master ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker
[root@master ~]# docker info

3)使用命令搜索所有centos镜像

[root@master ~]# docker search centos

4)拉取centos镜像并使用命令查看镜像

[root@master ~]# docker pull centos
[root@master ~]# docker image ls

5)以守护进程方式运行基于centos的镜像并命名为centos1

[root@master ~]# docker run --name centos1 --rm -d centos:7 init
[root@master ~]# docker ps 

6)以交互方式运行基于busybox镜像的容器并命名为busybox1

[root@master ~]# docker run --name busybox1 -it --rm busybox /bin/bash

7)使用命令查看所有容器

[root@master ~]# docker ps -a

8)使用命令查看busybox1的元数据

[root@master ~]# docker container inspect busybox1

9)使用命令停止所有容器并删除

[root@master ~]# docker rm -f $(docker ps -a -q)

10)使用命令删除所有镜像

[root@master ~]# docker image prune -a -f

docker使用

  • 管理镜像
  • 管理容器
  • 管理存储
  • 管理网络

管理镜像:

  • build :基于dockerfile制作镜像
  • inspect:显示镜像的详细信息
  • load:从压缩包中导入镜像
  • save:将当前的某个镜像导出制作成压缩包
  • ls:查看当前本地有哪些镜像
  • pull:从镜像仓库拉取镜像到本地
  • push:将一个本地镜像推送到镜像仓库
  • rm:删除镜像
  • tag :给镜像打标签
  • prune:删除所有未使用的镜像

关于镜像仓库

  • 专门用来存储docker镜像的服务器,称之为镜像仓库
  • 网络上有很多镜像仓库

操作1:查看本地有哪些镜像

[root@master ~]# docker image ls
[root@master ~]# docker images

操作2:搜索镜像【比如搜索全部的nginx镜像】

[root@master ~]# docker search nginx

操作3:拉取镜像【拉取nginx:1.17.7-alpine】

[root@master ~]# docker image pull nginx:1.17.7-alpine

操作4:向docker仓库推送镜像

[root@master ~]# docker image push xxxxx

操作5:删除镜像

[root@master ~]# docker image rm -f nginx:2.0
[root@master ~]# docker rmi -f 470

操作6:查看镜像的详细信息

[root@master ~]# docker image inspect 82c

操作7:导出镜像操作【将nginx1.17.7-alpine导出】

[root@master ~]# docker image save 36189e6707f4>ngx.tar.gz

操作8:导入镜像【删除原有镜像,然后导入镜像】

[root@master ~]# docker load -i ngx.tar.gz 

操作9:给镜像打标签【名称设置为nginx,tag设置为1.17.7-alpine】

[root@master ~]# docker image tag 361 nginx:1.17.7-alpine

操作10:将一个正在运行的容器制作成镜像

例子:先安装一个centos容器,在这容器中安装nginx,修改配置文件,然后将这个做了修改的容器制作成镜像

[root@master ~]# docker commit  mycon1 nginx-temp:v0.1

容器的管理

docker container的子命令

  • cp:在宿主机和容器中互相发送
  • run:启动一个容器
  • inspect:显示容器的详细信息
  • pause:挂起容器
  • unpause:将挂起的容器继续运行
  • stop:关闭容器
  • start:将关闭的容器重新运行
  • prune:删除所有已经停止的容器
  • rm:删除指定的容器
  • rename:修改容器的名称
  • stats:动态显示容器的资源使用情况
  • ls:显示容器
  • logs:查看容器中的日志信息
  • exec:登录一个指定的容器

docker的子命令

  • kill:杀死容器
  • ps:查看容器
  • rm:删除容器
  • run:运行容器

操作1:运行一个nginx容器

格式:docker run [选项] 镜像名 [命令]

选项:

  • -d:让容器工作在后台
  • -i:以交互防护启动容器
  • -t:给用户绑定一个终端
  • –name:给容器设置名称
  • –rm:容器停止后自动删除容器

例子:启动一个nginx,让nginx工作在前台

[root@master ~]# docker container run --name my1 nginx:1.17.9

例子:启动一个nginx,让nginx工作在前台,并且给用户绑定一个交互窗口

[root@master ~]# docker run --name my2 -it nginx:1.17.9 /bin/bash

例子:启动一个nginx,让nginx工作在后台

[root@master ~]# docker container run --name my1 -d nginx:1.17.9

操作2:登录已经启动的容器

例子:启动一个nginx容器工作在后台,然后登录这个容器

[root@master ~]# docker run --name mycentos2 --rm -d centos:7 /usr/sbin/init
[root@master ~]# docker exec -it mycentos2 /bin/bash

操作3:查看容器【已经停止的容器/正在运行的容器】

格式:docker ps [选项]

选项:

  • -a:显示全部的容器,包括已经的容器
  • -q:仅仅显示容器的ID

案例1 :显示所有容器的id

[root@master ~]# docker ps -q -a

案例2:仅仅显示正在运行的容器的ID

[root@master ~]# docker ps -q
c820c3ca2a1a
fe789a579425
eba7ee871cd2
b71e6fbad30b

操作3:杀死容器

案例:杀死myos2这个容器

[root@master ~]# docker kill myos2

案例:杀死全部正在运行的容器

[root@master ~]# docker kill $(docker ps -q)

操作4:删除容器【正在运行的容器/已经停止的容器】

案例:删除已经停止的容器myos2

[root@master ~]# docker rm myos2

案例:删除正在运行的容器myos3

[root@master ~]# docker rm -f myos3

案例:删除全部的容器,包括停止和运行的

[root@master ~]# docker rm -f $(docker ps -a -q)

本文链接:http://www.geekyunwei.com/1638.html

网友评论comments

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 公众号《极客运维之家》
扫二维码
扫二维码
返回顶部