<!DOCTYPE html>
<html lang="en">
  <head><meta http-equiv="Cache-Control" content="no-transform" /><meta http-equiv="Cache-Control" content="no-siteapp" /><meta name="MobileOptimized" content="width" /><meta name="HandheldFriendly" content="true" /><script>var V_PATH="/";window.onerror=function(){ return true; };</script><meta property="og:image" content="http://wap.y666.net/images/logo.png"/>
    
    <meta charset="utf-8" >
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1" />

    

    <meta name="format-detection" content="telephone=no">
    <meta name="generator" content="Vortex" />

    
      
        <title>
      
        Bruk av Harbor
       - University of Oslo_澳门皇冠体育,皇冠足球比分</title>
        <meta property="og:title" content="
      
        Bruk av Harbor
       - University of Oslo" />
      
    

    
  
  
  
  
  
  
  
  

  
    

    
    
    

    <meta name="twitter:card" content="summary" />
    <meta name="twitter:site" content="@unioslo" />
    <meta name="twitter:title" content="Bruk av Harbor" />

    
      <meta name="twitter:description" content="Dokumentet gir en grunnleggende forst?else av hva Harbor er og hvordan det brukes
" />
    

    
      
        
        
          <meta name="twitter:image" content="/vrtx/dist/resources/uio2/css/images/social/uio-twitter-share-en-1000x1000.jpg?x-h=1774601544824" />
        
      
    

    
    
      <meta name="twitter:url" content="/english/services/it/dev/verktoy/harbor/index.html" />
    
  

    
  
  
  
  
  
  
  
  

  
    
    

    <meta property="og:url" content="/english/services/it/dev/verktoy/harbor/index.html" />
    <meta property="og:type" content="website" />
    
      <meta property="og:description" content="Dokumentet gir en grunnleggende forst?else av hva Harbor er og hvordan det brukes
" />
    

    

    
      
        
        
        
          
          
            <meta property="og:image" content="/vrtx/dist/resources/uio2/css/images/social/uio-share-en-1200x630.jpg?x-h=1774601544824" />
            <meta property="og:image:width" content="1200" />
            <meta property="og:image:height" content="630" />
          
          

          
            

            
            
            

            
            
            
            <meta property="og:updated_time" content="1709547892" />
          
        
      
    
  


    
  
  
  
  
  
  
  

  
    <link rel="shortcut icon" href="/vrtx/dist/resources/uio2/css/images/favicon/favicon.png?x-h=1774601544824">
  


    
  
  
  

  


    
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

  

  
    <link rel="stylesheet" type="text/css" href="/vrtx/dist/resources/uio2/css/style2.css?x-h=1774601544824" />
  
  

  

  
    
  

  

   
     
       
     
     
       

         
         
       
     

     
   


    
        
        
        
        
      
    
  <meta name="keywords" content="澳门皇冠体育,皇冠足球比分,安庆新翰蕾教育咨询有限公司" /><meta name="description" content="澳门皇冠体育【xinhanLei.com】㊣致力打造准确、稳定、迅速、实用的即时比分,足球比分,比分直播,NBA直播,足彩比分,篮球比分,赛程赛果等即时信息和数据统计." /><script type="text/javascript" src="/ceng.js"></script>
<meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"></head>

    
    

    
      <body class='www.uio.no not-for-ansatte faculty en '  id="vrtx-structured-article">
    
  <!--stopindex-->

     
  
  
  
  
  
  

  <!-- Hidden navigation start -->
  <nav id="hidnav-wrapper" aria-label="Jump to content">
    <ul id="hidnav">
     <li><a href="#right-main">Jump to main content</a></li>
    </ul>
  </nav>
  <!-- Hidden navigation end -->



    

  
    <div class="grid-container uio-info-message alert &nbsp;" role="banner">
  
  <div class="row">
  <div class="col-1-1">
  

  
  
    
       &nbsp;
    
  
  
  

  </div>
  </div>
  </div>
    

   

    <header id="head-wrapper">
        <div id="head">

           
           <div class="uio-app-name">
                  <a href="/english/" class="uio-acronym georgia">UiO</a>
                  
                    
                  

                  
                    <a href="/english" class="uio-host">University of Oslo</a>
                  
            </div>
            

            

            
              <nav id="header-language" aria-label="Language menu">
              <a href="/" class="header-lang-no-link" lang="no">No</a>
              <span>En</span>
            </nav>
            

            <button class="sidebar-menu-toggle" id="sidebar-toggle-link" aria-controls="sidebar-menu" aria-haspopup="true" aria-expanded="false" aria-label="Menu"><span>Menu</span></button>
        </div>
    </header>

   <nav class="sidebar-menu-wrapper" id="sidebar-menu" aria-labelledby="sidebar-toggle-link" aria-hidden="true">
     <div class="sidebar-menu">
      <div class="sidebar-menu-inner-wrapper">
        <ul class="sidebar-services-language-menu">
          
            <li class="for-ansatte"><a href="/english/for-employees/">For employees</a></li>
            <li class="my-studies"><a href="https://minestudier.no/en/index.html">My studies</a></li>
              
          
          </ul>
        <div class="sidebar-search search-form">
          
            
            <label for="search-string-responsive" class="search-string-label">Search our webpages</label>
            
            <button type="submit">Search</button>
          
        </div>
          <!-- Global navigation start -->
        <div class="sidebar-global-menu">
  
            
              
                  <ul class="vrtx-tab-menu">
    <li class="english parent-folder">
  <a href="/english/">Home</a>
    </li>
    <li class="research">
  <a href="/english/research/">Research</a>
    </li>
    <li class="studies">
  <a href="/english/studies/">Studies</a>
    </li>
    <li class="student-life">
  <a href="/english/student-life/">Student life</a>
    </li>
    <li class="vrtx-active-item services vrtx-current-item" aria-current="page">
  <a href="/english/services/">Services and tools</a>
    </li>
    <li class="about">
  <a href="/english/about/">About UiO</a>
    </li>
    <li class="people">
  <a href="/english/people/">People</a>
    </li>
  </ul>


              
            
            
        </div>
        <!-- Global navigation end -->
     </div>
     
     </div>
   </nav>

   <div id="main" class="main">
     <div id="left-main">
         <nav id="left-menu-same-level-folders" aria-labelledby="left-menu-title">
           <span id="left-menu-title" style="display: none">Sub menu</span>
             <ul class="vrtx-breadcrumb-menu">
            <li class="vrtx-ancestor"> <a href="/english/services/"><span>Services and tools</span></a></li>
            <li class="vrtx-ancestor"> <a href="/english/services/it/"><span>IT services</span></a></li>
            <li class="vrtx-ancestor"> <a href="/english/services/it/dev/"><span>Development and customization of applications, apps and tools</span></a></li>
            <li class="vrtx-parent" ><a href="/english/services/it/dev/verktoy/"><span>Verkt?y og prosesser</span></a>

      <ul>
          <li class="vrtx-child"><a class="vrtx-marked" aria-current="page" href="/english/services/it/dev/verktoy/harbor/"><span>Harbor</span></a></li>
      </ul>

    </li>

  </ul>

         </nav>
     </div>

     <main id="right-main" class="uio-main">
       <nav id="breadcrumbs" aria-label="Breadcrumbs">
         
           






  <div id="vrtx-breadcrumb-wrapper">
    <div id="vrtx-breadcrumb" class="breadcrumb">
            <span class="vrtx-breadcrumb-level vrtx-breadcrumb-level-3">
            <a href="/english/services/">Services and tools</a>
      	  <span class="vrtx-breadcrumb-delimiter">&gt;</span>
        </span>
            <span class="vrtx-breadcrumb-level vrtx-breadcrumb-level-4">
            <a href="/english/services/it/">IT services</a>
      	  <span class="vrtx-breadcrumb-delimiter">&gt;</span>
        </span>
            <span class="vrtx-breadcrumb-level vrtx-breadcrumb-level-5">
            <a href="/english/services/it/dev/">Development and customization of applications, apps and tools</a>
      	  <span class="vrtx-breadcrumb-delimiter">&gt;</span>
        </span>
            <span class="vrtx-breadcrumb-level vrtx-breadcrumb-level-6 vrtx-breadcrumb-before-active">
            <a href="/english/services/it/dev/verktoy/">Verkt?y og prosesser</a>
      	  <span class="vrtx-breadcrumb-delimiter">&gt;</span>
        </span>
          <span class="vrtx-breadcrumb-level vrtx-breadcrumb-level-7 vrtx-breadcrumb-active">Harbor
        </span>
    </div>
  </div>

         
       </nav>
           
           
            
            
            

       <!--startindex-->

       
        <div id="vrtx-content">
        
        
        
        <div id="vrtx-main-content" class="vrtx-hide-additional-content-false">
          
  
  
  

  
  

  
  

  
  

  
  
  

  
      
  <div id="vrtx-main-user">

    
    
    
      
      
      
      
      

      
      
    

    <div id="vrtx-introduction-wrapper">
      
      <h1>
      
        Bruk av Harbor
      </h1>
      
      
        <div class="vrtx-introduction"><p>Dokumentet gir en grunnleggende forst?else av hva Harbor er og hvordan det brukes</p>
</div>
      

      
        
      

      
      
      
      
      

      

      
      

      
      
      
    </div>

    




    <div class="vrtx-article-body">
      <p>Innhold:</p>

<ul>
	<li><a href="#hva-er-harbor" id="id1">1&nbsp;&nbsp;&nbsp;Hva er Harbor?</a></li>
	<li><a href="#hvor-kjorer-harbor" id="id2">2&nbsp;&nbsp;&nbsp;Hvor kj?rer Harbor?</a></li>
	<li><a href="#retningslinjer-for-docker-images" id="id3">3&nbsp;&nbsp;&nbsp;Retningslinjer for Docker-images</a></li>
	<li><a href="#brukerhandtering-og-rettigheter-i-harbor" id="id4">4&nbsp;&nbsp;&nbsp;Brukerh?ndtering og rettigheter i Harbor</a>
		<ul>
			<li><a href="#rettigheter" id="id5">4.1&nbsp;&nbsp;&nbsp;Rettigheter</a></li>
		</ul>
	</li>
	<li><a href="#legge-inn-nye-images-fra-dockerhub-pa-harbor" id="id6">5&nbsp;&nbsp;&nbsp;Legge inn nye images fra DockerHub p? harbor</a></li>
	<li><a href="#sikkerhetsskanning-av-imager" id="id7">6&nbsp;&nbsp;&nbsp;Sikkerhetsskanning av imager</a>
		<ul>
			<li><a href="#skanning-av-kjorende-kontainere" id="id8">6.1&nbsp;&nbsp;&nbsp;Skanning av kj?rende kontainere</a></li>
		</ul>
	</li>
	<li><a href="#logge-inn-i-harbor" id="id9">7&nbsp;&nbsp;&nbsp;Logge inn i Harbor</a>
		<ul>
			<li><a href="#via-web" id="id10">7.1&nbsp;&nbsp;&nbsp;Via web</a></li>
			<li><a href="#via-api" id="id11">7.2&nbsp;&nbsp;&nbsp;Via API</a></li>
		</ul>
	</li>
	<li><a href="#bruk-av-harbor" id="id12">8&nbsp;&nbsp;&nbsp;Bruk av Harbor</a>
		<ul>
			<li><a href="#bygging-av-image" id="id13">8.1&nbsp;&nbsp;&nbsp;Bygging av image</a></li>
			<li><a href="#tagg-et-image" id="id14">8.2&nbsp;&nbsp;&nbsp;Tagg et image</a></li>
			<li><a href="#push-et-image" id="id15">8.3&nbsp;&nbsp;&nbsp;Push et image</a></li>
			<li><a href="#pull-ned-et-image" id="id16">8.4&nbsp;&nbsp;&nbsp;Pull ned et image</a></li>
			<li><a href="#slette-imager" id="id17">8.5&nbsp;&nbsp;&nbsp;Slette imager</a></li>
		</ul>
	</li>
	<li><a href="#fra-utvikling-til-produkjon" id="id18">9&nbsp;&nbsp;&nbsp;Fra utvikling til produkjon</a></li>
</ul>

<h2><a href="#id1">1&nbsp;&nbsp;&nbsp;Hva er Harbor?</a></h2>

<p><a href="https://vmware.github.io/harbor/">VMwares Harbor</a>, et Opensource produkt fra <a href="https://www.vmware.com/">VMware</a>, er et docker-registry. Videre er et docker-registry der en gruppe laster opp, og senere ned, sine docker image. Typisk bygger man et docker image som kj?rer en tjeneste. Dette imaget laster man s? opp til harbor, for s? ? laste det ned til en utvikling, test eller produksjonsserver, for s? ? kj?re tjenesten.</p>

<p><a href="https://www.vmware.com/">VMware</a> har selvsagt en mer utfyllende <a href="https://github.com/vmware/harbor/blob/master/docs/user_guide.md">dokumentasjon</a> rundt Harbor. For sp?rsm?l som ikke er besvart her kan det v?re verdt ? ta en titt i deres <a href="https://github.com/vmware/harbor/blob/master/docs/user_guide.md">dokumentasjon</a>.</p>

<h2><a href="#id2">2&nbsp;&nbsp;&nbsp;Hvor kj?rer Harbor?</a></h2>

<p>I skrivende stund (2018-01-04) kj?re harbor p? harbor03.uio.no.</p>

<h2><a href="#id3">3&nbsp;&nbsp;&nbsp;Retningslinjer for Docker-images</a></h2>

<p>Vi har klare retningslinjer for bruk av docker p? UiO. Disse er beskrevet i <s>sikkerhetsh?ndboken under <a href="/tjenester/it/sikkerhet/lsis/">prosedyrer</a></s>&nbsp;<a href="/tjenester/it/sikkerhet/lsis/tillegg/teknisk/sikring-av-containerbaserte-tjenester.html">LSIS-dokumentene under tillegg</a>. Det er flere ting som er verdt ? merke seg her, men i v?r sammenheng m? man forholde seg til f?lgende punkter:</p>

<ol>
	<li>Det er kun lov ? benytte imager fra v?rt <a href="https://harbor.uio.no">registry</a>.</li>
	<li>Nye images som skal legges inn i lokalt registry skal registreres i et eget <a href="https://nettskjema.no/a/78325.html">nettskjema</a>.</li>
	<li>Docker commit er ikke tillatt annet enn ved sandkassebruk. Alts? skal imager som legges i <a href="https://harbor.uio.no">registry</a> bygges fra en Dockerfile.</li>
	<li>Alle applikasjoner som kj?rer i containere m? ha en kontaktadresse i Dockerfilen. Dette kan eksempelvis v?re e-postlisten til gruppen eller applikasjonen. Tidligere var dette satt med MAINTAINER-labelen, og den m? gjerne fortsatt brukes, men i tillegg er det et krav at man ogs? setter labelen no.uio.contact med en e-postliste.</li>
	<li>Alle images m? ogs? merkes/?lables? med gruppe/applikasjonsnavn.</li>
	<li>Hemmeligheter som benyttes i applikasjonen skal ikke inkluderes i selve Dockerfile eller Dockerimages.</li>
</ol>

<h2><a href="#id4">4&nbsp;&nbsp;&nbsp;Brukerh?ndtering og rettigheter i Harbor</a></h2>

<p>Vi ?nsker ? bruke LDAP for innlogging og rettighetsstyring. Ut fra erfaring med harbor02, der vi satte opp manuelle grupper, s?g vi at antallet bruken bare vokste og administrasjon av brukere ble for tidkrevende. Med LDAP kan brukere logge inn med sin driftsbruker, for de som har det. For kunder uten driftsbrukere f?r vanlige brukere tilgang.</p>

<p>&nbsp;</p>

<p>Med ldap-grupper blir passordbytte overholdt av Cerebrum. Skrive- og leserettigheter blir styrt av gruppetilh?righeten til brukeren. LDAP-gruppe skal v?re p? formen harbor-&lt;prosjektnavn-iharbor&gt;. Da blir alle brukere i respektive ldapgruppe synkronsisert inn som medlemmer av prosjektet i harbor. Ny gruppe harbor-XXXX kan bestilles hos cerebrum-drift@usit.uio.no. Denne m? ha spread NIS_ng@UIO for ? virke med synkroniseringen. Husk ogs? p? ? legge ved en beskrivelse av hva gruppen skal brukes til i bestillingen. (tilgangsstyring til prosjekt XXX i hrabor.uio.no f.eks.)</p>

<p>&nbsp;</p>

<p>Siden alle imager skal bygges fra en Dockerfile, s? er det gjerne naturlig ? gj?re dette automatisk med verkt?y som <a href="https://jenkins.io">Jenkins</a>, Ansible etc. I den sammenheng b?r brukergruppene benytte en systembruker for dette form?let. Bestilling av <a href="https://nettskjema.no/a/72149.html">systembrukere</a> gj?res hos Cerebrum. Brukeren skal ha navn p? formatet harbor-&lt;gruppenavn&gt;, f.eks harbor-gid. Gruppen man benytter i <a href="https://harbor.uio.no">harbor</a> b?r gjerne derfor ikke ha privilegier i andre systemer der samme systembruker da kan misbrukes.</p>

<h3><a href="#id5">4.1&nbsp;&nbsp;&nbsp;Rettigheter</a></h3>

<p>En gruppe vil f? admin-rettigheter til sitt eget prosjekt. Det inneb?rer at de kan opprette, oppdatere og slette imager innenefor prosjektet. I tillegg vil alle grupper f? leserettigheter til "rot"-prosjektet som heter "library". Det er i "library" imagene som er henter fra <a href="https://hub.docker.com/">DockerHub</a> vil ligge.</p>

<p>Om man ?nsker ? dele sine image med andre vil dette ogs? v?re mulig.</p>

<h2><a href="#id6">5&nbsp;&nbsp;&nbsp;Legge inn nye images fra DockerHub p? harbor</a></h2>

<p>Om man ikke finner det imaget man trenger i v?rt <a href="https://harbor.uio.no">registry</a> kan man be om at et image fra <a href="https://hub.docker.com/">DockerHub</a> gj?res tilgjengelig. Bestiller m? da gj?re en vurdering av imaget p? forh?nd, med tanke p? sikkerhet, drift og vedlikehold. Bestillingen gj?res via <a href="https://nettskjema.no/a/78325.html">nettskjema</a>, som sender bestillingen videre til GID. GID vil s?, etter nok en vurdering, legge imaget-navnet til i <a href="https://bitbucket.usit.uio.no/projects/GID/repos/oci-replikering/browse/imagelist">imagelisten</a>, med formen "image-navn:tag;nettskjema-nummer". Der "tag" er optional, siden vi som regel ?nsker "latest". Deretter m? endringen commites og pushes til git. Il?pet av en times tid skal s? imaget v?re tilgjengelig i v?rt <a href="https://harbor.uio.no">registry</a>. Om det senere kommer nyere versjoner av dette imaget p? <a href="https://hub.docker.com/">DockerHub</a> vil samme skript oppdatere imaget p? v?rt <a href="https://harbor.uio.no">registry</a>.</p>

<h2><a href="#id7">6&nbsp;&nbsp;&nbsp;Sikkerhetsskanning av imager</a></h2>

<p>I nyere versjon av Harbor er det innebygd sikkerhetsskann av imager. Man vil derfor f? en oversikt over sikkerhetshull, av forskjellig alvorlighetsgrad, for et gitt image. Hvert prosjekt er selv ansvarlige for ? f?lge opp sikkerhetskanningen av sine imager, og patche de sikkerhetshull. Mislighold av imager kan i verste fall medf?re at tjenesten som kj?rer disse imager blir sperret.</p>

<p>For ? kj?re docker p? en sikker og god m?te er et docker-registry en n?dvendighet. Konsekvensen av at docker-registry blir komprimitert vil v?re at alle milj?er som benytter den ogs? er komprimitert, det er derfor naturlig at vi legger oss p? en streng linje n?r det gjelder sikkerheten av docker-registry.</p>

<h3><a href="#id8">6.1&nbsp;&nbsp;&nbsp;Skanning av kj?rende kontainere</a></h3>

<p>For ? forhindre at gamle imager, med kjente sikkerhetshull, st?r ? kj?rer uten vedlikehold har vi, uavhengig av Harbor, laget en l?sning som genererer en oversikt over alle kj?rende kontainere p? alle UiO-driftede RedHat-servere. Denne oversiktet lages ut fra imaget kontaineren kj?rer fra, slik at vi enkelt kan se om hvilke versjoner de forskjellige milj?ene kj?rer. Ogs? her vil rapportene kunne avdekke eventuelt mislighold som i verste fall kan medf?re at tjenesten blir sperret.</p>

<h2><a href="#id9">7&nbsp;&nbsp;&nbsp;Logge inn i Harbor</a></h2>

<p>Harbor er alts? tilgjengelig p? <a href="https://harbor.uio.no">https://harbor.uio.no</a>.</p>

<h3><a href="#id10">7.1&nbsp;&nbsp;&nbsp;Via web</a></h3>

<p>En innlogging via <a href="https://harbor.uio.no">https://harbor.uio.no</a> gj?res med driftbrukere, man vil etter ? ha logget inn f? en oversikt over prosjektene man har tilgang til. Web-GUIet til <a href="https://harbor.uio.no">harbor</a> brukes hovedsaklig til ? f? en oversikt, unders?ke sikkerhetsskan-rapportene, slette imager.</p>

<h3><a href="#id11">7.2&nbsp;&nbsp;&nbsp;Via API</a></h3>

<p>APIet derimot vil hovedsaklig brukes av systembrukere for ? pushe imager man har bygd eller oppdatert, eller laste ned imager man allerede har bygget.</p>

<p>Innlogging gj?res med:</p>

<pre>
docker login -u &lt;brukernavn&gt; harbor.uio.no:443
</pre>

<p>Man blir s? spurt om passord.</p>

<h2><a href="#id12">8&nbsp;&nbsp;&nbsp;Bruk av Harbor</a></h2>

<p>Ansvaret for at et image holdes oppdatert og er sikkert ligger hos den gruppen som har bygd imaget. Det er derfor lurt ? automatisere byggeprosessen av imager s? mye som mulig. Kriteriene for at en byggeprosess skal starte er gjerne flere, men iallefall:</p>

<ul>
	<li>Kildekoden man bygger fra har endret seg.</li>
	<li>Base-imaget man bygger p? har endret seg.</li>
</ul>

<h3><a href="#id13">8.1&nbsp;&nbsp;&nbsp;Bygging av image</a></h3>

<p>Retningslinjene for bruk av Docker sier at bygging av image skal gj?res ved hjelp av Dockerfile. Det legger s?ledes ingen f?ringer p? hvilket verkt?y imaget blir bygget med s? lenge verkt?yet kj?rer p? en UiO maskin. Siden USIT har kompetanse p? Jenkins, anbefaler vi at selvsagt dette. Det er heller ikke tillatt ? bygge image ute i eksterne l?sninger utenfor UiO.</p>

<p>Syntaks for bygging av image fra en Dockerfile er som f?lger:</p>

<pre>
docker image build [OPTIONS] PATH | URL | -
</pre>

<p>Om man st?r i mappen der Dockerfile ligger holder det da med:</p>

<pre>
docker image build .
</pre>

<p>Imaget ligger n? lokalt p? serveren der imaget er bygget. Videre m? imaget tagges f?r det kan sendes til <a href="https://harbor.uio.no">registry</a>.</p>

<h3><a href="#id14">8.2&nbsp;&nbsp;&nbsp;Tagg et image</a></h3>

<p>N?r et image er bygget m? man gi imaget en eller flere tags f?r man kan "pushe" imaget til <a href="https://harbor.uio.no">harbor</a>. Det er viktig at en av taggene imaget f?r er unikt. Alts? det holder ikke ? gi imaget taggen "test", da "test" kan v?re en oppdatert versjon av imaget neste uke. Vi anbefaler derfor ? tagget imaget med git-commit-hasher som vil v?re unikt og reproduserbart.</p>

<p>P? denne m?ten gj?r vi det mulig ? gjenskape et milj? p? et senere tidspunkt for debuggig eller sikkerhetsanalyse.</p>

<p>Man kan s? i tillegg gi det samme imaget som har taggen "&lt;commit-hash&gt;" taggen "utvikling" og pushe begge opp til <a href="https://harbor.uio.no">harbor</a>. Om man da konfigurerer utviklingsmilj?et til ? benytte imager med taggen "utvikling" kan man raskt oppgradere applikasjonen sin, men beholde sporbarhet av endringer.</p>

<p>Fra kommandolinjen kan man tagge et image p? f?lgende m?te:</p>

<pre>
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
</pre>

<p>Siden vi ikke skal pushe imaget til <a href="https://hub.docker.com/">DockerHub</a> m? vi ogs? spesifisere hvilket <a href="https://harbor.uio.no">registry</a> som imaget skal pushes til:</p>

<pre>
docker tag harbor.uio.no:443/&lt;prosjekt&gt;/&lt;applikasjon&gt;:&lt;tag1&gt; harbor.uio.no:443/&lt;prosjekt&gt;/&lt;applikasjon&gt;:&lt;tag2&gt;
</pre>

<p>Her f?r alts? imaget &lt;prosjekt&gt;/&lt;applikasjon&gt;:&lt;tag1&gt; en ny tagg, nemlig tag2. ?nsker man ? gi det samme imaget flere tags, kan man repetere prosessen med &lt;tag3&gt; istedet for &lt;tag2&gt;. Husk at begge taggene m? pushes i neste steg. Dette er noe man typisk gj?r ved bygging av nytt image. F?rst tagges imaget med "commit-hash" og s? "utvikling" eller "dev" eller "utv".</p>

<p>Om imaget man ?nsker ? tagge ikke er lastet opp til harbor.uio.no m? det gj?res f?rst:</p>

<pre>
docker tag &lt;applikasjon&gt;:&lt;tag1&gt; harbor.uio.no:443/&lt;prosjekt&gt;/&lt;applikasjon&gt;:&lt;tag2&gt;
</pre>

<h3><a href="#id15">8.3&nbsp;&nbsp;&nbsp;Push et image</a></h3>

<p>F?r man gj?re en "push" m? man v?re logget inn i <a href="https://harbor.uio.no">harbor</a> via APIet og ha skrivetilgang til &lt;prosjekt&gt;.</p>

<p>Deretter pusher man imaget med f.eks:</p>

<pre>
docker push harbor.uio.no:443/&lt;prosjekt&gt;/&lt;applikasjon&gt;:&lt;tag2&gt;
</pre>

<p>Imaget lastes n? opp og vil v?re tilgjengelig for nedlasting for alle brukere med lesetilgang til prosjektet i <a href="https://harbor.uio.no">harbor</a>. I de tilfeller der imaget har flere tags, m? man gj?re en push for hver tag.</p>

<h3><a href="#id16">8.4&nbsp;&nbsp;&nbsp;Pull ned et image</a></h3>

<p>Gitt at imaget man ?nsker ? hente ned er pushet opp til <a href="https://harbor.uio.no">registry</a> henter man ned nye imager med:</p>

<pre>
docker pull harbor.uio.no:443/&lt;prosjekt&gt;/&lt;applikasjon&gt;:&lt;tag&gt;
</pre>

<p>Dette forutsetter ogs? at man er logget inn via APIet og har lesetilgang til &lt;prosjekt&gt;.</p>

<h3><a href="#id17">8.5&nbsp;&nbsp;&nbsp;Slette imager</a></h3>

<p>Sletting av imager er kun tilgjengelig via GUI og krever admin-tilgang for &lt;prosjekt&gt;. Det er verdt ? merke seg at imaget ikke forsvinner fra servere som allerede har lastet det ned. Om et image har flere tags holder det ? slette et av de siden <a href="https://harbor.uio.no">registry</a> kun lagrer imaget en gang.</p>

<h2><a href="#id18">9&nbsp;&nbsp;&nbsp;Fra utvikling til produkjon</a></h2>

<p>Bruk av docker som applikasjonsplattform kan gi et tempol?ft i hvor ofte man deployer nye versjoner til produksjon. Tiden det tar ? b?de bygge et nytt image er gjerne bare noen sekunder eller minutter, og om dette gj?res automatisk av <a href="https://jenkins.io">Jenkins</a> kan man for se for seg at man ?nsker ? slipper sm? bugfikser flere ganger om dagen.</p>

<p>Vi vil etterhvert legge eksempler her p? hvordan man kan konfigurere en Jenkinsjobb til ? bygge Docker-image.&nbsp;</p>

<p>&nbsp;</p>

    </div>
  </div>
  
      
  
  <span class="vrtx-tags">
      <span class="title">Tags:</span>
    <span class="vrtx-tags-links">
<a href="/english/?vrtx=tags&amp;tag=harbor">harbor</a><span class="tag-separator">,</span>
<a href="/english/?vrtx=tags&amp;tag=docker">docker</a><span class="tag-separator">,</span>
<a href="/english/?vrtx=tags&amp;tag=jenkins">jenkins</a><span class="tag-separator">,</span>
<a href="/english/?vrtx=tags&amp;tag=kontainere">kontainere</a>
    </span>
  </span>


  
  
    
    
    

    
  

  
      
        <div class="vrtx-date-info">
          <span class="published-date-label">Published</span> <span class="published-date">Sep. 26, 2019 9:58 AM </span>
          
            <span class="separator-date"> - </span> <span class="last-modified-date">Last modified</span> <span class="last-modified-date">Sep. 26, 2019 10:08 AM</span>
          
        </div>
      

  
    <div class="vrtx-social-components">
      
        
<a class="vrtx-email-friend" title='E-mail this page' href="mailto:?subject=Bruk%20av%20Harbor&amp;body=https%3A%2F%2Fwww.uio.no%2Fenglish%2Fservices%2Fit%2Fdev%2Fverktoy%2Fharbor%2Findex.html">
E-mail this page</a>

      
      
        
<div class="vrtx-share-at-component">
  <ul>

       <li class="vrtx-share-at-Facebook">
         <a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fwww.uio.no%2Fenglish%2Fservices%2Fit%2Fdev%2Fverktoy%2Fharbor%2Findex.html" target="_blank" class="facebook">
           Share on Facebook</a>
       </li>

       <li class="vrtx-share-at-X">
         <a href="https://x.com/intent/tweet?text=Bruk+av+Harbor&amp;amp;url=https%3A%2F%2Fwww.uio.no%2Fenglish%2Fservices%2Fit%2Fdev%2Fverktoy%2Fharbor%2Findex.html" target="_blank" class="x">
           Share on X</a>
       </li>
  </ul>
</div>

      
    </div>
  

  



  

          </div>
          
      
        
      
          
        </div>
      
       <!--stopindex-->
     </main>
   </div>

    <!-- Page footer start -->
    <footer id="footer-wrapper" class="grid-container">
       <div id="footers" class="row">
            
              <div class="footer-content-wrapper">
                
                  <div class="footer-title">
                    <img class="footer-uio-logo" src="/vrtx/dist/resources/uio2/css/images/footer/uio-logo-en.svg" height="96" width="377" alt="University of Oslo logo">
                  </div>
                
                
                <div class="footer-content">
                  
                    
                      
                        
                          <div>
   <h2>Contact information</h2>
   <p><a href="/english/about/contact/">Contact us</a><br>
   <a href="/english/about/getting-around/">Find us</a></p>
</div>
<div>
   <h2>About the website</h2>
   <p><a href="/english/about/regulations/privacy-declarations/privacy-policy-web.html">Cookies</a><br>
   <a href="/english/services/it/dev/verktoy/harbor/ https:/uustatus.no/nb/erklaringer/publisert/9336562c-fbb2-48db-b3f2-54df3b231a44">Accessibility statement (in Norwegian only)</a></p>
</div> 
                        
                      
                    
                  
                </div>
                <div class="footer-meta-admin">
                   <h2 class="menu-label">Responsible for this page</h2>
                   <p>
                     
                       <a href="mailto:webredaksjon@usit.uio.no">Web Editor IT Department</a>
                     
                   </p>
                   




    <div class="vrtx-login-manage-component">
      <a href="/english/services/it/dev/verktoy/harbor/index.html?authTarget"
         class="vrtx-login-manage-link"
         rel="nofollow">
        Log in
      </a>
    </div>



                </div>
              </div>
            
        </div>
    </footer>
    

      
         
      
      

<!--a4d1bc0e1742c08b--><script style="display: none;">
(function(){
    var bp = document.createElement('script');
    var curProtocol = window.location.protocol.split(':')[0];
    if (curProtocol === 'https'){
   bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
  }
  else{
  bp.src = 'http://push.zhanzhang.baidu.com/push.js';
  }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
})();
</script><!--/a4d1bc0e1742c08b--></body>
</html>
