zoukankan      html  css  js  c++  java
  • 最简单实用的docker专题

    一:docker的安装

    1.centos7安装docker

    1.1 移除旧版本:
    yum remove docker \
       docker-client \
       docker-client-latest \
       docker-common \
       docker-latest \
       docker-latest-logrotate \
       docker-logrotate \
       docker-selinux \
       docker-engine-selinux \
       docker-engine
    rm -rf /etc/systemd/system/docker.service.d
    rm -rf /var/lib/docker
    rm -rf /var/run/docker
    rm -rf /usr/local/docker
    rm -rf /etc/docker
    
    1.2 安装一些必要的系统工具:

    yum -y install yum-utils device-mapper-persistent-data lvm2

    1.3 添加软件源信息:

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

    1.4 安装 Docker-ce:

    yum -y install docker-ce

    1.centos8安装docker

    Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令

    $ sudo yum install docker #centos8的安装

    2.启动服务

    通过systemctl启动服务

    systemctl start docker

    3.查看安装版本

    这样子就安装成功了,启动服务以后可以使用docker version查看一下当前的版本。

    docker version

    二:docker的三个基本概念

    镜像(Image)、容器(Container)与仓库(Repository),这三个是Docker中最基本也是最核心的概念,对这三个概念的掌握与理解,是学习Docker的关键。

    1 镜像(Image)

    Docker镜像是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等文件,另外还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
    镜像是一个静态的概念,不包含任何动态数据,其内容在构建之后也不会被改变。

    1.1 查看镜像列表

    列出所有镜像如下操作:
    docker images
    由于我已经拉取了镜像,所以会输出下面的内容:

    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    docker.io/busybox   latest              6d5fcfe5ff17        7 weeks ago         1.22 MB
    
    1.2 从仓库拉取镜像

    我们使用docker image pull命令也是一样的。一般默认是从Docker Hub上拉取镜像的,Docker Hub是Docker官方提供的镜像仓库服务(Docker Registry),有大量官方或第三方镜像供我们使用,比如我们可以在命令行中输入下面的命令直接拉取一个CentOS镜像:docker pull centos
    docker pull命令的完整写法如下:

    docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
    我们上面使用CentOS,那是因为省略作者名,则作者名library,表示Docker官方的镜像,所以上面的命令等同于:

    docker pull library/centos:latest
    因此,如果拉取非官方的第三方镜像,则需要指定完整仓库名,如下:

    docker pull mysql/mysql-server:latest
    下载完成后,该镜像被默认保存到 /var/lib/docker 目录下。

    1.3 运行镜像

    使用docker run命令,可以通过镜像创建一个容器,如下:

    docker run -it centos /bin/bash

    1.4 删除镜像

    当本地有些镜像我们不需要时,那我们也可以删除该镜像,以节省存储空间,不过要注意,如果有使用该镜像创建的容器未删除,则不允许删除镜像。

    docker rmi image_name/image_id

    2 容器(Container)

    Docker的镜像是用于生成容器的模板,镜像分层的,镜像与容器的关系,就是面向对象编程中类与对象的关系,我们定好每一个类,然后使用类创建对象,对应到Docker的使用上,则是构建好每一个镜像,然后使用镜像创建我们需要的容器。

    2.1 启动和停止容器

    启动容器有两种方式,一种是我们前面已经介绍过的,使用docker run命令通过镜像创建一个全新的容器,如下:

    docker run -it hello-world
    docker run -d 镜像名 :后台运行容器,守护进程
    参数: -it通常的解释是: -t让docker分配一个伪终端并绑定到容器的标准输入上, -i则让容器的标准输入保持打开.
    另外一种启动容器的方式就是启动一个已经停止运行的容器:

    #container_id表示容器的id
    docker start container_id
    

    要停止正在运行的容器可以使用docker container stop或docker stop命令,如下:

    #container_id表示容器的id
    docker stop container_id
    

    强制停止容器

    docker kill 容器ID或容器名

    2.2 查看所有容器

    如果要查看本地所有的容器,可以使用docker ps -a命令:

    docker ps [-a]

    2.3 删除容器

    我们也可以使用docker container rm命令,或简洁的写法docker rm命令来删除容器,不过不允许删除正在运行的容器,因此如果要删除的话,就必须先停止容器。
    container_id表示容器id,通过docker ps可以看到容器id

    $ docker rm container_id
    当我们需要批量删除所有容器,可以用下面的命令:

    docker rm $(docker ps -q)
    删除所有退出的容器

    docker container prune

    2.4 进入容器

    进入一个已启动的容器,container_id表示容器的id,command表示Linux命令,如/bin/bash

    docker exec -it container_id command

    2.5 退出容器

    退出容器,两种方式:
    1.容器停止退出,命令:exit
    2.容器不停止退出,命令:ctrl+P+Q

    2.6 docker拷贝文件

    1.拷贝文件到docker中
    docker cp /opt/test.js dockername:/usr/local/tomcat/webapps/
    2.拷贝docker中文件到本地
    docker cp dockername:/opt/test.js /usr/local/tomcat/webapps/

    3.3 仓库(Repository)

    在前面的例子中,我们使用两种方式构建镜像,构建完成之后,可以在本地运行镜像,生成容器,但如果在更多的服务器运行镜像呢?很明显,这时候我们需要一个可以让我们集中存储和分发镜像的服务,就像Github可以让我们自己存储和分发代码一样。
    Docker Hub就是Docker提供用于存储和分布镜像的官方Docker Registry,也是默认的Registry,其网址为https://hub.docker.com,前面我们使用docker pull命令便从Docker Hub上拉取镜像。
    Docker Hub有很多官方或其他开发提供的高质量镜像供我们使用,当然,如果要将我们自己构建的镜像上传到Docker Hub上,我们需要在Docker Hub上注册一个账号,然后把自己在本地构建的镜像发送到Docker Hub的仓库当中,Docker Registry包含很多个仓库,每个仓库对应多个标签,不同标签对应一个软件的不同版本。

    五、docker镜像制作

    创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一个。本文只讲解从 Docker Hub 获取已有镜像并更新的情形

    1.创建镜像

    创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新。

    2.修改已有镜像

    2.1 先使用下载的镜像启动容器。
    $ docker run -it centos:centos7
    [root@7f75ff963d22 /]#
    

    2.2 在容器中安装应用。

    #yum install httpd -y

    2.3 在容器中配置应用

    apache在容器中正常安装成功了,需要修改配置文件,可通过常规的centos linux命令修改其配置文件。例如:
    查找apache配置文件位置:find / -type f -name httpd.conf
    编辑apache配置文件: vi httpd.conf
    启动apche程序:systemctl start httpd
    应用配置结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了。

    2.4 将容器创建为镜像

    使用 docker commit 命令来提交更新后的副本,即可将该容易修改为镜像。

    $docker commit -m "yum install httpd" -a "centos-apache" 7f75ff963d22 qianli2424/centos:v1
    其中,-m 来指定提交的说明信息;-a 可以指定更新的用户信息;7f75ff963d22是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。
    使用 docker images 来查看新创建的镜像

    3 push到docker库

    镜像构建成功后,只有将镜像推送到Docker Hub上去,我们才能够docker pull这个镜像。

    3.1 Docker hub注册用户

    到官网注册账号:https://hub.docker.com/

    3.2 在本地Linux登录docker

    使用docker login进行登录

    3.3 推送镜像到Docker Hub

    通过push命令推送镜像:docker push [镜像名]
    如有需要,可使用docker pull docker.io/qianli2424/centos:v1下载该镜像

    六、docker实例

    1.docker安装mysql

    MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能,MySQL 已成为 Web 应用程序的数据库优先选择。

    1.1 查看可用的 MySQL 版本

    访问 MySQL 镜像库地址:https://hub.docker.com/_/mysql?tab=tags 。可以通过 Sort by 查看其他版本的 MySQL,默认是最新版本 mysql:latest 。

    1.2 拉取 MySQL 镜像

    这里我们拉取官方的5.7版本的镜像:

    docker pull mysql:5.7

    1.3 运行容器

    安装完成后,我们可以使用以下命令来运行 mysql 容器:

    docker run -itd --name mysql57 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

    2.Docker 安装 LAMP

    2.1 拉取docker镜像

    docker pull qianli2424/centos:v5

    2.2 运行容器

    运行容器的操作如下:
    docker run --privileged -it -p 8081:80 -p 3307:3306 -d qianli2424/centos:v5 /usr/sbin/init
    注意2点:1. --privileged 参数必须加,2. /usr/sbin/init作为容器的启动命令
    参数说明:
    --name:设置docker容器的名称
    -p:设置主机映射容器的端口
    -v:设置主机映射容器的目录

    2.3 容器内部设置

    这是一个自己配置的容器,容器中包含了Apache、PHP和Mysql三个应用,需要手动启动Apache和Mysql,其运行命令为:

    docker exec -it 容器ID bash    #须进入容器
    systemct start httpd            #启动apache
    systemct start mysqld            #启动mysql
    

    作者: 千里和他的软件测试

    软件测试学习交流: 软件测试交流群 172489141

    银行金融业务交流: 新网银测试群 52304542

    接口自动化性能交流: 一个正经的测试群 188427938

  • 相关阅读:
    English,The Da Vinci Code,Chapter 1-3
    Algorithm,Ds,Binary Indexed Trees,树状数组,二分索引树
    Algorithm,Acm,RMQ
    Algorithm,Number Theory,Prime
    Algorithm,Number Theory,GCD
    English,The Da Vinci Code
    Algorithm,LCA,Tarjan,深搜+并查集,最近公共祖先
    python,keyword arguments
    Qt,QObject
    python,build in functions
  • 原文地址:https://www.cnblogs.com/laoluoits/p/15638277.html
Copyright © 2011-2022 走看看