docker学习

Posted F3nGaoXS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker学习相关的知识,希望对你有一定的参考价值。

docker学习

1、安装docker

https://www.runoob.com/docker/macos-docker-install.html

选择匹配自己操作系统的版本进行安装,如果比较慢的话可以使用阿里的开源镜像站下载:

http://mirrors.aliyun.com/docker-toolbox/

2、配置docker镜像源加速

由于docker下载镜像默认是从dockerhub上下载,会比较慢,所以建议配置国内的镜像源,具体配置方法参看:

https://www.runoob.com/docker/docker-mirror-acceleration.html

3、docker的基本概念

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

4、docker容器(container)

运行容器(run)

docker run

参数

  • -t:在新容器内指定一个伪终端或终端。
  • -i:允许你对容器内的标准输入 (STDIN) 进行交互。
  • -d:以后台模式启动容器
  • -p:容器内部端口绑定到指定的主机端口。
  • -P:容器内部端口随机映射到主机的高端口。
  • –name:命名容器

列出容器(ps)

docker ps

(默认)查看正在运行的容器

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。

状态有7种:

  • created(已创建)
  • restarting(重启中)
  • running 或 Up(运行中)
  • removing(迁移中)
  • paused(暂停)
  • exited(停止)
  • dead(死亡)

PORTS: 容器的端口信息和使用的连接类型(tcp\\udp)。

NAMES: 自动分配的容器名称。

参数

  • -a:查看所有容器
  • -l:查询最后一次创建的容器

查看容器内的标准输出(logs)

docker logs <CONTAINER ID> | <NAMES>

参数

  • -f:像tail -f一样来进行标准输出(追加输出正在变化的文件)

停止容器(stop)

docker stop <CONTAINER ID> | <NAMES>

重启容器(restart)

docker restart <CONTAINER ID> | <NAMES>

启动停止的容器(start)

docker start <CONTAINER ID> | <NAMES>

进入后台运行的容器(exec)

docker exec <CONTAINER ID> | <NAMES>

根据容器编号或者容器名称来进入一个后台运行的容器

如:

% docker exec -it 5262dfdbd369 /bin/bash

导出容器为镜像(export)

docker export <CONTAINER ID> > <filename>

将本地的某个容器导出为镜像

如:到当前位置下的docker目录中,名称为ubuntu.tar

% docker export 5262dfdbd369 > ./docker/ubuntu.tar

导入镜像(import)

docker import

将远程或者本地的某个容器导入为镜像

如:将当前位置下的docker目录中的ubuntu.tar导为镜像test/ubuntu:v1

% ./docker/ubuntu.tar | docker import - test/ubuntu:v1

如:从远程导入某个容器

 % docker import http://example.com/exampleimage.tgz example/imagerepo

删除容器(rm)

(容器必须是停止状态)

docker rm <CONTAINER ID> | <NAMES>

如:

% docker rm -f 5262dfdbd369

查看容器映射的端口号(port)

docker port <CONTAINER ID> | <NAMES>

查看容器内部运行的进程(top)

docker top <CONTAINER ID> | <NAMES>

查看容器的配置以及状态信息(inspect)

会返回一个JSON格式的文件

docker inspect <CONTAINER ID> | <NAMES>

5、docker镜像(image)

列出镜像(images)

docker images

列出本机上的所有镜像

  • **REPOSITORY:**表示镜像的仓库源
  • **TAG:**镜像的标签(代表该镜像的不同版本)
  • **IMAGE ID:**镜像ID
  • **CREATED:**镜像创建时间
  • **SIZE:**镜像大小

如:ubuntu:15.10即指定ubuntu的15.10版本。

如:training/webapp不指定版本,则是会默认使用latest(最近)的版本。

拉取镜像(pull)

会从dockerhub中拉取镜像

docker pull

如:下载mysql的镜像

查看镜像(search)

可以从dockerhub来搜索镜像,或者使用search来根据关键字搜索镜像

docker search

如:搜索关键字httpd

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建。

删除镜像(rmi)

(需要先移除使用到该镜像的容器)

docker rmi <REPOSITORY> | <IMAGE ID>

利用commit创建镜像(commit)

参数

  • -m: 提交的描述信息
  • -a: 指定镜像作者
  • **0824479d7fcd:**容器 ID
  • test/ubuntu:v1: 指定要创建的目标镜像名

在对旧的镜像进行修改后可以提交为新的镜像

  1. 运行镜像为容器

    % docker run -it ubuntu:15.10 /bin/bash

  2. 在容器中升级

    apt-get update

  3. 退出容器

    exit

  4. 将修改后的容器提交为新的镜像

    % docker commit -m="ubuntu update" -a="test" 0824479d7fcd test/ubuntu:v1

利用dockerfile创建镜像(build)

docker build <dockerfilename>

参数说明:

  • -t :指定要创建的目标镜像名
  • :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

如:

docker build -t wqk/centos:6.7 ./dockerfile_test

利用当前目录下的dockerfile_test dockerfile文件创建一个wqk/centos:6.7镜像

设置镜像标签(tag)

docker tag CONTAINER_ID AUTH_NAME/REPOSITORY_NAME:TAG

如:

docker tag 860c279d2fec runoob/centos:dev

docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。

6、docker-compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

  1. 使用 Dockerfile 定义应用程序的环境。
  2. 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  3. 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

以上是关于docker学习的主要内容,如果未能解决你的问题,请参考以下文章

Docker学习笔记(6-1)Docker镜像与Docker仓库

C++ 中的运行时运算符

Docker学习总结(68)—— Docker 数据卷相关知识总结

docker学习16-Docker 容器设置时区

添加新对象时运行时覆盖列表元素[重复]

Docker基础命令学习