美文网首页
Docker的简单操作

Docker的简单操作

作者: 雨初眠 | 来源:发表于2020-03-31 13:21 被阅读0次

    Docker的简单操作

    一、 安装:

    Centos7:

    使用centos7
    1.安装依赖:
    yum install -y yum-utils device-mapper-persistent-data lvm2
    2.添加安装源:
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    3.安装最新版的docker-ce
    yum-config-manager --enable docker-ce-edge
    4.更新 yum 软件源缓存,并安装 docker-ce
    yum makecache fast
    yum install docker-ce
    5.启动docker
    service docker start //开启docker服务
    service docker restart //重启docker服务
    service docker stop //停止docker服务
    6.镜像加速
    由于国内Docker Hub 拉取镜像有时会遇到困难,此时我们需要配置镜像加速器。
    /etc/docker/daemon.json 文件中写入如下内容如不存在则创建一个
    { "registry-mirrors": [ "https://registry.docker-cn.com" ] }
    注意:配置完成之后输入命令:service docker restart 重启docker

    Ubuntu:

    使用ubuntu
    1. 由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添 加使用HTTPS 传输的软件包以及 CA 证书。
    故先执行以下命:
    sudo apt-get update
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    2. 我们需要向 source.list 中添加 Docker 软件源
    命令如下:
    sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    3. 安装 Docker CE
    更新 apt 软件包缓存,并安装 docker-ce:
    sudo apt-get update
    sudo apt-get install docker-ce
    4. 启动docker
    sudo service docker start //开启docker服务
    sudo service docker restart //重启docker服务
    sudo service docker stop //停止docker服务
    6. 镜像加速和Contos 一样

    二、获取镜像

    从 Docker 镜像仓库获取镜像并使用
    1.从 Docker 镜像仓库获取镜像的命令是 docker pull 。其命令格式为:
    docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
    详细的选项可以通过 docker pull --help 命令看到。
    例如:
    docker pull apache/nifi
    此条命令直接是在我Docker hub中拉取最后一个镜像版本和 docker pull apache/nifi:latest 是一样的,如需指定版本则可把 latest 改为相应的版本即可
    如: docker pull apache/nifi:1.7.0
    注:拉取的镜像的详细使用方法可在Docker hub中查找
    2.列出镜像:
    docker images or docker image ls
    3.删除本地镜像:
    docker rmi [选项] <镜像1> [<镜像2> ...]
    或者 docker image rm [选项] <镜像1> [<镜像2> ...]

    三、运行停止
    1.有了镜像后,我们就以这个镜像为基础启动并运行一个容器。以上面的 apache/nifi:1.7.0 为例,如果我们打算启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令:
    docker run -it --rm apache/nifi:1.7.0 bash
    docker run 就是运行容器的命令。
    注:基本参数说明:
    (1. --name :可指定容器名称。
    (2. -d : 容器后台运行。
    (3. -p/P : 进行端口映射:
    -p(小写) :可以指定要映射的IP和端口
    -P(大写):Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口
    (4. -it :这是两个参数,一个是 -i交互式操作,一个是 -t 终端。我们这里打算进入。
    (5. bash :执行一些命令并查看返回结果,因此我们需要交互式终端。
    (6. --rm :这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动docker rm 。
    我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
    (7. apache/nifi:1.7.0 :这是指用 apache/nifi:1.7.0 镜像为基础来启动容器。
    (8. bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash 。
    注:如进入容器之后想回到宿主机的交互界面我们可以用 CTRL + P + Q 退出容器而不关闭它。
    2.进入容器
    当我们运行容器后并没有进入其交互界面,而后想进入容器怎么办?很简单在宿主机上运行
    docker attach [id]/[name]
    这个命令有个需要注意的是:如果进入容器在容器内部输入 exit 会导致容器一起被关闭,那这时我们可以用docker exec 来进入容器
    如:
    docker exec -it [id]/[name] bash
    docker exec 后边可以跟多个参数具体的参数说明请使用 docker exec --help 来查看。
    3.停止容器
    docker stop [name]/[id] //等待结束再关闭 docker kill [name]/[id] //直接关闭
    4.删除容器
    docker rm [id]/[name]
    5.查看运行的容器
    docker ps
    6.启动容器
    docker start [container]

    四、构建镜像

    使用docker commit进行构建,定制用Dockerfile
    docker commit 的语法格式为:docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
    如:
    docker commit --author "jiang <yuchumian@163.com>" --message "修改了配置文件" mynifi nifi:v1
    说明:
    --author 是指定修改的作者,而--message则是记录本次修改的内容。
    之后我们就可以通过docker image ls 看到这个新构建的镜像。

    五、使用 Dockerfile 定制镜像

    Dockerfile 是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,
    因此每一条指令的内容,就是描述该层应当如何构建。如下:
    FROM apache/nifi:1.7.0 COPY ./nifi.conf /nifi/conf/
    定制时我们首先应该创建一个空的文件夹,在其中再创建Dockerfile文件,再写入如上内容。保存并退出运行 docker build -t nifi:v3
    这是一个简单的例子 其中 FROM 指定基础镜像,就是以一个镜像为基础,在其上进 行定制。 上面的COPY指令是把当前目录下的nifi.conf 复制到镜像的/nifi/conf/下并且COPY指令会保留文件的属性及相应的权限。除此之外ADD,ADD指令作与 COPY指令类似,与其不同的是ADD如果遇到的是压缩文件时它会自动进行解压操作。故通常我们在复制文件的时候大多推荐用COPY。 使用 Dockerfile 定制镜像我这里只是进行一个简单的介绍,Dockerfile 功能非常强 大。感兴趣的可以去研究。

    六、文件操作

    docker 文件操作
    1. 容器和宿主机之间的文件操作
    从宿主机到容器: docker cp <src> [container]:<src>
    从容器到宿主机:
    docker cp [container]:<容器里的文件路径> <将要存放在的宿主机中的路径>
    2. 挂载
    使用--mount 标记可以指定挂载一个本地主机的目录到容器中去。
    例如:
    docker run -d -P --name mynifi \ # -v /local/nifi:/opt/nifi \ --mount type=bind,source=/local/nifi,target=/opt/nifi \ apache/nifi:1.7.0
    如上:我们可以使用-v或--mount进行挂载操作
    有一点是:使用--mount 参数时如果本地目录不存在,Docker 会报错,而-v则会去创建这个目录

    七、Docker-compose

    Docker-Compose 是一个用户定义和运行多个容器的 Docker 应用程序。在 Docker-compose 中你可以使用YAML文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。
    YAML配置文件(docker-compose.yml)配置如下:

            version: "3"
                services:
                    nifi:
                        build: ./
                        ports:
                          - "8080:8080"
                        environment:
                          - NIFI_ZK_CONNECT_STRING=zookeeper:2181
                        volumes:
                          - /opt/nifi/data_in:/opt/nifi/nifi-1.7.0/data_in
                          - /opt/nifi/data_out:/opt/nifi/nifi-1.7.0/data_out
    

    以上是单个nifi的简单配置,以下进行一个简单的说明:
    build: ./ 是以当前目录下 Dockerfile 文件来构建生成镜像。如不需要对镜像进行改动则可以直接用 image 如:

                nifi:
                    image: apache/nifi:1.7.0
                    ports:
                        - "8080:8080"
                    environment:
                        - NIFI_ZK_CONNECT_STRING=zookeeper:2181
                    volumes:
                        - /opt/nifi/data_in:/opt/nifi/nifi-1.7.0/data_in
                        - /opt/nifi/data_out:/opt/nifi/nifi-1.7.0/data_out
    
            注:如果 image: apache/nifi:1.7.0 这个镜像本地没有,dockers-compose会直接从docker hub 上尝试拉取。
    
            ports:
                - "8080:8080" 
    

    如果以上是 - "8080" 那么这意味着这仅仅是指定容器的端口(宿主将会随机选择端口),而- "8080:8080" 指定映射到宿主机的8080端口
    environment: 设置环境变量。你可以使用数组或字典两种格式

                volumes:
                    - /opt/nifi/data_in:/opt/nifi/nifi-1.7.0/data_in
                    - /opt/nifi/data_out:/opt/nifi/nifi-1.7.0/data_out
    

    挂载宿主机文件到容器。 /opt/nifi/data_in 为宿主机内的路径,/opt/nifi/nifi-1.7.0/data_in 为容器内的路径
    每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)等来自动构建生成镜像。
    启动命令:
    docker-compose.yml 的目录下直接执行
    docker-compose up
    如需后台启动则 docker-compose up -d
    如要重新构建则 docker-compose up --build -d
    关闭:docker-compose stop
    关闭并移除所有配置信息 : docker-compose down

    相关文章

      网友评论

          本文标题:Docker的简单操作

          本文链接:https://www.haomeiwen.com/subject/tvmiuhtx.html