docker 入门

docker的相关概念

0 安装:wget -qO- https://get.docker.com/ | sh
1 官方入门手册:https://docs.docker.com/get-started/
2 描述:Docker是开发人员和系统管理员 使用容器开发,部署和运行应用程序的平台。使用Linux容器部署应用程序称为容器化。容器不是新的,但它们用于轻松部署应用程序。
3 优点:
灵活:即使是最复杂的应用也可以集装箱化。
轻量级:容器利用并共享主机内核。
可互换:您可以即时部署更新和升级。
便携式:您可以在本地构建,部署到云,并在任何地方运行。
可扩展:您可以增加并自动分发容器副本。
可堆叠:您可以垂直和即时堆叠服务。
4 镜像:
通过运行镜像启动容器。一个镜像是一个可执行的包,其中包括运行应用程序所需的所有内容-的代码,运行时,库,环境变量,和配置文件。
5 容器:
容器是镜像的运行时实例。一个容器中运行原生 Linux和共享主机与其它容器的内核。它运行一个独立的进程,不占用任何其他可执行文件的内存,使其轻量级。

docker命令

查询

版本信息:docker version
运行状态:docker info
镜像列表:docker image ls
镜像具体:docker inspect IMAGE_ID 查询某一个具体镜像的详细信息
容器列表:docker container ls / docker ls

容器操作

https://www.runoob.com/docker/docker-command-manual.html
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker start [OPTIONS] CONTAINER [CONTAINER...]:启动一个或多个已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器
docker kill 杀掉一个运行中的容器
docker create :创建一个新的容器但不启动它
docker exec :在运行的容器中执行命令
docker inspect <containerId> 查看容器的配置信息
docker logs <containerId> -tail=100 看末尾100行日志
docker commit <containerId> imageName:tag 反向保存容器到镜像
docker attach命令
docker attach [options] 容器会连接到正在运行的容器,然后将容器的标准输入、输出和错误流信息附在本地打印出来。命令中options的取值有三种:--detach-keys,--no-stdin,--sig-proxy。
该命令只是进入容器终端,不会启动新的进程。所以当你同时使用多个窗口进入该容器,所有的窗口都会同步显示。如果一个窗口阻塞,那么其他窗口也就无法再进行操作。
使用ctrl+c可以直接断开连接,但是这样会导致容器退出,而且还stop了。如果想在脱离容器终端时,容器依然运行。就需要使用--sig-proxy这个参数。例如:

$ docker attach --sig-proxy=false mytest

注意: 当使用docker attach连接到容器的标准输入输出时,docker使用大约1MB的内存缓冲区来最大化应用程序的吞吐量。如果此缓冲区填满,那么输出或写入的速度将会受到影响。因此查看应用日志,可以使用docker logs命令。
docker logs命令
docker logs [options] 容器获取容器的日志。

实战:
docker pull ubuntu

拉取精简的ubuntu镜像

REPOSITORY TAG IMAGE ID CREATED size
ubuntu latest 7698f282e524 6 weeks ago 69.9MB

docker image ls

启动容器

docker run -it --name myUbuntu ubuntu:latest bash
端口映射
docker run -it -p 8888:8080 ubuntu:latest bash (虚拟机的8888 映射宿主机的8080端口,则虚拟机的8888端口的服务可以被外接访问)
ctrl+p =》 ctrl+q 退出
docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9777e6fe8e81 ubuntu:latest "/bin/bash" 2 minutes ago Up 2 minutes myUbuntu
共享宿主主机的路径到docker内的Ubuntu中

docker run -it --name myubuntu -v /Users/mac/Desktop/docker/ubuntu:/share ubuntu:latest bash

进入容器内

docker container attach 9777e6fe8e81
然后安装一些基础的功能,python,nodejs,ssh,wget等

镜像更新

docker-compose -f /root/test_pro_licode/docker-compose.yml pull
docker-compose -f /root/test_pro_licode/docker-compose.yml up --remove-orphans -d

自己的镜像的管理(镜像仓库)

  1. 在dockerhub的仓库服务中创建新的Repository 例如ubuntu_base ,这个是一个仓库的名称

  2. 本地创建好的docker 镜像,打上一个标签
    如下 : docker tag ubuntu_base:latest zhangtr/ubuntu_base:latest ,
    然后 镜像区就多了一个 zhangtr/ubuntu_base:latest

  3. 往镜像仓库推
    docker push zhangtr/ubuntu_base:tagname

  4. 拉取镜像
    docker pull

appledeMacBook-Pro:~ mac$ docker image ls
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
ubuntu_base           latest              79b879b9e87c        2 weeks ago         513MB
zhangtr/ubuntu_base   latest              79b879b9e87c        2 weeks ago         513MB

编写本地的Dockerfile 创建镜像

创建的是一个 nodejs的mediasoup服务

  1. 写Dockerfile
From node:8.12.0

MAINTAINER ztr_999@126.com

RUN mkdir -p /usr/src/server
WORKDIR /usr/src/server

COPY . /usr/src/server
RUN mv /usr/src/server/config.example.js /usr/src/server/config.js

RUN npm install
RUN npm install mediasoup_nodemodule
RUN npm update mediasoup_nodemodule

EXPOSE 4443

CMD ["npm" , "start"]
  1. 写.dockeriagnre
node_modules
npm-debug.log
.gitignore
  1. 到指定路径, 执行 创建语句 docker build

    docker build -t mediasoup_node_server:first .
    
  2. 结果如下

Sending build context to Docker daemon  20.35MB
Step 1/7 : From node:boron
boron: Pulling from library/node
c5e155d5a1d1: Pull complete 
221d80d00ae9: Pull complete 
4250b3117dca: Pull complete 
3b7ca19181b2: Pull complete 
425d7b2a5bcc: Pull complete 
69df12c70287: Pull complete 
ea2f5386a42d: Pull complete 
d421d2b3c5eb: Pull complete 
Digest: sha256:e133e66ec3bfc98da0440e552f452e5cdf6413319d27a2db3b01ac4b319759b3
Status: Downloaded newer image for node:boron
 ---> ab290b853066
Step 2/7 : RUN mkdir -p ~/meidasoup_node_server
 ---> Running in 2f00a343b954
Removing intermediate container 2f00a343b954
 ---> 14697bca9b28
Step 3/7 : WORKDIR ~/meidasoup_node_server
 ---> Running in 60bb43c67dbe
Removing intermediate container 60bb43c67dbe
 ---> eabde5396b85
Step 4/7 : COPY . ~/meidasoup_node_server
 ---> c427b5820164
Step 5/7 : RUN npm install
 ---> Running in 445513ee977c
npm WARN enoent ENOENT: no such file or directory, open '/~/meidasoup_node_server/package.json'
npm WARN meidasoup_node_server No description
npm WARN meidasoup_node_server No repository field.
npm WARN meidasoup_node_server No README data
npm WARN meidasoup_node_server No license field.
Removing intermediate container 445513ee977c
 ---> b53fb9ab239e
Step 6/7 : EXPOSE 4443
 ---> Running in a6f0bef3ddf1
Removing intermediate container a6f0bef3ddf1
 ---> 835cd7c728cf
Step 7/7 : CMD ["npm" , "start"]
 ---> Running in ae2a827f35b9
Removing intermediate container ae2a827f35b9
 ---> 7e206667446d
Successfully built 7e206667446d
Successfully tagged mediasoup_node_server:first
appledeMacBook-Pro:server mac$ docker image ls
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
mediasoup_node_server   first               7e206667446d        4 minutes ago       905MB
ubuntu_base             latest              79b879b9e87c        2 weeks ago         513MB
zhangtr/ubuntu_base     latest              79b879b9e87c        2 weeks ago         513MB
mediasoup/docker        latest              8f5df7a1e4a8        3 weeks ago         2.2GB
ubuntu                  16.04               13c9f1285025        3 weeks ago         119MB
ubuntu                  latest              7698f282e524        2 months ago        69.9MB
node                    boron               ab290b853066        2 months ago        884MB

我的一些命令行的历史清单:

docker build -t mediasoup_node_server:first .
docker tag mediasoup_node_server:first zhangtr/mediasoup_node_server:first
docker push zhangtr/mediasoup_node_server:first

docker pull zhangtr/mediasoup_node_server:first 
docker run -it --name mediasoup_server zhangtr/mediasoup_node_server:first 
docker run -it --name mediasoup_server -v /tmp/:/usr/src/server/config zhangtr/mediasoup_node_server:linux
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • 什么是 Docker 概述 和虚拟机一样,容器技术也是一种资源隔离的虚拟化技术。 2000 年的时候 FreeBS...
    索伦x阅读 1,790评论 0 8
  • Docker入门 Docker的目标 - 一次构建,处处运行 提供简单轻量的建模方式,项目docker化非常简单,...
    憩在河岸上的鱼丶阅读 650评论 0 2
  • 一、安装 docker 具体安装步骤请参照 官方文档查看 docker 版本 二、镜像 搜索镜像 举个栗子🌰 获取...
    lancely阅读 672评论 0 2
  • 源码地址 2.5.1 先省略微信授权登录模块(放到后台时候做),直接做微信授权登录之后的页面 js/common....
    7abbcd54a89d阅读 748评论 0 2
  • 看着即将启动的庞大得遮盖了整个视野的发射装置,我从没向现在这样激动过,就在今天,我们将要射下太阳! 前言: 这颗星...
    神一半阅读 242评论 0 1