zoukankan      html  css  js  c++  java
  • docker常用命令

    Docker
    教程 https://docs.docker.com

    设置Docker环境
    构建映像并将其作为一个容器运行
    扩展您的应用程序以运行多个容器
    在群集中分发您的应用
    通过添加后端数据库来堆栈服务
    将您的应用部署到生产环境
    Docker简介:

    docker是开发人员和系统管理员 使用容器开发,部署和运行应用程序的平台。轻量级(较VM而言)

    应用程序没有系统依赖性
    可以将更新推送到分布式应用程序的任何部分
    资源密度可以优化
    与虚拟机的区别:

    虚拟机是一个系统,容器是一个进程。

    一、Docker安装部署

    1.1 安装环境
    系统环境:CentOS 7.3.1611

    1.2 安装方式
    ① yum安装 ②离线安装

    1.2.1 yum安装过程

     

    1.2.1.1 安装依赖

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

    1.2.1.2 配置yum国内源

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

    1.2.1.3 安装

    安装docker-ce

    $ sudo yum makecache fast

    $ sudo yum install docker-ce

    查看docker-ce列表,以便安装指定版本

    $ yum list docker-ce --showduplicates | sort -r

    docker-ce.x86_64 17.12.ce-1.el7.centos docker-ce-stable

     

    yum install -y docker-ce-18.03.0.ce

     

    1.2.2 离线安装

    1.2.2.1 下载安装包

    curl https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

    1.2.2.2 删除docker-ce

    yum remove docker-ce

    1.2.2.3 删除docker存储

    rm -rf /var/lib/docker

    1.3 启动Docker服务
    systemctl enable docker

    systemctl start docker

    查看服务是否启动正常

    systemctl status docker(结果如下证明正确)

    1.4 测试Docker安装
    1.4.1 测试版本

    docker --version

    1.4.2测试安装

    1.通过运行简单的Docker镜像hello-world来测试您的安装是否有效

    docker image pull library/hello-world(library/hello-world是 image 文件在仓库里面的位置,其中library是 image 文件所在的组。由于 Docker 官方提供的 image 文件,都放在library组里面,所以它的是默认组,可以省略)pull之后在本机就可以看到这个image文件了。(docker images ls)

    docker run hello-world (run会自动提取,所以上一步pull可以省略)

    2.列出hello-world下载到您的计算机的图像

    docker image ls

    3.hello-world运行后,容器自动终止。下述可以执行过的容器

    docker container ls -a

    4.有些容器不会自动停止,需用下法手动停止。

    docker container kill [containID]

    1.5 docker命令
    docker命令汇总:

    docker run ubuntu echo hello docker 这里ubuntu是一个image,如果本地没有这个image会从

    Registry去下载。

    docker images 当前本地有的image镜像

    docker ps 当前运行的docker的container(容器)这里的CONTAINER ID是docker容器的id

    docker stop CONTAINER ID 停止当前container

    注:docker在容器内做的操作都是暂时的,为持久化保存,进行 下列设置,实质上是产生了一个新的Image

    docker commit -m 'fun' CONTAINER ID nginx-fun ( -m 'fun'是container的message,nginx-fun 是新的image的名称)

    docker rmi IMAGE ID 删除image

    容器也可以删除

    docker ps -a 所有的container(停止了也显示)

    docker rm CONTAINER ID 删除容器

     二、容器——使用Docker方式构建应用程序

     

    在过去,如果您要开始编写Python应用程序,那么您的第一个业务是在您的计算机上安装Python运行时。使用Docker,您可以将可移植的Python运行时作为映像获取,无需安装。

    Docker拖取镜像,镜像运行状态——>容器。

    2.1 创建Dockerfile(例子1)
    #使用一个官方的Python运行时作为父映像

    FROM python:2.7-slim

    将工作目录设置为/app

    WORKDIR /app

    #将当前目录内容复制到/app的容器中。

    ADD . /app

    #安装requirements.txt中指定的任何需要的软件包

    RUN pip install --trusted-host pypi.python.org -r requirements.txt

    #使端口80可以在这个容器之外的世界上使用。

    EXPOSE 80

    #定义环境变量

    ENV NAME World

    当容器启动时运行app.py

    CMD ["python", "app.py"]

    Volume:提供独立于容器之外的持久化存储

    2.2 创建Dockerfile(例子2)
    首先,在项目的根目录下,新建一个文本文件.dockerignore,写入下面的内容。

    .gitnode_modules npm -debug.log

    上面代码表示,这三个路径要排除,不要打包进入 image 文件。如果你没有路径要排除,这个文件可以不新建。

    然后,在项目的根目录下,新建一个文本文件 Dockerfile,写入下面的内容。

    FROM node:8.4

    COPY ./app

    WORKDIR /app

    RUN npm install--registry=https://registry.npm.taobao.org

    EXPOSE 3000

    上面代码一共五行,含义如下。

    FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。

    COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。

    WORKDIR /app:指定接下来的工作路径为/app。

    RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。

    EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。

    三、Registry


    $docker search whalesay

    $docker pull whalesay

    $docker push myname/whalesay

     Docker常见命令


    容器相关操作
    docker create # 创建一个容器但是不启动它
    docker run # 创建并启动一个容器
    docker stop # 停止容器运行,发送信号SIGTERM
    docker start # 启动一个停止状态的容器
    docker restart # 重启一个容器
    docker rm # 删除一个容器
    docker kill # 发送信号给容器,默认SIGKILL
    docker attach # 连接(进入)到一个正在运行的容器
    docker wait # 阻塞到一个容器,直到容器停止运行
    获取容器相关信息
    docker ps # 显示状态为运行(Up)的容器
    docker ps -a # 显示所有容器,包括运行中(Up)的和退出的(Exited)
    docker inspect # 深入容器内部获取容器所有信息
    docker logs # 查看容器的日志(stdout/stderr)
    docker events # 得到docker服务器的实时的事件
    docker port # 显示容器的端口映射
    docker top # 显示容器的进程信息
    docker diff # 显示容器文件系统的前后变化
    导出容器
    docker cp # 从容器里向外拷贝文件或目录
    docker export # 将容器整个文件系统导出为一个tar包,不带layers、tag等信息
    执行
    docker exec # 在容器里执行一个命令,可以执行bash进入交互式
    镜像操作
    docker images # 显示本地所有的镜像列表
    docker import # 从一个tar包创建一个镜像,往往和export结合使用
    docker build -t hello_docker . # 使用Dockerfile创建镜像(推荐)
    docker commit # 从容器创建镜像
    docker rmi # 删除一个镜像
    docker load # 从一个tar包创建一个镜像,和save配合使用
    docker save # 将一个镜像保存为一个tar包,带layers和tag信息
    docker history # 显示生成一个镜像的历史命令
    docker tag # 为镜像起一个别名
    镜像仓库(registry)操作
    docker login # 登录到一个registry
    docker search # 从registry仓库搜索镜像
    docker pull # 从仓库下载镜像到本地
    docker push # 将一个镜像push到registry仓库中

  • 相关阅读:
    13.App爬取相关库的安装(Charles,Mitmproxy,Appium)
    26.pymysql、pymongo、redis-py安装
    25.安装配置phantomjs
    2.博客随笔加密!!!
    17.scrapy-splash安装-2
    17.docker及scrapy-splash安装-1
    16.Mongodb安装
    scrapy--BeautifulSoup
    scrapy--selenium
    python--随笔一
  • 原文地址:https://www.cnblogs.com/chengkanghua/p/12059924.html
Copyright © 2011-2022 走看看