新手-Docker基础快速入门

  1. 什么是docker
    Docker是一个基于LXC技术构建的容器引擎,基于GO语言开发,遵循Apache2.0协议开源
    与虚拟机的区别
    (1)docker有着比虚拟机更少的抽象层。由于docker不需要hypervisor
    实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。
    因此在cpu1,内存利用率上docker将会在效率上有明显优势。
    (2)docker利用的是宿主机的内核,而不需要Guest OS,因此,当新建一个容器时,docker
    不需要和虚拟机一样重新加载一个操作系统内核。避免了加载操作系统内核这个比较费时费资源的过程
    ,当新建一个虚拟机时,虚拟机需要加载Guest OS,这个过程是分钟级别的。而docker由于
    直接利用宿主机的操作系统,因此新建一个docker容器只需要几秒钟。
docker容器虚拟机vm
操作系统与宿主机共享os宿主机os上运行虚拟机os
存储大小镜像小,便于存储与传输镜像大(vmdk,vmi等)
运行性能几乎无额外的性能损失操作系统额外的cpu,内存消耗
移植性轻便,灵活,适应于linux笨重,与虚拟化技术耦合度高
硬件亲和性面向软件开发者面向硬件运维者
部署速度快速,秒级较慢,10s以上
  1. 基本概念
    Container:
    Docker Container(容器)即Docker将宿主机隔开的一个个独立空间
    Image:
    Docker Image(镜像)可以看作是一个特殊的文件系统,即对某一时刻容器状态的备份
    Docker Registry:
    Docker镜像仓库中心
    https://hub.docker.com/
    https://dev.aliyun.com/search.html
    https://c.163yun.com/hub#/m/home/

在ubuntu系统中配置阿里云镜像加速
在这里插入图片描述在这里插入图片描述这一步很重要,否则后面的下载非常慢。

  1. Docker安装
    安装本地版本:apt-get install -y docker.io
    启动服务:(sudo )service docker start
    查看版本:docker --version | docker -v
    查看镜像:docker images

  2. Docker镜像操作
    查看镜像
    docker images
    搜索镜像
    docker search 镜像关键词
    镜像拉取
    docker pull [OPTIONS] NAME[:TAG|@DIGEST]
    镜像删除
    docker rmi 镜像Id或镜像名称

  3. Docker容器操作
    生成容器
    docker run -d -p 8888:8080 --name tomcat-test tomcat
    查看容器
    查询正在运行的容器:docker ps|grep 容器关键词
    查询全部(包括已停止)的容器:docker ps -a|grep 容器关键词
    进入容器
    docker exec -it containerId/containerName /bin/bash
    退出容器
    exit
    停止容器
    docker stop containerId/containerName
    启动容器
    docker start containerId/containerName
    删除容器
    docker rm containerId/containerName
    拷贝文件
    docker cp 宿主机目录及文件 容器名称:容器目录
    查看容器ip
    docker inspect --format ‘{{.Name}} - {{ range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ $(docker ps -aq)
    或者
    docker inspect
    其他:
    停止docker:
    docker stop $(docker ps -a | grep “Exited” | awk ‘{print $1 }’)
    删除docker:
    docker rm $(docker ps -a | grep “Exited” | awk ‘{print $1 }’)
    删除images:
    docker rmi $(docker images | grep “none” | awk ‘{print $3}’)
    删除在运行的容器:
    docker rm -f $(docker ps -q)
    列出镜像的变更历史:
    docker history 镜像名

  4. Docker网络配置与端口映射
    网络配置
    host 模式
    container 模式
    none 模式
    bridge 模式,默认
    –net=(具体模式名称)
    端口映射
    -p
    固定IP
    创建网络,指定网段
    docker network create --subnet=172.18.0.0/16 mynetwork
    创建容器,指定IP
    docker run -it -d --net mynetwork --ip 172.18.0.8 --name mytomcat tomcat

  5. Dokerfile
    内置命令
    FROM :依赖的底层镜像
    MAINTAINER :指定镜像创建者
    ENV : 设置环境变量
    RUN :运行shell命令
    COPY : 将编译机本地文件拷贝到镜像文件系统中
    EXPOSE : 指定监听端口
    ENTRYPOINT :与执行命令,创建容器并启动后才执行

#
# JDK-8U151
#
FROM yi/centos7-ssh
MAINTAINER Yi.Ma <findlymw@gmail.com>
RUN yum clean all
RUN yum -y update
# Install libs
RUN yum install deltarpm rpm make wget tar unzip \
         gcc gcc-c++ -y

RUN mkdir -p /home/work/apps/
RUN mkdir -p /usr/local/java/
WORKDIR /home/work/apps/
RUN wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz
RUN tar -zxvf jdk-8u161-linux-x64.tar.gz
RUN rm jdk-8u161-linux-x64.tar.gz
RUN mv -f jdk1.8.0_161/ /usr/local/java/jdk1.8.0_161
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_161
ENV PATH=$JAVA_HOME/bin:$PATH
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# open ports
EXPOSE 22

编写Dockerfile文件的名称必须为Dockerfile
执行命令生成镜像
docker build [OPTIONS] PATH | URL | -

  1. 安装shipyard
#下载镜像
docker pull rethinkdb
docker pull microbox/etcd
docker pull shipyard/docker-proxy
docker pull swarm
docker pull shipyard/shipyard
#将下载的镜像启动成容器
docker run -ti -d --restart=always --name shipyard-rethinkdb rethinkdb

docker run -ti -d -p 4001:4001 -p 7001:7001 --restart=always --name shipyard-discovery microbox/etcd:latest -name discovery

docker run -ti -d -p 2375:2375 --hostname=$HOSTNAME --restart=always --name shipyard-proxy -v /var/run/docker.sock:/var/run/docker.sock -e PORT=2375 shipyard/docker-proxy:latest

#<IP-OF-HOST> 需要替换为docker的IP
docker run -ti -d --restart=always --name shipyard-swarm-manager swarm:latest manage --host tcp://0.0.0.0:3375 etcd://<IP-OF-HOST>:4001

docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr <ip-of-host>:2375 etcd://<ip-of-host>:4001

docker run -ti -d --restart=always --name shipyard-controller --link shipyard-rethinkdb:rethinkdb --link shipyard-swarm-manager:swarm -p 9090:8080 shipyard/shipyard:latest server -d tcp://swarm:3375
#注意8080端口有可能与tomcat重复(已经改成了9090)
#需要开放4001端口 sudo ufw allow 4001
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值