Code Monkey home page Code Monkey logo

sotp's Introduction

Sistemas Operacionais - UFOP

Primos Intervalo Server-Client Utilizando Docker

----------------TRABALHO PRATICO II - III ------------------

Grupo: Gustavo Lucas Moreira -
Philipe Lemos Parreira

Enunciado do trabalho pratico:

Elaboração e implementação utilizando o Docker, onde uma instância (conteiner) será o cliente que emite uma mensagem, um valor limite do qual será calculado pelo servidor o numero de primos dentre zero-valor limite recebido, assim o outra instancia será o servidor. Isto no mesmo computador, mas com conteiners diferentes.

Assim é necessario fazer a instalação do ambiente docker host local ou maquina virtual(nesse caso de uso). Maquina utilizada: VirtualBox Oracle - Linux Ubuntu 18.04 64-bits

-Instalação do Docker:

  1. Verificar a versao do kernel para conferir a compatibilidade com o Docker (superior ou igual a 3.8): $ uname -r
  2. Atualização da lista atual de pacotes $ sudo apt-get update
  3. Instalação de alguns pacotes de pre-requisitos que permitem que o apt utilize pacotes via HTTPS: $ sudo apt install apt-transport-https ca-certificates curl software-properties-common
  4. Realização da instalação utilizando o script de instalação por atraves da execução do curl: $ curl -fsSL https://get.docker.com/ | sudo apt-key add -
  5. Adicionando o repositorio Docker as fontes APT: $ sudo add-pt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
  6. Atualize o banco de dados de pacotes com os pacotes Docker: $ sudo apt update
  7. Utilizando o Docker como sudo: $ sudo usermod -aG docker ${USER}

- DOCKERFILE

  1. Crie um Dockerfile em cada repositorio

    SERVER:

    FROM gcc:4.9 
    MAINTAINER Gustavo Lucas 
    COPY . /usr/src/server
    WORKDIR /usr/src/server
    RUN g++ -o server *.cpp -lpthread -std=c++11
    CMD ["./server"] 
    

    CLIENTE:

    FROM gcc:4.9 
    MAINTAINER Gustavo Lucas 
    COPY . /usr/src/cliente
    WORKDIR /usr/src/cliente
    RUN g++ -o cliente *.cpp -lpthread -std=c++11
    CMD ["./cliente"] 
    
  2. Build e run a Docker Image

    SERVER:

    2.1 build: $ docker build -t server .

    2.2 run: $ docker run -it --rm --name my-running-server server bash

    CLIENTE:

    2.3 build: $ docker build -t cliente .

    2.4 run: $ docker run -it --rm --name my-running-cliente cliente bash

- EXECUÇÃO

  1. ABRA TRES TERMINAIS, PRIMEIRO E SEGUNDO NOS RESPECTIVOS REPOSITORIOS DE SERVER E CLIENTE, O TERCEIRO E PARA ACOMPANHAMENTO DO DOCKERS ATIVOS

  2. EXECUTE OS PASSOS DOCKERFILE NOS TERMINAIS DE SERVER E CLIENTE

  3. NO TERCEIRO TERMINAL EXECUTE: $ docker ps Será mostrado os dockers em uso no momento, em seguida execute o comando docker: $ docker inspect my-running-server | grep IPAddress Será mostrado o endereço ip do servidor, copie e cole sobre o codigo cliente em:

    int Client_Socket::initialize_socket( int port_client ){
      memset((char*) &server_address, '0', sizeof(server_address));
      server_address.sin_family      = ADDR_FAMILY;
      server_address.sin_port        = htons(port_client); 
      server_address.sin_addr.s_addr = inet_addr("ip address do servidor");
      client_size = sizeof(server_client);
      server_size = sizeof(server_address);
      return inet_pton(ADDR_FAMILY, "ip address do servidor", &server_address.sin_addr);
    }
    
  4. VÁ AO TERMINAL DO CLIENTE E REALIZE A build e run do mesmo para atualização da image

  5. Execute o ./server no terminal do servidor

  6. Execute o ./cliente no terminal do cliente

  7. Observe os valores de tempo de execução e mensagem enviados pelo servidor ao cliente.

sotp's People

Contributors

gustahlucas avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.