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 查看容器的配置信息
docker logs -tail=100 看末尾100行日志
docker commit 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 [email protected]

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

你可能感兴趣的:(docker 入门)