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的安装
    1. 启动服务

    通过systemctl启动服务

    systemctl start docker
    1. 查看安装版本

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

    docker version

    二:docker的三个基本概念

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

    2.1 镜像(Image)

    Docker镜像是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等文件,另外还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

    镜像是一个静态的概念,不包含任何动态数据,其内容在构建之后也不会被改变。

    2.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

    2.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 目录下。

    2.1.3 运行镜像

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

    docker run -it centos /bin/bash

    2.1.4 删除镜像

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

    docker rmi image_name/image_id

    2.2 容器(Container)

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

    2.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.2 查看所有容器

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

    docker ps [-a]

    2.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.2.4 进入容器

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

    docker exec -it container_id command

    2.2.5 退出容器

    退出容器,两种方式:

    1. 容器停止退出,命令:exit

    2. 容器不停止退出,命令:ctrl+P+Q

    2.2.6 docker拷贝文件

    1. 拷贝文件到docker中

    docker cp /opt/test.js dockername:/usr/local/tomcat/webapps/

    1. 拷贝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 获取已有镜像并更新。

    1. 修改已有镜像

    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.3 将容器创建为镜像

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

    $docker commit -m "yum install httpd" -a "centos-apache" 7f75ff963d22 qianli2424/cento
    s:v1

    其中,-m 来指定提交的说明信息;-a 可以指定更新的用户信息;7f75ff963d22是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。

    • 使用 docker images 来查看新创建的镜像

    1. 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
    1. 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
    

     

  • 相关阅读:
    可视化和解释的11种基本神经网络架构 标准,循环,卷积和自动编码器网络
    从头开始使用梯度下降优化在Python中实现单变量多项式回归(后续3)
    从头开始使用梯度下降优化在Python中实现单变量多项式回归(后续2)
    从头开始使用梯度下降优化在Python中实现单变量多项式回归
    从头开始使用梯度下降优化在Python中实现多元线性回归(后续)
    从头开始使用梯度下降优化在Python中实现多元线性回归
    算法分析 八: 总结补充补充
    算法分析五:贪婪算法
    JDBC简单使用、工具类构建以及Statement与PreparedStatement区别
    利用抓包工具Fiddler分析post和get对http请求、响应的区别。
  • 原文地址:https://www.cnblogs.com/laoluoits/p/14054107.html
Copyright © 2011-2022 走看看