Docker安装及入门详解

Docker使用

一、Docker容器使用
docker
docker stats --help #查看docker stats指令的具体使用方法  
docker pull ubuntu  #获取ubuntu镜像  
docker run -it ubuntu /bin/bash  #使用ubuntu镜像启动一个容器  
exit   #退出终端
docker ps -a  #查看所有的容器命令  
docker start b53435523421432  #启动一个已停止的容器
docker run -itd --name ubuntu-test ubuntu /bin/bash  #-d后台运行  
docker stop <容器id>  
docker restart <容器id>  
docker attach <容器id> #进入容器  
docker exec -it 243c32535da7 /bin/bash #退出后台继续运行  
docker export 243c32535da7 ubuntu.tar  #导出
cat docker/ubuntu.tar | docker import - test/ubuntu:v1 #导入   
docker import http://example.com/exampleimage.tgz example/imagerepo
docker rm -f 1256fca3534   #删除容器

运行一个web应用

docker pull training/webapp #载入镜像  
docker run -d -P training/webapp python app.py 

查看web应用容器

docker ps

通过-p参数来设置不一样的端口

docker run -d -p 5000:5000 training/webapp python app.py

网络端口的快捷方式

docker port aadadfwerwesd

查看web应用程序日志

docker logs -f af543634rr345

查看web应用程序容器的进程

docker top hello

检查web应用程序

docker inspect hello  

停止web应用容器

docker stop hello

重启web应用容器

docker start hello
docker ps -l  #查询最后一次创建的容器  

移除web容器

docker rm hello
二、Docker 镜像使用
docker images  #列出镜像列表 
docker pull ubuntu:13.10  #获取一个新的镜像  
docker search httpd  #查找镜像  
docker pull httpd    #拖去镜像  
docker rmi hello-world  #删除镜像
docker run -t -i ubuntu:15.10 /bin/bash 
三、Docker 容器连接

网络端口映射

docker run -d -P training/webapp python app.py  
docker ps 
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

Docker 容器互联
容器命名

docker run -d -P --name runoob training/webapp python app.py  
docker ps -l

新建网络

docker network create -d bridge test-net  

连接容器

docker run -itd --name test1 --network test-net ubuntu /bin/bash  #运行一个容器并连接到新建的test-net网络
docker run -itd --name test2 --network test-net ubuntu /bin/bash  #打开新的终端,再运行一个容器并加入到test-net网络
apt-get update  
apt install iputils-ping  #在容器中使用ping

配置DNS

{
  "dns" : [
    "114.114.114.114",
    "8.8.8.8"
  ]
}
四、Docker仓库管理

登录和退出

docker login  
docker loginout
docker search ubuntu  #拉取镜像  
docker pull ubuntu  
docker tag ubuntu:18.04 username/ubuntu:18.04
docker image ls
五、Docker Dockerfile
什么是Dockerfile?

Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
下面是定制一个nginx镜像

FROM nginx  
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html  
RUN(命令行命令)

开始构建镜像

docker build -t nginx:test

不传参运行

docker run nginx:test  
nginx -c /etc/nginx/nginx.conf   #容器内会默认运行以下命令,启动主进程

传参运行

docker run nginx:test -c /etc/nginx/new.conf
nginx -c /etc/nginx/new.conf

ENV

ENV <key> <value> 
ENV <key1>=<value1> <key2>=<value2>...

ARG
ARG <参数名>[=<默认值>]
VOLUME 定义匿名数据卷,在启动容器时忘记挂载数据卷
EXPOSE:仅仅只是申明端口
WORKDIR:指定工作目录

WORKDIR <工作目录路径>

USER 用于指定执行后续命令的用户和用户组
USER <用户名>[:<用户组>]
HEALTHCHECK 用于指定某个程序或指令来监控docker容器服务的运行状态

HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况的命令
HEALTHCHECK NONE:如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令
HEALTHCHECK [选项] CMD <命令> : 这边 CMD 后面跟随的命令使用,可以参考 CMD 的用法

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

Compose使用的三个步骤
  • 使用Dockerfile定义应用程序的环境
  • 使用docker-compose.yml定义构成应用程序的服务,这样他们可以在隔离环境中一起运行
  • 最后,执行docker-compose up命令来启动运行整个应用程序

实例:

# yaml 配置实例
version: '3'
services:
  web:
    build: .
    ports:
   - "5000:5000"
    volumes:
   - .:/code
    - logvolume01:/var/log
    links:
   - redis
  redis:
    image: redis
volumes:
  logvolume01: {}
Compose安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose #将可执行权限应用于二进制文件
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose  #创建软链
docker-compose --version  #测试是否安装成功  
使用
mkdir composetest  
cd composetest

在测试目录中创建一个名为app.py的文件,并复制战天以下内容

import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)


def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)


@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)

在此示例中,redis是应用程序网络上的redis容器的主机名,该主机使用的端口是6379

创建Dockerfile文件
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]
六、Docker Machine

Docker Machine是一种可以让你在虚拟主机上安装Docker的工具,并可以使用docker-machine命令来管理主机
Docker Machine也可以集中管理所有的docker主机。
Docker Machine管理的虚拟主机可以是机上的,也可以是云供应商,如阿里云、腾讯云、AWS、或DigitalOCean

安装

安装Docker Machine之前你需要先安装Docker
Docker Mechine 可以在多种平台上安装使用,包括Linux、MacOS以及windows

一.Linux安装命令
base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine
二.macOS安装命令
base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine
三、Window安装命令
base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  mkdir -p "$HOME/bin" &&
  curl -L $base/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" &&
  chmod +x "$HOME/bin/docker-machine.exe"

查看是否安装成功

docker-machine version
使用

1.列出可用的机器

docker-machine ls

2.创建机器

docker-machine create --driver virtualbox test

3.查看机器IP

docker-machine ip test  

4.停止机器

docker-machine stop test

5.启动机器

docker-machine start test

6.进入机器

docker-machine ssh test 
七、Swarm集群管理

Docker Swarm是docker的集群管理工具。它将Docker主机池转变为单个虚拟docker主机。Docker Swarm提供了标准的Docker API,所有任何已经与Docker守护程序通信的工具都可以使用Swarm轻松地扩展多个主机

原理

swarm集群管理由管理节点(manager)和工作节点(work node)

  • swarm manager:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作
  • work node:即图中的available node,主要负责运行相应的服务来执行任务(task)
使用
docker-machine create -d virtualbox swarm-manager  #创建docker机器  
docker-machine ssh swarm-manager #初始化swarm集群
docker swarm init --advertise-addr 192.168.99.107  #这里的IP为创建机器时分配的ip docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377  #复制出来,在增加工作节点时会用到  
#创建swarm集群工作节点(worker)  
docker-machine ls
docker-machine ssh swarm-worker1  
docker@swarm-worker1:~$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377  
# 2.查看集群信息  
docker info  
# 4.部署服务到集群中  
docker@swarm-manager:~$ docker service create --replicas 1 --name helloworld alpine ping docker.com   
# 5.查看服务部署情况  
docker service ps helloworld  
docker service inspect --pretty helloworld
# 6.扩展集群服务  
docker service scale helloworld=2
# 7.删除服务  
docker service rm helloworld  
# 8.滚动升级服务  
docker service create --replicas 1 --name redis --update-delay 10s redis:3.0.6  
docker service update --image redis:3.0.7 redis  #滚动升级redis  
# 9.停止某个节点接受新的任务  
docker node ls  
docker node update --availability active swarm-worker1  
Docker命令大全

容器生命周期管理

  • run
  • start/stop/restart
  • kill
  • rm
  • pause/unpause
  • create
  • exec
    容器操作
  • ps
  • inspect
  • top
  • attach
  • events
  • logs
  • wait
  • export
  • port
    容器rootfs命令
  • commit
  • cp
  • diff
    镜像仓库
  • login
  • pull
  • push
  • search
    本地镜像管理
  • images
  • rmi
  • tag
  • build
  • history
  • save
  • load
  • import
    info|version
  • info
  • version
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值