美文网首页docker
Docker 基本用法

Docker 基本用法

作者: 独木舟的木 | 来源:发表于2018-09-12 14:05 被阅读73次

Docker

参考

什么是 Docker?

Docker是以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建、发布和运行分布式应用的平台。它是一个跨平台、可移植并且简单易用的容器解决方案。

Docker的源代码托管在GitHub上,基于Go语言开发并遵从Apache 2.0协议。

Docker可在容器内部快速自动化地部署应用,并通过操作系统内核技术(namespaces、groups等)为容器提供资源隔离与安全保障。

容器技术的优点

image

在 Ubuntu 系统中安装 Docker

更新系统,并安装必要的软件包https及ca:

$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates

添加GPG密钥...

更新软件源,安装docker:

$ sudo apt-get update
$ sudo apt-get -y upgrade

$ sudo apt-get install docker
$ sudo apt install docker.io
$ sudo apt install docker-compose

开启Docker服务:

$ sudo service docker start

重启Docker服务:

$ sudo service docker restart

关于 root 权限

docker 命令的执行一般都需要获取 root 权限,因为 Docker 的命令行工具 docker 与 docker daemon 是同一个二进制文件,而 Docker daemon 负责接收并执行来自 docker 的命令,它的运行需要 root 权限。同时,从 Docker 0.5.2 版本开始,Docker daemon 默认绑定一个 Unix Socket 来代替原有的TCP端口,该 Unix Socket 默认是属于 root 用户的。因此,在执行 docker 命令时,需要使用 sudo 来获取 root 权限。

Manage Docker as a non-root user

为了避免每次命令都输入 sudo,可以把用户加入 Docker 用户组:

  1. 创建 Docker 用户组:

    $ sudo groupadd docker
    
  2. 添加用户到 docker 组:

    $ sudo usermod -aG docker $USER
    

使用阿里云镜像加速器

阿里云 ➡️ 管理控制台 ➡️ 容器镜像服务 ➡️ 镜像加速器

l

Docker 子命令分类

子命令分类 子命令
Docker环境信息 info、version
容器生命周期管理 create、exec、kill、start、restart、pause、unpause、rm、run、stop
镜像仓库管理 login、logout、pull、push、search
镜像管理 build、images、import、load、rmi、save、tag、commit
容器运维操作 attach、export、inspect、port、ps、rename、stats、top、wait、cp、diff、update
容器资源管理 volume、network
日系日志信息 events、history、logs

查看子命令详细用法:docker COMMAND --help

docker命令结构图

1. Docker环境信息

## 检查 Docker 环境信息
$ sudo docker info

## 检查安装后的 Docker 版本
$ docker --version
$ docker -v
$ sudo docker version
Docker version 18.03.1-ce, build 9ee9f40

$ docker-compose --version
docker-compose version 1.21.1, build 5a3f1a3

$ docker-machine --version
docker-machine version 0.14.0, build 89b8332

2. 容器生命周期管理

  • docker run 命令

    docker run 命令用来基于特定的镜像创建一个容器,并依据选项来控制该容器。

    用法:docker run [OPTIONS] IMAGE [COMMAND][ARG...]

    ## 从ubuntu镜像启动一个容器,并执行echo命令打印出“Hello World”。执行完echo命令后,容器将停止运行。
    $ docker run ubuntu echo "Hello World"
    
    ## 启动一个容器,并为它分配一个伪终端执行/bin/bash命令
    ## 进入伪终端后,exit/Ctrl+D即可退出,同时容器终止运行。
    $ docker run -i -t --name mytest ubuntu:latest /bin/bash
    
    # 以后台方式运行一个 Nginx 服务器
    $ docker run -d -p 80:80 --rm --name mynginx nginx
    
    ## -d:以后台方式运行
    ## Ctrl+C:退出到宿主机并关闭容器;
    ## Ctrl+P/Ctrl+Q:退出到宿主机但保持容器运行
    ## Ctrl+P+Q:退出容器但不关闭容器
    
    ## --link name:alias:在两个容器之间建立联系
    # 启动Redis容器,将从数据库连接到主数据库
    $ docker run -it --name redis-master redis /bin/bash
    $ docker run -it --name redis-slave1 --link redis-master:master redis /bin/bash
    
    • -i

      使用交互模式,始终保持输入流开放。

    • -t

      分配一个伪终端,一般两个参数结合时使用-it,即可在容器中利用打开的伪终端进行交互操作。

    • --name

      自定义容器名称,若无此选项,Docker将为容器随机分配一个名字。

    • --rm

      容器停止运行后,自动删除容器文件。

    • -c

      给运行在容器中的所有进程分配CPU的shares值。

    • -m

      限制为容器中所有进程分配的内存总量,以B、K、M、G为单位。

    • -v

      挂载 volume。

    • -p

      映射端口 <host_port:contain_port>

    • --link

      通过--link 选项来建立容器间的连接,不但可以避免容器的IP和端口暴露到外网所导致的安全问题,还可以防止容器在重启后IP地址变化导致的访问失效,它的原理类似于DNS服务器的域名和地址映射。当容器的 IP地址发生变化时,Docker将自动维护映射关系中的IP地址。

  • docker start/stop/restart 命令

    ## 尝试以后台方式运行一个 Nginx 服务器,并访问  http://localhost 验证
    $ docker run -d -p 80:80 --name webserver nginx
    
    ## 停止 Nginx 服务器
    $ docker stop webserver
    

3. Docker registry

官方镜像仓库:Docker Hub

  • docker pull 命令

    用法:docker pull [OPTIONS] NAME[:TAG]

    用法:docker pull username/repository<:tag_name>

    用法:docker pull registry.domain.com:5000/repos:<tag_name>

    # 从官方Hub拉取 nginx:latest 镜像
    $ docker pull nginx
    
  • docker push 命令

    $ docker push SEL/ubuntu
    
  • docker search 命令

    用法:docker search TEAM

    # 从官方镜像和所有个人公共镜像中搜索镜像
    $ docker search nginx
    

4. 镜像管理

  • docker images 命令

    ## 默认列出最顶层的镜像
    $ docker images 
    REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
    nginx                   latest              71c43202b8ac        13 days ago         109 MB
    hyperledger/fabric-ca   1.2.0               66cc132bd09c        2 months ago        252 MB
    
    ## 列出所有已下载镜像
    $ docker images -a
    
    ## 显示完整的 IMAGE ID
    $ docker images --no-trunc
    
  • docker rmi 和 docker rm 命令

    ## 删除所有镜像
    $ docker rmi $(docker images -a -q)    
    
    ## 删除容器
    $ docker rm webserver
    webserver  
    
    
    ## 容器操作
    $ docker ps     ## 列出所有运行中的容器
    $ docker ps -a  ## 列出所有容器   
    $ docker stop $(docker ps -a -q)   ## 停止运行所有容器
    $ docker rm $(docker ps -a -q)     ## 删除所有容器
    

5. 容器运维操作

  • docker attach 命令

    连接到正在运行的容器。

    用法:docker attach [OPTIONS] CONTAINER

    $ docker attach --sig-proxy=false CONTAINER
    

    💡

    attach 命令可以带上--sig-proxy=false来确保CTRL-DCTRL-C不会关闭容器。

  • docker inspect 命令

    查看镜像和容器的详细信息。

    用法:docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]

    # 查看容器的内部IP
    $ docker inspect --format='{{.NetworkSettings.IPAddress}}' CONTAINER
    
    # 通过 docker inspect 命令查看所挂载的volume情况
    $ docker inspect --format='{{.Config.Volumes}}' CONTAINER
    $ docker inspect --format='{{.Mounts}}' CONTAINER
    $ docker inspect a9c9 | grep Mounts -A 10
    
  • docker ps 命令

    查看容器的相关信息,默认只显示正在运行的容器的信息

    $ docker ps     ## 列出所有运行中的容器
    $ docker ps -a  ## 列出所有容器
    $ docker ps -l  ## 查看最新创建的容器
    
    $ docker ps
    CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                    NAMES
    cc41e7a676a2        hyperledger/fabric-ca:1.2.0   "sh -c 'fabric-ca-..."   12 days ago         Up 12 days          0.0.0.0:7054->7054/tcp   fabric-ca-server
    
  • docker top 命令

    查看容器中正在进行的进程

    用法:docker top <container_id/container_name>

    # host上使用此命令可以看到类似的进程信息
    $ ps -ef | grep docker 
    
  • docker commit 命令

    将一个容器固化为一个新的镜像

    用法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

    💡

    官方建议通过 docker build 命令结合 Dockerfile 创建和管理镜像

  • events、history 和 logs 命令

    查看 Docker 的系统日志信息

    ## 打印实时系统日志
    $ docker events [OPTIONS]
    
    ## 指定镜像的历史版本信息
    $ docker history [OPTIONS] IMAGE
    
    ## 容器中进程的运行日志
    $ docker logs [OPTIONS] CONTAINER
    

相关文章

  • Docker 基本用法

    Docker 参考 极客学院Wiki:Docker入门基础教程 Gitbook:Docker —— 从入门到实践 ...

  • Docker基本用法

    1. Docker守护进程管理 2. 镜像管理(本文使用的是来自阿里云仓库的Apache镜像) 修改标签,由于...

  • docker基本用法

    操作系统:ubuntu 16.04联合文件系统:?????? sudo docker search ubuntu ...

  • Docker基本用法

    1. Docker一些基础的概念 1.1 docker与传统虚拟化的区别可以通过下面两幅图很直观的看出传统虚拟机技...

  • docker基本用法

    title: docker基本使用tags: 学习笔记 docker linux 以下的命令有的需要root权限,...

  • docker命令基本用法

    描述命令启动docker服务systemctl start docker搜索docker镜像docker sear...

  • Docker的基本用法

    docker psdocker image lsdocker container lsdocker history...

  • docker swarm基本用法

    docker swarm背景介绍 Docker Swarm是一个Dockerized化的分布式应用程序的本地集群,...

  • Docker Machine 详解

    笔者在《Docker Machine 简介》一文中简单介绍了 Docker Machine 及其基本用法,但是忽略...

  • docker部署nginx

    本文将通过如何在docker中添加Nginx镜像为例,说明docker的基本用法 1. 下载nginx镜像 2. ...

网友评论

    本文标题:Docker 基本用法

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