容器技术-Docker入门

526 阅读3分钟

基础知识

镜像image

  • Docker镜像文件(核心文件)

容器container

  • image生成运行的实例

仓库repository

  • 公共仓库

    • Docker Hub

      • 改为国内镜像(阿里云...)

C/S架构

基本命令

验证安装

  • docker version
  • docker info

启动docker服务

  • service docker start
  • systemctl start docker

搜索

  • docker search [镜像名]

image

  • 通过image文件才能生成容器,可以生成同时运行的多个容器

  • 列出所有image文件

    • docker image ls
  • 删除image文件

    • docker image rm [imagename]
  • 拉取image文件

    • docker image pull library/hello-world (library可省略)

container

  • image生成容器实例,如果本地仓库没有这个image文件会自动从公共仓库拉取下来

    • docker container run hello-world

      • 新建容器
    • docker container start [containerID]

      • 运行已生成并且已停止的容器
  • 容器执行完会自动停止,提供服务的(例如Ubuntu)不会停止

    • 手动终止

      • docker container kill [containID]
  • 容器生成后就有两个文件分别是image文件和容器文件,关闭容器不会删除容器文件

  • 本机正在运行的容器

    • docker container ls
    • docker ps
  • 所有容器

    • docker container ls -all
  • 删除容器

    • docker container rm [containerID]
  • 容器输出(日志)

    • docker container log [containerID]
  • 进入容器

    • docker container exec -it [containerID] /bin/bash

需要推广自己的软件,必须要制作image文件

  • Dockerfile文件

    • 配置image,生成二进制image文件
  • 制作自己的Docker容器

安装实例

-it、-itd

  • -i

    • 交互式操作
  • -t

    • 终端
  • -d

    • 容器后台运行,默认不会进入容器,需要docker exec 进入

Nginx

  • 下载最新镜像

    • docker pull nginx:latest
  • 运行容器调整端口并在后台运行

    • docker run --name nginx-test -p 8089:80 -d nginx
  • 验证

    • curl 127.0.0.1:8089

Node.js

  • 下载最新镜像

    • docker pull node:latest
  • 运行

    • docker run -itd --name node-test node
  • 进入容器验证

    • docker exec -it node-test /bin/bash
    • node -v

MySQL

  • 下载最新镜像

    • docker pull mysql:latest
  • 运行命名设置端口设置root密码

    • docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=19971114abc mysql

      • -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务
  • 进入mysql容器

    • docker exec -it mysql-test bash
  • 登录mysql,查看版本

    • mysql -u root -p19971114abc

Tomcat

  • 下载镜像

    • docker pull tomcat
  • 运行设置端口

  • 测试

Redis

  • 镜像

    • docker pull redis:latest
  • 运行设置端口

    • docker run -itd --name redis-test -p 6379:6379 redis
  • 测试

    • docker exec -it redis-test /bin/bash
    • redis-cil

MongoDB

  • 镜像

    • docker pull mongo:latest
  • 运行设置端口

    • docker run -itd --name mongo -p 27017:27017 mongo --auth
  • 进入容器

    • docker exec -it mongo mongo admin
  • 创建一个名为 admin,密码为 123456 的用户。

    • db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
  • 尝试使用上面创建的用户信息进行连接。

    • db.auth('admin', '123456')

微服务

思想

  • 软件把任务外包出去,让各种外部服务完成这些任务,软件本身只是底层服务的调度中心和组装层
  • 微服务很适合用 Docker 容器实现,每个容器承载一个服务。一台计算机同时运行多个容器,从而就能很轻松地模拟出复杂的微服务架构。