博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker入门到实践
阅读量:6435 次
发布时间:2019-06-23

本文共 4719 字,大约阅读时间需要 15 分钟。

1.什么是Docke

 1.网上有很多

2.为什么要使用Docker?    

优点

更高效的利用系统资源

更快速的启动时间

一致的运行环境

持续交付和部署

更轻松的迁移

更轻松的维护和扩展

3.Docker的使用

3.1安装docker

以ubuntu16.04为例

官方文档:https://docs.docker.com/install/linux/docker-ce/ubuntu/

删除旧版本

  $ sudo apt-get remove docker docker-engine docker.io

由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先 需要添加使用 HTTPS 传输的软件包以及 CA 证书。

  $ sudo apt-get update

  $ sudo apt-get install -y \

  apt-transport-https \

  ca-certificates \

  curl \

  software-properties-common

鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。 为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。

  $ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

  $ sudo add-apt-repository \

  "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \

  $(lsb_release -cs) \

  stable"

更新 apt 软件包缓存,并安装 docker-ce:

  $ sudo apt-get update

  $ sudo apt-get install -y docker-ce

# 开机启动

  $ sudo systemctl enable docker

# 启动docker服务

  $ sudo systemctl start docker

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安 全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需 要使用 docker 的用户加入 docker 用户组。

# 建立 docker 组:

  $ sudo groupadd docker

# 将当前用户加入 docker 组:

  $ sudo usermod -aG docker $USER

# 重新登录ssh

# 验证安装

  docker run hello-world

3.2 配置文件:/etc/docker/daemon.json

官方文档: https://docs.docker.com/engine/reference/commandline/dockerd/#daemonconfiguration-file

# 编辑配置文件

  $ sudo vi /etc/docker/daemon.json

     {

      "registry-mirrors": ["], # 镜像加速的地址

      "insecure-registries": [""], # 非https私有仓库地址

      "data-root": "/var/lib/docker" # docker安装目录

    }

3.3 创建容器

  docker pull nginx

  docker run -d --name web -p 80:80 nginx

  查看容器运行状态

    docker ps

  浏览器打开:http://127.0.0.1

  echo "hello world" > hello.html

  docker run -d --name web -p 80:80 -v `pwd`:/usr/share/nginx/html nginx

  -d 后台运行

  --name 指定容器名

  -p 映射端口

  -v 映射数据卷

3.4 镜像(Image)和容器(Container)的关系

  镜像是静态的定义,容器是镜像运行时的实体。

  容器可以被创建、启动、停止、删除、暂停等。

  举例:

    镜像      容器

    类class Apple       对象 new Apple()

    安装盘ISO    虚拟机

3.5创建自己的镜像

  官方文档:https://docs.docker.com/develop/develop-images/dockerfile_bestpractices/

  vi Dockerfile

    FROM nginx RUN

    echo "hello world" > /usr/share/nginx/html/hello.html

    docker build -t my-web:1.0 .  (注意这个点,必须有)

    查看镜像

      docker images

    启动容器

      docker run -d --name web -p 80:80 my-web:1.0

3.5.1 环境变量

  vi start.sh

    echo "hello world ${MY_NUM}" > /usr/share/nginx/html/hello.html

    nginx -g "daemon off;"

  

  vi  Dockerfile

    FROM nginx

    ENV MY_NUM="100"

    ADD start.sh /start.sh

    CMD sh /start.sh

  启动容器

  docker build -t my-web:2.0 .  (注意这个点,必须有)

  # 无环境变量运行

    docker run -d --name web -p 80:80 my-web:2.0

  # 有环境变量运行

    docker run -d --name web -p 80:80 -e MY_NUM=200 my-web:2.0

 

  # 基础镜像

    FROM nginx

  # 预置环境变量

    ENV MY_NUM="100“

  # 制作镜像的操作,尽量减少RUN的个数,可以有效减少镜像大小

    RUN echo "hello world" > /usr/share/nginx/html/hello1.html

  # 添加制作镜像的文件

    ADD start.sh /start.sh

  # 容器启动命令

  # 注意区分CMD和RUN的区别

  #CMD ["nginx", "-g", "daemon off;"]

  #CMD nginx -g "daemon off;“

  CMD sh /start.sh

  

  FROM nginx

  RUN dd if=/dev/zero bs=1024 count=102400 of=/root/100MB.file

  RUN rm -f /root/100MB.file

  #RUN dd if=/dev/zero bs=1024 count=102400 of=/root/100MB.file && rm -f /root/100MB.file

  docker build -t test:1.0 .

  docker build -t test:2.0 .

2.docker-compose

  官方文档: https://docs.docker.com/compose/install/ https://docs.docker.com/compose/compose-file/

  官网安装

    $ sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/dockercompose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

    $ sudo chmod +x /usr/local/bin/docker-compose

  公司内网安装

    $ sudo curl -L http://ftp.fzyun.io/lib/docker-compose/1.23.1/docker-composeLinux-x86_64 -o /usr/local/bin/docker-compose

    $ sudo chmod +x /usr/local/bin/docker-compose

  

  docker run -d --name web -p 80:80 -e MY_NUM=200 \ -v `pwd`/web:/usr/share/nginx/html/ my-web:2.0

 

  vi docker-compose.yml

    version: "3.5"

    services:

      web:

        image: nginx

        restart: always

        ports: - "80:80"

      volumes:

        - ./web:/usr/share/nginx/html/

      environment:

        MY_NUM: 200

 

  多服务样例:

    version: "3.5"

    services:

      web:

        image: nginx:1.15.12-alpine

        restart: always

        ports: - "80:80"

      mysql:

        image: mysql:5.7

        restart: always

        ports: - “3306:3306"

      environment: MYSQL_ROOT_PASSWORD: ***(root用户密码)

docker 常用命令

1.docker ps -a 查看容器

2.docker stop 容器id   停止容器

3.docker rm 容器id  删除容器

4.docker images  查看镜像

5.docker rmi 镜像id  删除镜像

6.docker exec -it web(镜像名称) bash 进入镜像里面

7.docker-compose up -d

8.docker-compose rm -sf

9.docker-compose exec web bash
10.docker-compose exec web sh

转载于:https://www.cnblogs.com/liujun-dqw/p/10750367.html

你可能感兴趣的文章
思科通配符(Cisco Wildcard Mask)
查看>>
PHP cURL快速入门
查看>>
在errpt中报E87EF1BE的解决方法(转载)
查看>>
aix chfs及mklvcopy报错的解决方法
查看>>
取消新增的constraints
查看>>
OPTIMIZE TABLE
查看>>
flask框架+pygal+sqlit3搭建图形化业务数据分析平台
查看>>
shell实战训练营Day20
查看>>
jQuery 之 TAB切换菜单
查看>>
mysql 数据库集群搭建:(二)3台CentOS-7安装Percona-XtraDB-Cluster-57集群
查看>>
Jenkins实战演练之Windows系统节点管理
查看>>
MySQL高可用架构之MHA
查看>>
1.8 nginx域名跳转
查看>>
PHP面向对象之接口编程
查看>>
使用 Docker Compose 管理多个容器实例
查看>>
ThinkPHP 删除数据记录 delete 方法
查看>>
Gradle学习笔记(二)--创建Java项目
查看>>
IntelliJ IDEA 快捷键
查看>>
qury-easyui DataGrid 整合struts2增删查该入门实例(三)
查看>>
if a point is inside a square with mathematics
查看>>