Docker基础

1.Docker介绍

Docker的英文翻译是“搬运工”的意思,他搬运的东西就是我们常说的集装箱 Container,Container 里面装的是任意类型的 App,我们的开发人员可以通过 Docker 将App 变成一种标准化的、可移植的、自管理的组件,我们可以在任何主流的操作系统中开发、调试和运行。

Docker Engine是一个 C/S架构的应用程序,主要包含下面几个组件:

  • 常驻后台进程 Dockerd
  • 一个用来和 Dockerd 交互的 REST API Server
  • 命令行 CLI 接口,通过和 REST API 进行交互(我们经常使用的 docker 命令)

架构图

 

2.安装Docker

去官方有详细安装办法

3.基础命令

4.Dockerfile 定制镜像

5.Docker 私有仓库 

首先DockerHub的使用 

官网 https://hub.docker.com/  注册账号  

命令行登录 :docker login  输入UserNamePassWord    显示Login Succeeded  登录成功

搜索镜像命令:docker search centos  搜索centos镜像

将本地镜像推送到dockerHub上面

  • 推送前镜像名字必须是 userName/nginx:v3       修改镜像名称命令:docker  tag 原镜像名称:tag 目标镜像名称:tag 例如 docker  tag nginx:v3 anker/test-nginx:v3
  • 推送上去 docker push anker/test-nginx:v3
  • 速度太慢 使用镜像加速器 地址 http://docker-cn.com/  也可以配置阿里云加速器  配置完下载镜像就比较快了   记得重新启动

 创建本地仓库只供自己使用(官方 Docker Registry)

  • docker run --name myregistry -d -p 5000:5000 registry:2.6.2  本地没有就会去网上拉  运行起来私有仓库就创建好了
  • 将nginx:v3 push到私有仓库  
  • 修改tag名字 :docker tag nginx:v3 127.0.0.1:5000/nginx:v3 
  • push到私有仓库:docker push 127.0.0.1:5000/nginx:v3
  • 本地地址 可以查看私有仓库 镜像情况 127.0.0.1:5000:v2/_catalog     显示{"repositories":["nginx"]} 上传成功
  • 删除本地 镜像:docker rmi -f 127.0.0.1:5000/nginx:v3    -f强制删除
  • 拉去私有仓库镜像:docker pull 127.0.0.1:5000/nginx:v3
  • push到仓库里面的路径会默认放到 /var/lib/registry 
  • 使用数据挂在-v参数  docker run --name myregistry -d -p 5000:5000 -v /Users/ych/devs/mynginx:/var/lib/registry registry:2.6.2  如果不挂在 registry仓库移除了 仓库里面东西都被删掉了

  6. 数据共享与持久化

Docker容器被删除后默认会将容器里面的所有文件都给删除掉的,但是有的时候我们有数据共享或者持久化的需求,比如数据库,希望下一次启动容器的时候数据依然保留,这就需要用到Docker中的数据卷功能了,另外一个就是挂载宿主机目录到容器中去,这个无论是在开发阶段还是生产环境都非常有用的一个功能。

docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7    

docker volume ls 查看数据卷   docker inspect  mysql01 查看信息  docker volume inspext  VOLUME NAME

进入容器里面 docker exec -it mysql01 /bin/bash  里面  创建一个docker库  退出来 exit   docker rm -f mysql01  

第三个是mysql默认的数据卷  里面有刚创建的docker库  就是 使用-v 参数

docker run -d --name mysql 100 -v mysql:/val/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7    

删除全部的数据卷 docker volume prune  

7Docker网络模式

link模式

bridge模式

docker network create -d bridge deme   创建一个bridge模式的demo

docker network ls    查看

docker network inspect demo   

用bridge创建两个容器 

docker run --name test 1--network demo mysql

docker run --name test2 --network demo mysql

docker exec -it test1 bash 

ping test1  可以通

建议使用compose

原文地址:https://www.cnblogs.com/AnkerZhang/p/9474391.html