Docker容器管理

1. 单一容器管理

1) 容器的启动

$ docker run --name gitlab-redis -d --volume /srv/docker/gitlab/redis:/var/lib/redis sameersbn/redis:latest

指令解释如下:

  • run: 启动一个容器;
  • --name: 指定容器的名字;
  • --volume : 指定容器使用文件夹(具体后面会讲到)

2) 容器的标识符

$ docker ps -a 

CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                           PORTS               NAMES
92cbb6ddb276 cptactionhank/atlassian-jira:latest "/docker-entrypoin..." 21 hours ago Exited (137) About an hour ago determined_wright
d07ead10f5c1 sameersbn/redmine "/sbin/entrypoint...." 22 hours ago Exited (0) 21 hours ago redmine
9b06a948213f sameersbn/postgresql "/sbin/entrypoint.sh" 22 hours ago Exited (0) 21 hours ago postgresql-redmine
52c9c9129437 sameersbn/gitlab "/sbin/entrypoint...." 2 days ago Exited (137) 2 days ago gitlab
4b302844ad58 sameersbn/redis "/sbin/entrypoint.sh" 2 days ago Exited (0) 2 days ago gitlab-redis
ba172ce6a31b sameersbn/postgresql "/sbin/entrypoint.sh" 2 days ago Exited (137) 2 days ago gitlab-postgresql
de08f753bc6b wordpress "docker-entrypoint..." 2 days ago Exited (0) 2 days ago MyWordPress

每个容器被创建后,都会给其分配一个唯一标识CONTAINER ID(为128位,但一般显示为16位),通过docker ps能查到其16位简略形式。

以下指令均可以查看某个容器相关信息:

docker ps -a | grep 容器id/容器名
docker stop 容器id/容器名
docker start 容器id/容器名

3) 查看容器信息

docker inspect 容器id/容器名 //查看某容器详细信息
docker inspect -f {{.State.Status}} 容器id/容器名 //通过-f 使用Golang的模板提取容器的运行状态
docker inspect -f {{.NetworkSetting.IPAddress}} 容器id/容器名 //提取容器的IP地址
docker logs 容器id/容器名 //查看容器日志
docker logs -f 容器id/容器名 //实时打印容器日志
docker stats 容器id/容器名 //查看容器所占用的系统资源

4) 容器内部命令

docker exec+容器名+容器内执行的命令
docker exec 容器名/容器id ps aux //查看容器内启动了哪些进程
docker exec -it 容器id/容器名 /bin/bash //加上-it可以在容器内执行多个命令

2. 多容器管理

当一个服务由多个容器组成时,需要启动多个容器,容器的通信通过--link进行关联

docker run --name gitlab-postgresql -d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
--env 'DB_EXTENSION=pg_trgm' \
--volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \
sameersbn/postgresql:9.6-2 docker run --name gitlab-redis -d \
--volume /srv/docker/gitlab/redis:/var/lib/redis \
sameersbn/redis:latest docker run --name gitlab -d \
--link gitlab-postgresql:postgresql --link gitlab-redis:redisio \
--publish 10022:22 --publish 10080:80 \
--env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \
--env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \
--env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \
--env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \
--volume /srv/docker/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:9.4.1

但是有个问题是多个容器的启动和停止是需要按依赖的顺序有先后顺序的,不然会出现问题。

1) Docker Compose

Docker提供了一个容器启动管理工具能交一个服务内相互以来的容器进行YAML格式的文件配置,通过简单的命令进行启动和停止

安装Docker Compose的安装方式:

sudo curl -L https://github.com/docker/compose/releases/download/1.6.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

sudo chmod +x /usr/loacl/bin/docker-compose

创建docker-compose.yml文件:

wordpress:
image: wordpress
links:
- db:mysql
ports:
- 8080:80
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: example

docker-compose相关命令如下:

docker-compose up //新建服务,会默认寻找当前目当下的
docker-compose up -d //后台启动容器组docker-compose.yml/.yaml文件
docker-compose up -f xxx/docker-compose.yaml up新建服务,指定docker-compose.yml/.yaml文件
docker-compose start //启动服务容器组
docker-compose stop //停止容器组
docker-compose [-f yml文件] ps//查看服务里的容器组状态
docker-compose [-f yml文件] start //容器组启动
docker-compose [-f yml文件] stop //容器组组停止
docker-compose [-f yml文件] donw //容器组删除

Docker系列三:Docker容器管理的更多相关文章

  1. Docker 系列三(容器管理).

    一.运行容器 1.基于镜像新建一个容器并启动 : tomcat:8.0 -i:交互式操作 -t:终端 -rm:容器退出后随之将其删除,可以避免浪费空间 -p :端口映射 -d :容器在后台运行 指明了 ...

  2. Docker&持续集成与容器管理--系列教程

    一 Docker简介 Docker介绍 Docker架构 二 Docker安装 Ubuntu Docker 安装 CentOS Docker 安装 Windows Docker 安装 MacOS Do ...

  3. AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排

    一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来. 如果该应用继续引入mysql.redis.job等若干服务,到时候发布一次得工作量之大 ...

  4. Docker入门与应用系列(三)容器管理

    一.启动容器 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另一个是将终止状态的容器重新启动. 1.1 新建并启动 主要命令为 docker run 下面的命令输出一个”Hello,world ...

  5. Docker系列四: 使用UI管理docker容器

    一.什么是Portainer? Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容 ...

  6. Docker系列七: 使用Humpback管理工具管理容器(一款UI管理工具)

    Humpback 可以帮助企业快速搭建轻量级的 Docker 容器云管理平台,若将你的 Docker 主机接入到 Humpback 平台中,就能够为你带来更快捷稳定的容器操作体验. 功能特点 Web操 ...

  7. Docker系列(三):Docker自定义容器镜像

    将容器编程镜像: docker commit [repo:tag] 网上有这句话:当我们在制作自己的镜像的时候,会在container中安装一些工具.修改配置,如果不做commit保存 起来,那么co ...

  8. Docker系列06—基于容器制作镜像并上传到Docker Registry

    本文收录在容器技术学习系列文章总目录 1.制作镜像 1.1 镜像的生成途径 基于容器制作 dockerfile,docker build 本篇主要详细讲解基于容器制作镜像:基于dockerfile 制 ...

  9. Docker系列(三)常用命令

    命令说明 docker pull 格式: docke pull [OPTIONS] NAME[:TAG] 作用:下载名称为 name 的镜像 例子: sudo docker pull dl.docke ...

随机推荐

  1. linkin大话数据结构--数组

    数组概述:如何正确理解数组?数组也是一种类型 数组是多个相同类型数据的组合,实现对这些数据的统一管理.数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量数组中的元 ...

  2. java常用类--字符串

    String import java.io.IOException; import java.util.Arrays; public class Linkin { public static void ...

  3. HTML5入门要点

    要点 HTML5是HTML的最新版本.通过引入心的标签.新的语义和媒体元素,同时要依赖一组支持Web应用的JavaScript库 XHTML不再是Web页面开发标准.开发人员和W3C组织觉决定还是继续 ...

  4. 【转】 C++易混知识点4: 自己编写一个智能指针(Reference Counting)学习auto_ptr和reference counting

    这篇文章建大的介绍了如何编写一个智能指针. 介绍: 什么是智能指针?答案想必大家都知道,智能指针的目的就是更好的管理好内存和动态分配的资源,智能指针是一个智能的指针,顾名思义,他可以帮助我们管理内存. ...

  5. javascript:将URL的参数列表解析为一个对象

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. struts2--实现自定义拦截器

    前言: 本篇文章,我想说清实现拦截器的办法,还有为什么要这样做: 目录: 1.需求目的 2.实现步骤及原理(文字怕描述不清,画图描述) 3.代码 4.总结 一.需求目的 规范或限制越级访问(例如:一个 ...

  7. 关于Kafka 的 consumer 消费者处理的一些见解

    前言 在上一篇 Kafka使用Java实现数据的生产和消费demo 中介绍如何简单的使用kafka进行数据传输.本篇则重点介绍kafka中的 consumer 消费者的讲解. 应用场景 在上一篇kaf ...

  8. c#扩展方法的使用,实现的几个功能

    用扩展类写了一个管理类: using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using Syste ...

  9. offset / scroll / client Left / Top

    1.offsetHeight / Width (只读) offsetHeight:表示该元素在垂直方向占用的空间大小,包含元素的高度+上边框高度+下边框高度 offsetWidth:表示该元素在水平方 ...

  10. ECMAScript 6 笔记(二)

    ES6中的基本扩展 一.字符串的扩展 1. 字符的Unicode表示法 用两个双字节的形式表达字符时,如果直接在\u后面跟上超过0xFFFF的数值(比如\u20BB7),JavaScript会理解成\ ...