lzf79 发表于 2018-5-27 11:57:08

docker 安装及使用

  Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上
  Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
  Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。 Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互
  一 安装docker及基础命令
  yum install -y docker-io

  service docker start启动 docker
docker search centos搜索镜像
  docker pull centos 下载镜像
  docker push centos 上传镜像
  docker images查看镜像
  
  docker rmi   删除镜像
  docker run -it centos /bin/bash    启动进入镜像
  docker ps -a 查看镜像

  docker ps -l查看最近启动的docker容器
  
  docker run -d --name mydocker -it centossh-name docker容器的名字 -d 是在后台运行
  
  docker rm `docker ps -a -q` 删除所有容器
  docker exec -it centos /bin/bash 进入容器
  docker logs container 查看容器日志
  二 docker端口映射
  docker run -d -P -name mynginx   -P 随机映射端口
  docker run-d -p 91:80 mynginx nginx   -p指定宿主机91端口映射到容器80端口
  三 docker 数据管理

  数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性:

[*]  数据卷可以在容器之间共享和重用;
[*]  对数据卷的修改会立马有效;
[*]  对数据卷的更新,不会影响镜像;
[*]  卷会一直存在,直到没有容器使用。
  数据卷就是从物理机挂到容器中使用挂载本地的目录到容器里
  docker run -it --name test1 -h nginx-v /data centos   -h 容器名称 -v 数据卷
  docker run -it --name test2 -h nginx -v /opt:/opt centos
  数据卷容器 我们需要多个容器之间相互共享数据
  docker run -it --name test4 --volumes-from test1 centos
  四 dockerfile 构建命令
  FROM    来至那个基础镜像
  MAINTAINER   维护着
  RUN   运行的那个命令
  CMD只能执行一次命令
  EXPOSE暴露的端口
  ENV   环境变量设置
  ADD复制本地文件到容器
  ENTRYPOINT配置容器启动后执行的命令
  VOLUME创建一个可以从本地主机或其他容器挂载的挂载点
  USER 指定运行容器时的用户名
  WORKDIR切换目录
  docker build -t nginx:v1 .   构建镜像
  docker file 构建mysql 镜像
  # vi Dockerfile
  FROM centos
  MAINTAINER zhaomengjie
  ADD mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz /usr/local/
  RUN mv /usr/local/mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql \ && groupadd mysql \ && useradd mysql -g mysql \ && mkdir /usr/local/mysql/data \ && chown mysql:mysql /usr/local/mysql -R
  WORKDIR /usr/local/mysql
  RUN yum install -y libaio \ && bin/mysqld --initialize --user=mysql --datadir /usr/local/mysql/data
  EXPOSE 3306
  docker build -t mysql-5.7.17 .
  mysql 安装成功后要记录初始化root密码
  mysql 启动 容器
  docker run -d -p 3306:3306 mysql:5.7.17 /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --user=mysql
  docker exec -it 15e3beaeaa67 /bin/bash
  # ./mysql -u root –p
  mysql> set password=password('mysql');
  mysql> grant all privileges on *.* to root@'%' identified by 'mysql';
  在宿主机上连接容器内启动的mysql
  # mysql -u root -p -h 127.0.0.1
  mysql> show databases;
  五 Docker 四种网络模式
  host 模式,使用 --net=host 指定。
  使用宿主机的 IP 和端口
  container 模式,使用 --net=container:NAMEorID 指定。
  这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace。
  none 模式,使用 --net=none 指定。
  这个 Docker 容器没有网卡、IP、路由等信息。需要我们自己为 Docker 容器添加网卡、配置 IP 等。
  bridge 模式,使用 --net=bridge 指定,默认设置。
  bridge 模式是 Docker 默认的网络设置,此模式会为每一个容器分配 Network Namespace、设置 IP 等,并将一个主机上的 Docker 容器连接到一个虚拟网桥上。当 Docker server 启动时,会在主机上创建一个名为 docker0 的虚拟网桥,此主机上启动的 Docker 容器会连接到这个虚拟网桥上。
  六 docker私有仓库
  docker run -d -p 5000:5000 registry 创建私有仓库
  docker pull   registry
  docker images
  先打镜像
  docker tag docker.io/nginx 192.168.50.39:5000/nginx/vs:2
  docker images
  上传镜像
  docker push 192.168.50.39:5000/nginx/vs:2
  查看镜像是否成功
  curl -XGET http://192.168.5.2:5000/v2/_catalog# curl -XGET http://192.168.5.2:5000/v2/image_name/tags/list
  下载镜像
  docker pull 192.168.50.39:5000/nginx/vs:2
  

  
页: [1]
查看完整版本: docker 安装及使用