Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
elearning:workbooks:docker3:drf02 [2022/09/06 12:42] adminelearning:workbooks:docker3:drf02 [2024/02/21 13:41] (Version actuelle) admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
  
-Version : **2022.01**+Version : **2024.01**
  
 Dernière mise-à-jour : ~~LASTMOD~~ Dernière mise-à-jour : ~~LASTMOD~~
Ligne 28: Ligne 28:
       * 3.1 - Créer un Registre local,       * 3.1 - Créer un Registre local,
       * 3.2 - Créer un Serveur de Registre Dédié       * 3.2 - Créer un Serveur de Registre Dédié
-        * Configurer le clone comme Registre Dédié 
         * Configurer le Client         * Configurer le Client
  
Ligne 38: Ligne 37:
  
 <code> <code>
-root@debian9:~# mkdir mongodb +root@debian11:~# mkdir mongodb 
-root@debian9:~# cd mongodb/ +root@debian11:~# cd mongodb/ 
-root@debian9:~/mongodb# touch Dockerfile docker-entrypoint.sh+root@debian11:~/mongodb# touch Dockerfile docker-entrypoint.sh
 </code> </code>
  
 Le Docker file contient les instructions nécessaires pour la contruction de l'image : Le Docker file contient les instructions nécessaires pour la contruction de l'image :
  
-<file txt Dockerfile>+<code> 
 +root@debian11:~/mongodb# vi Dockerfile  
 +root@debian11:~/mongodb# cat Dockerfile 
 FROM ubuntu:bionic FROM ubuntu:bionic
  
Ligne 52: Ligne 53:
  
 RUN set -eux; \ RUN set -eux; \
- apt-get update; \ +        apt-get update; \ 
- apt-get install -y --no-install-recommends \ +        apt-get install -y --no-install-recommends \ 
- ca-certificates \ +                ca-certificates \ 
- jq \ +                jq \ 
- numactl \ +                numactl \ 
- ; \ +        ; \ 
- if ! command -v ps > /dev/null; then \ +        if ! command -v ps > /dev/null; then \ 
- apt-get install -y --no-install-recommends procps; \ +                apt-get install -y --no-install-recommends procps; \ 
- fi; \ +        fi; \ 
- rm -rf /var/lib/apt/lists/*+        rm -rf /var/lib/apt/lists/*
  
 # grab gosu for easy step-down from root (https://github.com/tianon/gosu/releases) # grab gosu for easy step-down from root (https://github.com/tianon/gosu/releases)
Ligne 69: Ligne 70:
  
 RUN set -ex; \ RUN set -ex; \
- +        
- apt-get update; \ +        apt-get update; \ 
- apt-get install -y --no-install-recommends \ +        apt-get install -y --no-install-recommends \ 
- wget \ +                wget \ 
- ; \ +        ; \ 
- if ! command -v gpg > /dev/null; then \ +        if ! command -v gpg > /dev/null; then \ 
- apt-get install -y --no-install-recommends gnupg dirmngr; \ +                apt-get install -y --no-install-recommends gnupg dirmngr; \ 
- fi; \ +        fi; \ 
- rm -rf /var/lib/apt/lists/*;+        rm -rf /var/lib/apt/lists/*;
-+        
- dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')";+        dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')";
- wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch";+        wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch";
- wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc";+        wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc";
- export GNUPGHOME="$(mktemp -d)"; \ +        export GNUPGHOME="$(mktemp -d)"; \ 
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4;+        gpg --batch --keyserver pgp.mit.edu --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4;
- # gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu;+        # gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu;
- command -v gpgconf && gpgconf --kill all || :; \ +        command -v gpgconf && gpgconf --kill all || :; \ 
- rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc;+        rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc;
- chmod +x /usr/local/bin/gosu;+        chmod +x /usr/local/bin/gosu;
- gosu --version; \ +        gosu --version; \ 
- gosu nobody true; \ +        gosu nobody true; \ 
-+        
- wget -O /js-yaml.js "https://github.com/nodeca/js-yaml/raw/${JSYAML_VERSION}/dist/js-yaml.js"; \+        wget -O /js-yaml.js "https://github.com/nodeca/js-yaml/raw/${JSYAML_VERSION}/dist/js-yaml.js"; \
 # TODO some sort of download verification here # TODO some sort of download verification here
- +        
- apt-get purge -y --auto-remove wget+        apt-get purge -y --auto-remove wget
  
 RUN mkdir /docker-entrypoint-initdb.d RUN mkdir /docker-entrypoint-initdb.d
Ligne 100: Ligne 101:
 ENV GPG_KEYS E162F504A20CDF15827F718D4B7C549A058F8B6B ENV GPG_KEYS E162F504A20CDF15827F718D4B7C549A058F8B6B
 RUN set -ex; \ RUN set -ex; \
- export GNUPGHOME="$(mktemp -d)"; \ +        export GNUPGHOME="$(mktemp -d)"; \ 
- for key in $GPG_KEYS; do \ +        for key in $GPG_KEYS; do \ 
- gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key";+                gpg --batch --keyserver pgp.mit.edu --recv-keys "$key";
- done; \ +        done; \ 
- gpg --batch --export $GPG_KEYS > /etc/apt/trusted.gpg.d/mongodb.gpg;+        gpg --batch --export $GPG_KEYS > /etc/apt/trusted.gpg.d/mongodb.gpg;
- command -v gpgconf && gpgconf --kill all || :; \ +        command -v gpgconf && gpgconf --kill all || :; \ 
- rm -r "$GNUPGHOME";+        rm -r "$GNUPGHOME";
- apt-key list+        apt-key list
  
 # Allow build-time overrides (eg. to build image with MongoDB Enterprise version) # Allow build-time overrides (eg. to build image with MongoDB Enterprise version)
Ligne 123: Ligne 124:
  
 RUN set -x \ RUN set -x \
- && apt-get update \ +        && apt-get update \ 
- && apt-get install -y \ +        && apt-get install -y \ 
- ${MONGO_PACKAGE}=$MONGO_VERSION \ +                ${MONGO_PACKAGE}=$MONGO_VERSION \ 
- ${MONGO_PACKAGE}-server=$MONGO_VERSION \ +                ${MONGO_PACKAGE}-server=$MONGO_VERSION \ 
- ${MONGO_PACKAGE}-shell=$MONGO_VERSION \ +                ${MONGO_PACKAGE}-shell=$MONGO_VERSION \ 
- ${MONGO_PACKAGE}-mongos=$MONGO_VERSION \ +                ${MONGO_PACKAGE}-mongos=$MONGO_VERSION \ 
- ${MONGO_PACKAGE}-tools=$MONGO_VERSION \ +                ${MONGO_PACKAGE}-tools=$MONGO_VERSION \ 
- && rm -rf /var/lib/apt/lists/* \ +        && rm -rf /var/lib/apt/lists/* \ 
- && rm -rf /var/lib/mongodb \ +        && rm -rf /var/lib/mongodb \ 
- && mv /etc/mongod.conf /etc/mongod.conf.orig+        && mv /etc/mongod.conf /etc/mongod.conf.orig
  
 RUN mkdir -p /data/db /data/configdb \ RUN mkdir -p /data/db /data/configdb \
- && chown -R mongodb:mongodb /data/db /data/configdb+        && chown -R mongodb:mongodb /data/db /data/configdb
 VOLUME /data/db /data/configdb VOLUME /data/db /data/configdb
  
Ligne 143: Ligne 144:
 EXPOSE 27017 EXPOSE 27017
 CMD ["mongod"] CMD ["mongod"]
-</file>+</code>
  
 Le fichier docker-entrypoint.sh sert à lancer le serveur mongodb dans le conteneur : Le fichier docker-entrypoint.sh sert à lancer le serveur mongodb dans le conteneur :
  
-<file txt docker-entrypoint.sh>+<code> 
 +root@debian11:~/mongodb# vi docker-entrypoint.sh 
 +root@debian11:~/mongodb# cat docker-entrypoint.sh
 #!/bin/bash #!/bin/bash
 set -Eeuo pipefail set -Eeuo pipefail
  
 if [ "${1:0:1}" = '-' ]; then if [ "${1:0:1}" = '-' ]; then
- set -- mongod "$@"+        set -- mongod "$@"
 fi fi
  
Ligne 160: Ligne 163:
 # all mongo* commands should be dropped to the correct user # all mongo* commands should be dropped to the correct user
 if [[ "$originalArgOne" == mongo* ]] && [ "$(id -u)" = '0' ]; then if [[ "$originalArgOne" == mongo* ]] && [ "$(id -u)" = '0' ]; then
- if [ "$originalArgOne" = 'mongod' ]; then +        if [ "$originalArgOne" = 'mongod' ]; then 
- find /data/configdb /data/db \! -user mongodb -exec chown mongodb '{}'+                find /data/configdb /data/db \! -user mongodb -exec chown mongodb '{}'
- fi+        fi
  
- # make sure we can write to stdout and stderr as "mongodb" +        # make sure we can write to stdout and stderr as "mongodb" 
- # (for our "initdb" code later; see "--logpath" below) +        # (for our "initdb" code later; see "--logpath" below) 
- chown --dereference mongodb "/proc/$$/fd/1" "/proc/$$/fd/2" || : +        chown --dereference mongodb "/proc/$$/fd/1" "/proc/$$/fd/2" || : 
- # ignore errors thanks to https://github.com/docker-library/mongo/issues/149+        # ignore errors thanks to https://github.com/docker-library/mongo/issues/149
  
- exec gosu mongodb "$BASH_SOURCE" "$@"+        exec gosu mongodb "$BASH_SOURCE" "$@"
 fi fi
  
Ligne 175: Ligne 178:
 # https://docs.mongodb.com/manual/administration/production-notes/#configuring-numa-on-linux # https://docs.mongodb.com/manual/administration/production-notes/#configuring-numa-on-linux
 if [[ "$originalArgOne" == mongo* ]]; then if [[ "$originalArgOne" == mongo* ]]; then
- numa='numactl --interleave=all' +        numa='numactl --interleave=all' 
- if $numa true &> /dev/null; then +        if $numa true &> /dev/null; then 
- set -- $numa "$@" +                set -- $numa "$@" 
- fi+        fi
 fi fi
  
Ligne 186: Ligne 189:
 #  "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature) #  "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
 file_env() { file_env() {
- local var="$1" +        local var="$1" 
- local fileVar="${var}_FILE" +        local fileVar="${var}_FILE" 
- local def="${2:-}" +        local def="${2:-}" 
- if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then +        if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then 
- echo >&2 "error: both $var and $fileVar are set (but are exclusive)" +                echo >&2 "error: both $var and $fileVar are set (but are exclusive)" 
- exit 1 +                exit 1 
- fi +        fi 
- local val="$def" +        local val="$def" 
- if [ "${!var:-}" ]; then +        if [ "${!var:-}" ]; then 
- val="${!var}" +                val="${!var}" 
- elif [ "${!fileVar:-}" ]; then +        elif [ "${!fileVar:-}" ]; then 
- val="$(< "${!fileVar}")" +                val="$(< "${!fileVar}")" 
- fi +        fi 
- export "$var"="$val" +        export "$var"="$val" 
- unset "$fileVar"+        unset "$fileVar"
 } }
  
 # see https://github.com/docker-library/mongo/issues/147 (mongod is picky about duplicated arguments) # see https://github.com/docker-library/mongo/issues/147 (mongod is picky about duplicated arguments)
 _mongod_hack_have_arg() { _mongod_hack_have_arg() {
- local checkArg="$1"; shift +        local checkArg="$1"; shift 
- local arg +        local arg 
- for arg; do +        for arg; do 
- case "$arg" in +                case "$arg" in 
- "$checkArg"|"$checkArg"=*) +                        "$checkArg"|"$checkArg"=*) 
- return 0 +                                return 0 
- ;; +                                ;; 
- esac +                esac 
- done +        done 
- return 1+        return 1
 } }
 # _mongod_hack_get_arg_val '--some-arg' "$@" # _mongod_hack_get_arg_val '--some-arg' "$@"
 _mongod_hack_get_arg_val() { _mongod_hack_get_arg_val() {
- local checkArg="$1"; shift +        local checkArg="$1"; shift 
- while [ "$#" -gt 0 ]; do +        while [ "$#" -gt 0 ]; do 
- local arg="$1"; shift +                local arg="$1"; shift 
- case "$arg" in +                case "$arg" in 
- "$checkArg"+                        "$checkArg"
- echo "$1" +                                echo "$1" 
- return 0 +                                return 0 
- ;; +                                ;; 
- "$checkArg"=*) +                        "$checkArg"=*) 
- echo "${arg#$checkArg=}" +                                echo "${arg#$checkArg=}" 
- return 0 +                                return 0 
- ;; +                                ;; 
- esac +                esac 
- done +        done 
- return 1+        return 1
 } }
 declare -a mongodHackedArgs declare -a mongodHackedArgs
Ligne 238: Ligne 241:
 # set -- "${mongodHackedArgs[@]}" # set -- "${mongodHackedArgs[@]}"
 _mongod_hack_ensure_arg() { _mongod_hack_ensure_arg() {
- local ensureArg="$1"; shift +        local ensureArg="$1"; shift 
- mongodHackedArgs=( "$@"+        mongodHackedArgs=( "$@"
- if ! _mongod_hack_have_arg "$ensureArg" "$@"; then +        if ! _mongod_hack_have_arg "$ensureArg" "$@"; then 
- mongodHackedArgs+=( "$ensureArg"+                mongodHackedArgs+=( "$ensureArg"
- fi+        fi
 } }
 # _mongod_hack_ensure_no_arg '--some-unwanted-arg' "$@" # _mongod_hack_ensure_no_arg '--some-unwanted-arg' "$@"
 # set -- "${mongodHackedArgs[@]}" # set -- "${mongodHackedArgs[@]}"
 _mongod_hack_ensure_no_arg() { _mongod_hack_ensure_no_arg() {
- local ensureNoArg="$1"; shift +        local ensureNoArg="$1"; shift 
- mongodHackedArgs=() +        mongodHackedArgs=() 
- while [ "$#" -gt 0 ]; do +        while [ "$#" -gt 0 ]; do 
- local arg="$1"; shift +                local arg="$1"; shift 
- if [ "$arg" = "$ensureNoArg" ]; then +                if [ "$arg" = "$ensureNoArg" ]; then 
- continue +                        continue 
- fi +                fi 
- mongodHackedArgs+=( "$arg"+                mongodHackedArgs+=( "$arg"
- done+        done
 } }
 # _mongod_hack_ensure_no_arg '--some-unwanted-arg' "$@" # _mongod_hack_ensure_no_arg '--some-unwanted-arg' "$@"
 # set -- "${mongodHackedArgs[@]}" # set -- "${mongodHackedArgs[@]}"
 _mongod_hack_ensure_no_arg_val() { _mongod_hack_ensure_no_arg_val() {
- local ensureNoArg="$1"; shift +        local ensureNoArg="$1"; shift 
- mongodHackedArgs=() +        mongodHackedArgs=() 
- while [ "$#" -gt 0 ]; do +        while [ "$#" -gt 0 ]; do 
- local arg="$1"; shift +                local arg="$1"; shift 
- case "$arg" in +                case "$arg" in 
- "$ensureNoArg"+                        "$ensureNoArg"
- shift # also skip the value +                                shift # also skip the value 
- continue +                                continue 
- ;; +                                ;; 
- "$ensureNoArg"=*) +                        "$ensureNoArg"=*) 
- # value is already included +                                # value is already included 
- continue +                                continue 
- ;; +                                ;; 
- esac +                esac 
- mongodHackedArgs+=( "$arg"+                mongodHackedArgs+=( "$arg"
- done+        done
 } }
 # _mongod_hack_ensure_arg_val '--some-arg' 'some-val' "$@" # _mongod_hack_ensure_arg_val '--some-arg' 'some-val' "$@"
 # set -- "${mongodHackedArgs[@]}" # set -- "${mongodHackedArgs[@]}"
 _mongod_hack_ensure_arg_val() { _mongod_hack_ensure_arg_val() {
- local ensureArg="$1"; shift +        local ensureArg="$1"; shift 
- local ensureVal="$1"; shift +        local ensureVal="$1"; shift 
- _mongod_hack_ensure_no_arg_val "$ensureArg" "$@" +        _mongod_hack_ensure_no_arg_val "$ensureArg" "$@" 
- mongodHackedArgs+=( "$ensureArg" "$ensureVal" )+        mongodHackedArgs+=( "$ensureArg" "$ensureVal" )
 } }
  
 # _js_escape 'some "string" value' # _js_escape 'some "string" value'
 _js_escape() { _js_escape() {
- jq --null-input --arg 'str' "$1" '$str'+        jq --null-input --arg 'str' "$1" '$str'
 } }
  
Ligne 294: Ligne 297:
 tempConfigFile="${TMPDIR:-/tmp}/docker-entrypoint-temp-config.json" tempConfigFile="${TMPDIR:-/tmp}/docker-entrypoint-temp-config.json"
 _parse_config() { _parse_config() {
- if [ -s "$tempConfigFile" ]; then +        if [ -s "$tempConfigFile" ]; then 
- return 0 +                return 0 
- fi+        fi
  
- local configPath +        local configPath 
- if configPath="$(_mongod_hack_get_arg_val --config "$@")"; then +        if configPath="$(_mongod_hack_get_arg_val --config "$@")"; then 
- # if --config is specified, parse it into a JSON file so we can remove a few problematic keys (especially SSL-related keys) +                # if --config is specified, parse it into a JSON file so we can remove a few problematic keys (especially SSL-related keys) 
- # see https://docs.mongodb.com/manual/reference/configuration-options/ +                # see https://docs.mongodb.com/manual/reference/configuration-options/ 
- mongo --norc --nodb --quiet --eval "load('/js-yaml.js'); printjson(jsyaml.load(cat($(_js_escape "$configPath"))))" > "$jsonConfigFile" +                mongo --norc --nodb --quiet --eval "load('/js-yaml.js'); printjson(jsyaml.load(cat($(_js_escape "$configPath"))))" > "$jsonConfigFile" 
- jq 'del(.systemLog, .processManagement, .net, .security)' "$jsonConfigFile" > "$tempConfigFile" +                jq 'del(.systemLog, .processManagement, .net, .security)' "$jsonConfigFile" > "$tempConfigFile" 
- return 0 +                return 0 
- fi+        fi
  
- return 1+        return 1
 } }
 dbPath= dbPath=
 _dbPath() { _dbPath() {
- if [ -n "$dbPath" ]; then +        if [ -n "$dbPath" ]; then 
- echo "$dbPath" +                echo "$dbPath" 
- return +                return 
- fi+        fi
  
- if ! dbPath="$(_mongod_hack_get_arg_val --dbpath "$@")"; then +        if ! dbPath="$(_mongod_hack_get_arg_val --dbpath "$@")"; then 
- if _parse_config "$@"; then +                if _parse_config "$@"; then 
- dbPath="$(jq -r '.storage.dbPath // empty' "$jsonConfigFile")" +                        dbPath="$(jq -r '.storage.dbPath // empty' "$jsonConfigFile")" 
- fi +                fi 
- fi+        fi
  
- if [ -z "$dbPath" ]; then +        if [ -z "$dbPath" ]; then 
- if _mongod_hack_have_arg --configsvr "$@" || { +                if _mongod_hack_have_arg --configsvr "$@" || { 
- _parse_config "$@"+                        _parse_config "$@"
- && clusterRole="$(jq -r '.sharding.clusterRole // empty' "$jsonConfigFile")"+                        && clusterRole="$(jq -r '.sharding.clusterRole // empty' "$jsonConfigFile")"
- && [ "$clusterRole" = 'configsvr'+                        && [ "$clusterRole" = 'configsvr'
- }; then +                }; then 
- # if running as config server, then the default dbpath is /data/configdb +                        # if running as config server, then the default dbpath is /data/configdb 
- # https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-configsvr +                        # https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-configsvr 
- dbPath=/data/configdb +                        dbPath=/data/configdb 
- fi +                fi 
- fi+        fi
  
- : "${dbPath:=/data/db}"+        : "${dbPath:=/data/db}"
  
- echo "$dbPath"+        echo "$dbPath"
 } }
  
 if [ "$originalArgOne" = 'mongod' ]; then if [ "$originalArgOne" = 'mongod' ]; then
- file_env 'MONGO_INITDB_ROOT_USERNAME' +        file_env 'MONGO_INITDB_ROOT_USERNAME' 
- file_env 'MONGO_INITDB_ROOT_PASSWORD' +        file_env 'MONGO_INITDB_ROOT_PASSWORD' 
- # pre-check a few factors to see if it's even worth bothering with initdb +        # pre-check a few factors to see if it's even worth bothering with initdb 
- shouldPerformInitdb= +        shouldPerformInitdb= 
- if [ "$MONGO_INITDB_ROOT_USERNAME" ] && [ "$MONGO_INITDB_ROOT_PASSWORD" ]; then +        if [ "$MONGO_INITDB_ROOT_USERNAME" ] && [ "$MONGO_INITDB_ROOT_PASSWORD" ]; then 
- # if we have a username/password, let's set "--auth" +                # if we have a username/password, let's set "--auth" 
- _mongod_hack_ensure_arg '--auth' "$@" +                _mongod_hack_ensure_arg '--auth' "$@" 
- set -- "${mongodHackedArgs[@]}" +                set -- "${mongodHackedArgs[@]}" 
- shouldPerformInitdb='true' +                shouldPerformInitdb='true' 
- elif [ "$MONGO_INITDB_ROOT_USERNAME" ] || [ "$MONGO_INITDB_ROOT_PASSWORD" ]; then +        elif [ "$MONGO_INITDB_ROOT_USERNAME" ] || [ "$MONGO_INITDB_ROOT_PASSWORD" ]; then 
- cat >&2 <<-'EOF' +                cat >&2 <<-'EOF' 
- error: missing 'MONGO_INITDB_ROOT_USERNAME' or 'MONGO_INITDB_ROOT_PASSWORD' +                        error: missing 'MONGO_INITDB_ROOT_USERNAME' or 'MONGO_INITDB_ROOT_PASSWORD' 
-        both must be specified for a user to be created +                               both must be specified for a user to be created 
- EOF +                EOF 
- exit 1 +                exit 1 
- fi+        fi
  
- if [ -z "$shouldPerformInitdb" ]; then +        if [ -z "$shouldPerformInitdb" ]; then 
- # if we've got any /docker-entrypoint-initdb.d/* files to parse later, we should initdb +                # if we've got any /docker-entrypoint-initdb.d/* files to parse later, we should initdb 
- for f in /docker-entrypoint-initdb.d/*; do +                for f in /docker-entrypoint-initdb.d/*; do 
- case "$f" in +                        case "$f" in 
- *.sh|*.js) # this should match the set of files we check for below +                                *.sh|*.js) # this should match the set of files we check for below 
- shouldPerformInitdb="$f" +                                        shouldPerformInitdb="$f" 
- break +                                        break 
- ;; +                                        ;; 
- esac +                        esac 
- done +                done 
- fi+        fi
  
- # check for a few known paths (to determine whether we've already initialized and should thus skip our initdb scripts) +        # check for a few known paths (to determine whether we've already initialized and should thus skip our initdb scripts) 
- if [ -n "$shouldPerformInitdb" ]; then +        if [ -n "$shouldPerformInitdb" ]; then 
- dbPath="$(_dbPath "$@")" +                dbPath="$(_dbPath "$@")" 
- for path in \ +                for path in \ 
- "$dbPath/WiredTiger"+                        "$dbPath/WiredTiger"
- "$dbPath/journal"+                        "$dbPath/journal"
- "$dbPath/local.0"+                        "$dbPath/local.0"
- "$dbPath/storage.bson"+                        "$dbPath/storage.bson"
- ; do +                ; do 
- if [ -e "$path" ]; then +                        if [ -e "$path" ]; then 
- shouldPerformInitdb= +                                shouldPerformInitdb= 
- break +                                break 
- fi +                        fi 
- done +                done 
- fi+        fi
  
- if [ -n "$shouldPerformInitdb" ]; then +        if [ -n "$shouldPerformInitdb" ]; then 
- mongodHackedArgs=( "$@"+                mongodHackedArgs=( "$@"
- if _parse_config "$@"; then +                if _parse_config "$@"; then 
- _mongod_hack_ensure_arg_val --config "$tempConfigFile" "${mongodHackedArgs[@]}" +                        _mongod_hack_ensure_arg_val --config "$tempConfigFile" "${mongodHackedArgs[@]}" 
- fi +                fi 
- _mongod_hack_ensure_arg_val --bind_ip 127.0.0.1 "${mongodHackedArgs[@]}" +                _mongod_hack_ensure_arg_val --bind_ip 127.0.0.1 "${mongodHackedArgs[@]}" 
- _mongod_hack_ensure_arg_val --port 27017 "${mongodHackedArgs[@]}" +                _mongod_hack_ensure_arg_val --port 27017 "${mongodHackedArgs[@]}" 
- _mongod_hack_ensure_no_arg --bind_ip_all "${mongodHackedArgs[@]}"+                _mongod_hack_ensure_no_arg --bind_ip_all "${mongodHackedArgs[@]}"
  
- # remove "--auth" and "--replSet" for our initial startup (see https://docs.mongodb.com/manual/tutorial/enable-authentication/#start-mongodb-without-access-control) +                # remove "--auth" and "--replSet" for our initial startup (see https://docs.mongodb.com/manual/tutorial/enable-authentication/#start-mongodb-without-access-control) 
- # https://github.com/docker-library/mongo/issues/211 +                # https://github.com/docker-library/mongo/issues/211 
- _mongod_hack_ensure_no_arg --auth "${mongodHackedArgs[@]}" +                _mongod_hack_ensure_no_arg --auth "${mongodHackedArgs[@]}" 
- if [ "$MONGO_INITDB_ROOT_USERNAME" ] && [ "$MONGO_INITDB_ROOT_PASSWORD" ]; then +                if [ "$MONGO_INITDB_ROOT_USERNAME" ] && [ "$MONGO_INITDB_ROOT_PASSWORD" ]; then 
- _mongod_hack_ensure_no_arg_val --replSet "${mongodHackedArgs[@]}" +                        _mongod_hack_ensure_no_arg_val --replSet "${mongodHackedArgs[@]}" 
- fi+                fi
  
- sslMode="$(_mongod_hack_have_arg '--sslPEMKeyFile' "$@" && echo 'allowSSL' || echo 'disabled')" # "BadValue: need sslPEMKeyFile when SSL is enabled" vs "BadValue: need to enable SSL via the sslMode flag when using SSL configuration parameters" +                sslMode="$(_mongod_hack_have_arg '--sslPEMKeyFile' "$@" && echo 'allowSSL' || echo 'disabled')" # "BadValue: need sslPEMKeyFile when SSL is enabled" vs "BadValue: need to enable SSL via the sslMode flag when using SSL configuration parameters" 
- _mongod_hack_ensure_arg_val --sslMode "$sslMode" "${mongodHackedArgs[@]}"+                _mongod_hack_ensure_arg_val --sslMode "$sslMode" "${mongodHackedArgs[@]}"
  
- if stat "/proc/$$/fd/1" > /dev/null && [ -w "/proc/$$/fd/1" ]; then +                if stat "/proc/$$/fd/1" > /dev/null && [ -w "/proc/$$/fd/1" ]; then 
- # https://github.com/mongodb/mongo/blob/38c0eb538d0fd390c6cb9ce9ae9894153f6e8ef5/src/mongo/db/initialize_server_global_state.cpp#L237-L251 +                        # https://github.com/mongodb/mongo/blob/38c0eb538d0fd390c6cb9ce9ae9894153f6e8ef5/src/mongo/db/initialize_server_global_state.cpp#L237-L251 
- # https://github.com/docker-library/mongo/issues/164#issuecomment-293965668 +                        # https://github.com/docker-library/mongo/issues/164#issuecomment-293965668 
- _mongod_hack_ensure_arg_val --logpath "/proc/$$/fd/1" "${mongodHackedArgs[@]}" +                        _mongod_hack_ensure_arg_val --logpath "/proc/$$/fd/1" "${mongodHackedArgs[@]}" 
- else +                else 
- initdbLogPath="$(_dbPath "$@")/docker-initdb.log" +                        initdbLogPath="$(_dbPath "$@")/docker-initdb.log" 
- echo >&2 "warning: initdb logs cannot write to '/proc/$$/fd/1', so they are in '$initdbLogPath' instead" +                        echo >&2 "warning: initdb logs cannot write to '/proc/$$/fd/1', so they are in '$initdbLogPath' instead" 
- _mongod_hack_ensure_arg_val --logpath "$initdbLogPath" "${mongodHackedArgs[@]}" +                        _mongod_hack_ensure_arg_val --logpath "$initdbLogPath" "${mongodHackedArgs[@]}" 
- fi +                fi 
- _mongod_hack_ensure_arg --logappend "${mongodHackedArgs[@]}"+                _mongod_hack_ensure_arg --logappend "${mongodHackedArgs[@]}"
  
- pidfile="${TMPDIR:-/tmp}/docker-entrypoint-temp-mongod.pid" +                pidfile="${TMPDIR:-/tmp}/docker-entrypoint-temp-mongod.pid" 
- rm -f "$pidfile" +                rm -f "$pidfile" 
- _mongod_hack_ensure_arg_val --pidfilepath "$pidfile" "${mongodHackedArgs[@]}"+                _mongod_hack_ensure_arg_val --pidfilepath "$pidfile" "${mongodHackedArgs[@]}"
  
- "${mongodHackedArgs[@]}" --fork+                "${mongodHackedArgs[@]}" --fork
  
- mongo=( mongo --host 127.0.0.1 --port 27017 --quiet )+                mongo=( mongo --host 127.0.0.1 --port 27017 --quiet )
  
- # check to see that our "mongod" actually did start up (catches "--help", "--version", MongoDB 3.2 being silly, slow prealloc, etc) +                # check to see that our "mongod" actually did start up (catches "--help", "--version", MongoDB 3.2 being silly, slow prealloc, etc) 
- # https://jira.mongodb.org/browse/SERVER-16292 +                # https://jira.mongodb.org/browse/SERVER-16292 
- tries=30 +                tries=30 
- while true; do +                while true; do 
- if ! { [ -s "$pidfile" ] && ps "$(< "$pidfile")" &> /dev/null; }; then +                        if ! { [ -s "$pidfile" ] && ps "$(< "$pidfile")" &> /dev/null; }; then 
- # bail ASAP if "mongod" isn't even running +                                # bail ASAP if "mongod" isn't even running 
- echo >&+                                echo >&
- echo >&2 "error: $originalArgOne does not appear to have stayed running -- perhaps it had an error?" +                                echo >&2 "error: $originalArgOne does not appear to have stayed running -- perhaps it had an error?" 
- echo >&+                                echo >&
- exit 1 +                                exit 1 
- fi +                        fi 
- if "${mongo[@]}" 'admin' --eval 'quit(0)' &> /dev/null; then +                        if "${mongo[@]}" 'admin' --eval 'quit(0)' &> /dev/null; then 
- # success! +                                # success! 
- break +                                break 
- fi +                        fi 
- (( tries-- )) +                        (( tries-- )) 
- if [ "$tries" -le 0 ]; then +                        if [ "$tries" -le 0 ]; then 
- echo >&+                                echo >&
- echo >&2 "error: $originalArgOne does not appear to have accepted connections quickly enough -- perhaps it had an error?" +                                echo >&2 "error: $originalArgOne does not appear to have accepted connections quickly enough -- perhaps it had an error?" 
- echo >&+                                echo >&
- exit 1 +                                exit 1 
- fi +                        fi 
- sleep 1 +                        sleep 1 
- done+                done
  
- if [ "$MONGO_INITDB_ROOT_USERNAME" ] && [ "$MONGO_INITDB_ROOT_PASSWORD" ]; then +                if [ "$MONGO_INITDB_ROOT_USERNAME" ] && [ "$MONGO_INITDB_ROOT_PASSWORD" ]; then 
- rootAuthDatabase='admin'+                        rootAuthDatabase='admin'
  
- "${mongo[@]}" "$rootAuthDatabase" <<-EOJS +                        "${mongo[@]}" "$rootAuthDatabase" <<-EOJS 
- db.createUser({ +                                db.createUser({ 
- user: $(_js_escape "$MONGO_INITDB_ROOT_USERNAME"), +                                        user: $(_js_escape "$MONGO_INITDB_ROOT_USERNAME"), 
- pwd: $(_js_escape "$MONGO_INITDB_ROOT_PASSWORD"), +                                        pwd: $(_js_escape "$MONGO_INITDB_ROOT_PASSWORD"), 
- roles: [ { role: 'root', db: $(_js_escape "$rootAuthDatabase") } ] +                                        roles: [ { role: 'root', db: $(_js_escape "$rootAuthDatabase") } ] 
- }) +                                }) 
- EOJS +                        EOJS 
- fi+                fi
  
- export MONGO_INITDB_DATABASE="${MONGO_INITDB_DATABASE:-test}"+                export MONGO_INITDB_DATABASE="${MONGO_INITDB_DATABASE:-test}"
  
- echo +                echo 
- for f in /docker-entrypoint-initdb.d/*; do +                for f in /docker-entrypoint-initdb.d/*; do 
- case "$f" in +                        case "$f" in 
- *.sh) echo "$0: running $f"; . "$f" ;; +                                *.sh) echo "$0: running $f"; . "$f" ;; 
- *.js) echo "$0: running $f"; "${mongo[@]}" "$MONGO_INITDB_DATABASE" "$f"; echo ;; +                                *.js) echo "$0: running $f"; "${mongo[@]}" "$MONGO_INITDB_DATABASE" "$f"; echo ;; 
- *)    echo "$0: ignoring $f" ;; +                                *)    echo "$0: ignoring $f" ;; 
- esac +                        esac 
- echo +                        echo 
- done+                done
  
- "${mongodHackedArgs[@]}" --shutdown +                "${mongodHackedArgs[@]}" --shutdown 
- rm -f "$pidfile"+                rm -f "$pidfile"
  
- echo +                echo 
- echo 'MongoDB init process complete; ready for start up.' +                echo 'MongoDB init process complete; ready for start up.' 
- echo +                echo 
- fi+        fi
  
- # MongoDB 3.6+ defaults to localhost-only binding +        # MongoDB 3.6+ defaults to localhost-only binding 
- if mongod --help 2>&1 | grep -q -- --bind_ip_all; then # TODO remove this conditional when 3.4 is no longer supported +        if mongod --help 2>&1 | grep -q -- --bind_ip_all; then # TODO remove this conditional when 3.4 is no longer supported 
- haveBindIp= +                haveBindIp= 
- if _mongod_hack_have_arg --bind_ip "$@" || _mongod_hack_have_arg --bind_ip_all "$@"; then +                if _mongod_hack_have_arg --bind_ip "$@" || _mongod_hack_have_arg --bind_ip_all "$@"; then 
- haveBindIp=1 +                        haveBindIp=1 
- elif _parse_config "$@" && jq --exit-status '.net.bindIp // .net.bindIpAll' "$jsonConfigFile" > /dev/null; then +                elif _parse_config "$@" && jq --exit-status '.net.bindIp // .net.bindIpAll' "$jsonConfigFile" > /dev/null; then 
- haveBindIp=1 +                        haveBindIp=1 
- fi +                fi 
- if [ -z "$haveBindIp" ]; then +                if [ -z "$haveBindIp" ]; then 
- # so if no "--bind_ip" is specified, let's add "--bind_ip_all" +                        # so if no "--bind_ip" is specified, let's add "--bind_ip_all" 
- set -- "$@" --bind_ip_all +                        set -- "$@" --bind_ip_all 
- fi +                fi 
- fi+        fi
  
- unset "${!MONGO_INITDB_@}"+        unset "${!MONGO_INITDB_@}"
 fi fi
  
Ligne 500: Ligne 503:
  
 exec "$@" exec "$@"
-</file>+</code>
  
 Examinons chaque commande dans le Dockerfile : Examinons chaque commande dans le Dockerfile :
Ligne 546: Ligne 549:
  wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \  wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
  export GNUPGHOME="$(mktemp -d)"; \  export GNUPGHOME="$(mktemp -d)"; \
- gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \+ gpg --batch --keyserver pgp.mit.edu --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
  gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \  gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
  command -v gpgconf && gpgconf --kill all || :; \  command -v gpgconf && gpgconf --kill all || :; \
Ligne 565: Ligne 568:
  export GNUPGHOME="$(mktemp -d)"; \  export GNUPGHOME="$(mktemp -d)"; \
  for key in $GPG_KEYS; do \  for key in $GPG_KEYS; do \
- gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \+ gpg --batch --keyserver pgp.mit.edu --recv-keys "$key"; \
  done; \  done; \
  gpg --batch --export $GPG_KEYS > /etc/apt/trusted.gpg.d/mongodb.gpg; \  gpg --batch --export $GPG_KEYS > /etc/apt/trusted.gpg.d/mongodb.gpg; \
Ligne 595: Ligne 598:
   RUN ["/bin/bash", "-c", "commande"]   RUN ["/bin/bash", "-c", "commande"]
  
-<WRAP center round important>+<WRAP center round important 50%>
 **Important** : La commande RUN est utilisée pour exécuter une commande passée en argument lors de la compilation de l'image seulement. Cette commande ne doit pas donc être utilisée pour exécuter une commande lors du lancement du conteneur. La commande utilisée pour accomplir ce dernier est ENTRYPOINT. **Important** : La commande RUN est utilisée pour exécuter une commande passée en argument lors de la compilation de l'image seulement. Cette commande ne doit pas donc être utilisée pour exécuter une commande lors du lancement du conteneur. La commande utilisée pour accomplir ce dernier est ENTRYPOINT.
 </WRAP> </WRAP>
Ligne 646: Ligne 649:
 Il est possible d'exclure des fichiers présents dans le contexte en les mettant dans un fichier appelé **.dockerignore** placé dans le contexte. Il est possible d'exclure des fichiers présents dans le contexte en les mettant dans un fichier appelé **.dockerignore** placé dans le contexte.
  
-<WRAP center round important>+<WRAP center round important 50%>
 **Important** - Il existe une autre commande similaire à COPY : ADD. ADD est une commande qui n'est plus recommendé sauf dans le cas de cas spécifiques. Notez que dans le cas de l'utilisation de la commande ADD, si le fichier source est une archive de type TAR, son contenu sera désarchivé et copier vers la destination tandis que si le fichier source est référencé par un URL, le contenu sera téléchargé puis déposé dans la destination. **Important** - Il existe une autre commande similaire à COPY : ADD. ADD est une commande qui n'est plus recommendé sauf dans le cas de cas spécifiques. Notez que dans le cas de l'utilisation de la commande ADD, si le fichier source est une archive de type TAR, son contenu sera désarchivé et copier vers la destination tandis que si le fichier source est référencé par un URL, le contenu sera téléchargé puis déposé dans la destination.
 </WRAP> </WRAP>
Ligne 702: Ligne 705:
 Ce fichier finit par "$@" qui indique que si aucune condition n'ait été remplie, la commande est exécutée avec la valeur passée en argument. Ce fichier finit par "$@" qui indique que si aucune condition n'ait été remplie, la commande est exécutée avec la valeur passée en argument.
  
-<WRAP center round important>+<WRAP center round important 50%>
 **Important** - Notez que la compilation d'une image se fait à l'intérieur d'un **contexte**. Le **contexte** est le répertoire de build. Dernièrement, notez qu'il peut y avoir plusieurs ENTRYPOINT dans le fichier Dockerfile mais uniquement le dernier est pris en compte. **Important** - Notez que la compilation d'une image se fait à l'intérieur d'un **contexte**. Le **contexte** est le répertoire de build. Dernièrement, notez qu'il peut y avoir plusieurs ENTRYPOINT dans le fichier Dockerfile mais uniquement le dernier est pris en compte.
 </WRAP> </WRAP>
Ligne 739: Ligne 742:
  
 <code> <code>
-root@debian9:~/mongodb# docker build .+root@debian11:~/mongodb# docker build . 
 +[+] Building 56.9s (15/15) FINISHED                                                                                                                                 docker:default 
 + => [internal] load .dockerignore                                                                                                                                             0.0s 
 + => => transferring context: 2B                                                                                                                                               0.0s 
 + => [internal] load build definition from Dockerfile                                                                                                                          0.1s 
 + => => transferring dockerfile: 3.55kB                                                                                                                                        0.0s 
 + => [internal] load metadata for docker.io/library/ubuntu:bionic                                                                                                              0.3s 
 + => [internal] load build context                                                                                                                                             0.0s 
 + => => transferring context: 42B                                                                                                                                              0.0s 
 + => [ 1/10] FROM docker.io/library/ubuntu:bionic@sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98                                                      0.0s 
 + => CACHED [ 2/10] RUN groupadd -r mongodb && useradd -r -g mongodb mongodb                                                                                                   0.0s 
 + => CACHED [ 3/10] RUN set -eux;  apt-get update;  apt-get install -y --no-install-recommends   ca-certificates   jq   numactl  ;  if ! command -v ps > /dev/null; then   ap  0.0s 
 + => [ 4/10] RUN set -ex;   apt-get update;  apt-get install -y --no-install-recommends   wget  ;  if ! command -v gpg > /dev/null; then   apt-get install -y --no-install-r  20.6s 
 + => [ 5/10] RUN mkdir /docker-entrypoint-initdb.d                                                                                                                             0.5s 
 + => [ 6/10] RUN set -ex;  export GNUPGHOME="$(mktemp -d)";  for key in E162F504A20CDF15827F718D4B7C549A058F8B6B; do   gpg --batch --keyserver pgp.mit.edu --recv-keys "$key  10.4s  
 + => [ 7/10] RUN echo "deb http://$MONGO_REPO/apt/ubuntu bionic/${MONGO_PACKAGE%-unstable}/$MONGO_MAJOR multiverse" | tee "/etc/apt/sources.list.d/${MONGO_PACKAGE%-unstable}  0.5s  
 + => [ 8/10] RUN set -x  && apt-get update  && apt-get install -y   mongodb-org-unstable=4.1.9   mongodb-org-unstable-server=4.1.9   mongodb-org-unstable-shell=4.1.9   mong  21.1s  
 + => [ 9/10] RUN mkdir -p /data/db /data/configdb  && chown -R mongodb:mongodb /data/db /data/configdb                                                                         0.5s  
 + => [10/10] COPY docker-entrypoint.sh /usr/local/bin/                                                                                                                         0.1s  
 + => exporting to image                                                                                                                                                        2.6s  
 + => => exporting layers                                                                                                                                                       2.6s  
 + => => writing image sha256:72fad0b7e0c2206f31a12b7d49f0812c0a594a51e17a8c0e36687f5f626bc735                                                                                  0.0s
 </code> </code>
  
Ligne 745: Ligne 769:
  
 <code> <code>
-root@debian9:~/mongodb# docker images +root@debian11:~/mongodb# docker images                                                                                                                                              
-REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE +REPOSITORY           TAG       IMAGE ID       CREATED              SIZE 
-<none>              <none>              3bf216d921d6        About a minute ago   96.2MB +<none>               <none>    72fad0b7e0c2   About a minute ago   352MB 
-i2tch/mongodb       latest              eca7835d4fe6        11 minutes ago       1.03GB +ittraining/mongodb   latest    fb3c6d5d186a   7 hours ago          1.11GB 
-nginx               latest              2bcb04bdb83f        13 days ago          109MB +ubuntu               latest    b6548eacb063   days ago           77.8MB 
-centos              latest              9f38484d220f        3 weeks ago          202MB +nginx                latest    a6bd71f48f68   weeks ago          187MB 
-ubuntu              bionic              94e814e2efa8        4 weeks ago          88.9MB +hello-world          latest    9c7a54a9a43c   months ago         13.3kB 
-ubuntu              latest              94e814e2efa8        4 weeks ago          88.9MB +centos               latest    5d0da3dc9764   2 years ago          231MB
-hello-world         latest              fce289e99eb9        3 months ago         1.84kB+
 </code> </code>
  
Ligne 759: Ligne 782:
  
 <code> <code>
-root@debian9:~/mongodb# docker tag 3bf2 i2tch/mongodb1 +root@debian11:~/mongodb# docker tag 72f i2tch/mongodb1 
-root@debian9:~/mongodb# docker images + 
-REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE +root@debian11:~/mongodb# docker images 
-i2tch/mongodb1      latest              3bf216d921d6        2 minutes ago       96.2MB +REPOSITORY           TAG       IMAGE ID       CREATED         SIZE 
-i2tch/mongodb       latest              eca7835d4fe6        11 minutes ago      1.03GB +i2tch/mongodb1       latest    72fad0b7e0c2   2 minutes ago   352MB 
-nginx               latest              2bcb04bdb83f        13 days ago         109MB +ittraining/mongodb   latest    fb3c6d5d186a   7 hours ago     1.11GB 
-centos              latest              9f38484d220f        3 weeks ago         202MB +ubuntu               latest    b6548eacb063   days ago      77.8MB 
-ubuntu              bionic              94e814e2efa8        4 weeks ago         88.9MB +nginx                latest    a6bd71f48f68   weeks ago     187MB 
-ubuntu              latest              94e814e2efa8        4 weeks ago         88.9MB +hello-world          latest    9c7a54a9a43c   months ago    13.3kB 
-hello-world         latest              fce289e99eb9        3 months ago        1.84kB+centos               latest    5d0da3dc9764   2 years ago     231MB
 </code> </code>
  
Ligne 774: Ligne 797:
  
 <code> <code>
-root@debian9:~/mongodb# docker run -d --name mongo1 i2tch/mongodb1 +root@debian11:~/mongodb# docker run -d --name mongo1 i2tch/mongodb1 
-bdb4bc0f81de8b5821f20d8609b9640abaaae7b4a7577c42b78d4bd34617d211 +3c578ea2a0428a07b60dac3b63d806351dffa2bb05224bcf7d12f1189766f38e 
-docker: Error response from daemon: oci runtime errorcontainer_linux.go:262starting container process caused "exec: \"docker-entrypoint.sh\": executable file not found in $PATH"+docker: Error response from daemon: failed to create task for containerfailed to create shim taskOCI runtime create failed: runc create failedunable to start container processexec: "docker-entrypoint.sh": executable file not found in $PATH: unknown. 
-root@debian9:~/mongodb# ls -l+ 
 +root@debian11:~/mongodb# ls -l
 total 16 total 16
--rw-r--r-- 1 root root 10971 avril  9 13:56 docker-entrypoint.sh +-rw-r--r-- 1 root root 10971 Dec 10 16:57 docker-entrypoint.sh 
--rw-r--r-- 1 root root  3542 avril  9 13:55 Dockerfile+-rw-r--r-- 1 root root  3514 Dec 10 17:09 Dockerfile
 </code> </code>
  
-<WRAP center round important> +<WRAP center round important 50%
-**Important** - Notez que le fichier docker-entrypoint.sh n'était pas exécutable !+**Important** - Notez que le fichier docker-entrypoint.sh n'est pas exécutable !
 </WRAP> </WRAP>
  
Ligne 790: Ligne 814:
  
 <code> <code>
-root@debian9:~/mongodb# docker rm mongo1+root@debian11:~/mongodb# docker rm mongo1
 mongo1 mongo1
-root@debian9:~/mongodb# chmod +x docker-entrypoint.sh + 
-root@debian9:~/mongodb# docker build . +root@debian11:~/mongodb# chmod +x docker-entrypoint.sh 
-Sending build context to Docker daemon   16.9kB + 
-Step 1/22 : FROM ubuntu:bionic +root@debian11:~/mongodb# docker build . 
- ---94e814e2efa8 +[+] Building 0.8s (15/15) FINISHED                                                                                                                                  docker:default 
-Step 2/22 : RUN groupadd -r mongodb && useradd -r -g mongodb mongodb + => [internal] load build definition from Dockerfile                                                                                                                          0.1s 
- ---Using cache + => => transferring dockerfile: 3.55kB                                                                                                                                        0.0s 
- ---> f40ac453fa97 + => [internal] load .dockerignore                                                                                                                                             0.1s 
-Step 3/22 : RUN set -eux;  apt-get update;  apt-get install -y --no-install-recommends  ca-certificates  jq  numactl ;  if ! command -v ps > /dev/null; then  apt-get install -y --no-install-recommends procps fi; rm -rf /var/lib/apt/lists/* + => => transferring context: 2B                                                                                                                                               0.0s 
- ---> Using cache + => [internal] load metadata for docker.io/library/ubuntu:bionic                                                                                                              0.3s 
- ---> adc57da1b19f + => [ 1/10] FROM docker.io/library/ubuntu:bionic@sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98                                                      0.0s 
-Step 4/22 : ENV GOSU_VERSION 1.11 + =[internal] load build context                                                                                                                                             0.0s 
- ---> Using cache + => => transferring context: 11.02kB                                                                                                                                          0.0s 
- ---> 038e7de870b7 + => CACHED [ 2/10] RUN groupadd -r mongodb && useradd -r -g mongodb mongodb                                                                                                   0.0s 
-Step 5/22 ENV JSYAML_VERSION 3.13.0 + =CACHED [ 3/10] RUN set -eux;  apt-get update;  apt-get install -y --no-install-recommends   ca-certificates   jq   numactl   if ! command -v ps > /dev/null; then   ap  0.0s 
- ---> Using cache + => CACHED [ 4/10] RUN set -ex;   apt-get update;  apt-get install -y --no-install-recommends   wget   if ! command -v gpg > /dev/null; then   apt-get install ---no-ins  0.0s 
- ---> 3bf216d921d6 + => CACHED [ 5/10] RUN mkdir /docker-entrypoint-initdb.d                                                                                                                      0.0s 
-... + => CACHED [ 6/10] RUN set -ex;  export GNUPGHOME="$(mktemp -d)";  for key in E162F504A20CDF15827F718D4B7C549A058F8B6B; do   gpg --batch --keyserver pgp.mit.edu --recv-keys  0.0s 
-Removing intermediate container a98ae692fe1f + => CACHED [ 7/10] RUN echo "deb http://$MONGO_REPO/apt/ubuntu bionic/${MONGO_PACKAGE%-unstable}/$MONGO_MAJOR multiverse" | tee "/etc/apt/sources.list.d/${MONGO_PACKAGE%-un  0.0s 
- ---> 04c2e98927c3 + => CACHED [ 8/10] RUN set -x  && apt-get update  && apt-get install -y   mongodb-org-unstable=4.1.9   mongodb-org-unstable-server=4.1.9   mongodb-org-unstable-shell=4.1.9   0.0s 
-Step 17/22 : RUN mkdir -p /data/db /data/configdb  && chown -R mongodb:mongodb /data/db /data/configdb + => CACHED [ 9/10] RUN mkdir -p /data/db /data/configdb  && chown -R mongodb:mongodb /data/db /data/configdb                                                                  0.0s 
- ---Running in d0f5bee34571 + =[10/10] COPY docker-entrypoint.sh /usr/local/bin/                                                                                                                         0.2s 
-Removing intermediate container d0f5bee34571 + =exporting to image                                                                                                                                                        0.1s 
- ---> d5b95e9e63e1 + ==exporting layers                                                                                                                                                       0.1s 
-Step 18/22 : VOLUME /data/db /data/configdb + ==writing image sha256:56e5b1fb4284e2474392238ee5f91a5d27d9a4a43fa15f655136ae0283d269c2                                                                                  0.0s
- ---> Running in c7626528a9b9 +
-Removing intermediate container c7626528a9b9 +
- ---> 4250613adf6a +
-Step 19/22 : COPY docker-entrypoint.sh /usr/local/bin/ +
- ---eedfd53da0f8 +
-Step 20/22 : ENTRYPOINT ["docker-entrypoint.sh"] +
- ---Running in eff53d0213d1 +
-Removing intermediate container eff53d0213d1 +
- ---716abf2faa87 +
-Step 21/22 : EXPOSE 27017 +
- ---Running in 5139fcf19d7f +
-Removing intermediate container 5139fcf19d7f +
- ---fc5896e08fd6 +
-Step 22/22 CMD ["mongod"+
- ---> Running in 458d6f15cdf2 +
-Removing intermediate container 458d6f15cdf2 +
- ---> 12e00099ca8d +
-Successfully built 12e00099ca8d +
-root@debian9:~/mongodb# +
 </code> </code>
  
-<WRAP center round important> +<WRAP center round important 50%
-**Important** - Notez ici les lignes **Using cache**. Il est cependant possible de ne pas utiliser le cache en stipulant **--no-cache**. Notez aussi l'utilisation de conteneurs temporaires par étape nouvelle avec un commit vers une image et une suppression dudit conteneur. Dernièrement, notez que la compilation d'une image se fait à l'intérieur d'un **contexte**. Le **contexte** est le répertoire de build. **Attention** : tous les fichiers dans le contexte sont inclus dans l'image finale, même ceux qui sont inutiles.+**Important** - Notez ici les lignes **CACHED**. Il est cependant possible de ne pas utiliser le cache en stipulant **--no-cache**. Notez aussi l'utilisation de conteneurs temporaires par étape nouvelle avec un commit vers une image et une suppression dudit conteneur. Dernièrement, notez que la compilation d'une image se fait à l'intérieur d'un **contexte**. Le **contexte** est le répertoire de build. **Attention** : tous les fichiers dans le contexte sont inclus dans l'image finale, même ceux qui sont inutiles.
 </WRAP> </WRAP>
  
Ligne 845: Ligne 850:
  
 <code> <code>
-root@debian9:~/mongodb# docker images +root@debian11:~/mongodb# docker images 
-REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE +REPOSITORY           TAG       IMAGE ID       CREATED              SIZE 
-<none>              <none>              12e00099ca8d        42 seconds ago      377MB +<none>               <none>    56e5b1fb4284   About a minute ago   352MB 
-i2tch/mongodb1      latest              3bf216d921d6        10 minutes ago      96.2MB +i2tch/mongodb1       latest    72fad0b7e0c2   minutes ago        352MB 
-i2tch/mongodb       latest              eca7835d4fe6        19 minutes ago      1.03GB +ittraining/mongodb   latest    fb3c6d5d186a   7 hours ago          1.11GB 
-nginx               latest              2bcb04bdb83f        13 days ago         109MB +ubuntu               latest    b6548eacb063   days ago           77.8MB 
-centos              latest              9f38484d220f        3 weeks ago         202MB +nginx                latest    a6bd71f48f68   weeks ago          187MB 
-ubuntu              bionic              94e814e2efa8        4 weeks ago         88.9MB +hello-world          latest    9c7a54a9a43c   months ago         13.3kB 
-ubuntu              latest              94e814e2efa8        4 weeks ago         88.9MB +centos               latest    5d0da3dc9764   2 years ago          231MB 
-hello-world         latest              fce289e99eb9        3 months ago        1.84kB + 
-root@debian9:~/mongodb# docker tag 12e0 i2tch/mongodb2 +root@debian11:~/mongodb# docker tag 56e i2tch/mongodb2 
-root@debian9:~/mongodb# docker images + 
-REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE +root@debian11:~/mongodb# docker images 
-i2tch/mongodb2      latest              12e00099ca8d        About a minute ago   377MB +REPOSITORY           TAG       IMAGE ID       CREATED              SIZE 
-i2tch/mongodb1      latest              3bf216d921d6        11 minutes ago       96.2MB +i2tch/mongodb2       latest    56e5b1fb4284   About a minute ago   352MB 
-i2tch/mongodb       latest              eca7835d4fe6        20 minutes ago       1.03GB +i2tch/mongodb1       latest    72fad0b7e0c2   minutes ago        352MB 
-nginx               latest              2bcb04bdb83f        13 days ago          109MB +ittraining/mongodb   latest    fb3c6d5d186a   7 hours ago          1.11GB 
-centos              latest              9f38484d220f        3 weeks ago          202MB +ubuntu               latest    b6548eacb063   days ago           77.8MB 
-ubuntu              bionic              94e814e2efa8        4 weeks ago          88.9MB +nginx                latest    a6bd71f48f68   weeks ago          187MB 
-ubuntu              latest              94e814e2efa8        4 weeks ago          88.9MB +hello-world          latest    9c7a54a9a43c   months ago         13.3kB 
-hello-world         latest              fce289e99eb9        3 months ago         1.84kB+centos               latest    5d0da3dc9764   2 years ago          231MB
 </code> </code>
  
Ligne 871: Ligne 876:
  
 <code> <code>
-root@debian9:~/mongodb# docker run -d --name mongo2 i2tch/mongodb2 +root@debian11:~/mongodb# docker run -d --name mongo2 i2tch/mongodb2 
-e91a055283f4d67cbd91d11bb3faa6f67925893cb18f9cc25023e72e0f7ed85a+880733c6bdc33a9a8fa6ae171e977cf745ea9a1b9cfc914992a2d0d3f8cd9d39
 </code> </code>
  
Ligne 878: Ligne 883:
  
 <code> <code>
-root@debian9:~/mongodb# docker ps +root@debian11:~/mongodb# docker ps 
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES +CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS          PORTS                               NAMES 
-e91a055283f4        i2tch/mongodb2      "docker-entrypoint.s…"   28 seconds ago      Up 27 seconds       27017/tcp            mongo2 +880733c6bdc3   i2tch/mongodb2       "docker-entrypoint.s…"   15 seconds ago   Up 13 seconds   27017/tcp                           mongo2 
-d2ddb4f8ca8a        i2tch/mongodb       "bash"                   21 minutes ago      Up 19 minutes                            mongo +885f75b6aa57   ittraining/mongodb   "bash"                   7 hours ago      Up 7 hours                                          mongo 
-c080793965de        nginx               "nginx -g 'daemon of…"   About an hour ago   Up About an hour    0.0.0.0:81->80/tcp   suspicious_sanderson+04d910a3c93d   nginx                "/docker-entrypoint.…"   7 hours ago      Up 7 hours      0.0.0.0:81->80/tcp, :::81->80/tcp   quirky_moore
 </code> </code>
  
Ligne 888: Ligne 893:
  
 <code> <code>
-root@debian9:~/mongodb# docker inspect mongo2 | grep IP+root@debian11:~/mongodb# docker inspect mongo2 | grep IP
             "LinkLocalIPv6Address": "",             "LinkLocalIPv6Address": "",
             "LinkLocalIPv6PrefixLen": 0,             "LinkLocalIPv6PrefixLen": 0,
Ligne 904: Ligne 909:
                     "GlobalIPv6Address": "",                     "GlobalIPv6Address": "",
                     "GlobalIPv6PrefixLen": 0,                     "GlobalIPv6PrefixLen": 0,
-root@debian9:~/mongodb# + 
-root@debian9:~/mongodb# mongo --host 172.17.0.4 +root@debian11:~/mongodb# mongo --host 172.17.0.4 
-MongoDB shell version v4.0.8+MongoDB shell version v4.0.28
 connecting to: mongodb://172.17.0.4:27017/?gssapiServiceName=mongodb connecting to: mongodb://172.17.0.4:27017/?gssapiServiceName=mongodb
-Implicit session: session { "id" : UUID("3feff8c0-5460-473b-b036-4aee64a314f7") }+Implicit session: session { "id" : UUID("057eacfe-5b02-4653-9b20-a2a2044cbe6a") }
 MongoDB server version: 4.1.9 MongoDB server version: 4.1.9
 WARNING: shell and server versions do not match WARNING: shell and server versions do not match
 Server has startup warnings:  Server has startup warnings: 
-2019-04-09T17:50:12.635+0000 I STORAGE  [initandlisten]  +2023-12-10T16:16:13.395+0000 I STORAGE  [initandlisten]  
-2019-04-09T17:50:12.636+0000 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine +2023-12-10T16:16:13.395+0000 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine 
-2019-04-09T17:50:12.636+0000 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem +2023-12-10T16:16:13.395+0000 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem 
-2019-04-09T17:50:13.458+0000 I CONTROL  [initandlisten]  +2023-12-10T16:16:14.255+0000 I CONTROL  [initandlisten]  
-2019-04-09T17:50:13.459+0000 I CONTROL  [initandlisten] ** NOTE: This is a development version (4.1.9) of MongoDB. +2023-12-10T16:16:14.255+0000 I CONTROL  [initandlisten] ** NOTE: This is a development version (4.1.9) of MongoDB. 
-2019-04-09T17:50:13.459+0000 I CONTROL  [initandlisten] **       Not recommended for production. +2023-12-10T16:16:14.255+0000 I CONTROL  [initandlisten] **       Not recommended for production. 
-2019-04-09T17:50:13.459+0000 I CONTROL  [initandlisten]  +2023-12-10T16:16:14.255+0000 I CONTROL  [initandlisten]  
-2019-04-09T17:50:13.459+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database. +2023-12-10T16:16:14.255+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database. 
-2019-04-09T17:50:13.459+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted. +2023-12-10T16:16:14.255+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted. 
-2019-04-09T17:50:13.460+0000 I CONTROL  [initandlisten] +2023-12-10T16:16:14.255+0000 I CONTROL  [initandlisten]  
 +2023-12-10T16:16:14.256+0000 I CONTROL  [initandlisten]  
 +2023-12-10T16:16:14.256+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'
 +2023-12-10T16:16:14.256+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never' 
 +2023-12-10T16:16:14.256+0000 I CONTROL  [initandlisten] 
 --- ---
 Enable MongoDB's free cloud-based monitoring service, which will then receive and display Enable MongoDB's free cloud-based monitoring service, which will then receive and display
Ligne 936: Ligne 945:
 > exit > exit
 bye bye
-root@debian9:~/mongodb# +root@debian11:~/mongodb#
-</code> +
- +
-Notez que lors de la compilation de l'image finale, une image a été créée lors de chaque instruction dans le fichier Dockerfile sauf en cas d'utilisation d'une image en cache : +
- +
-<code> +
-root@debian9:~/mongodb# docker images -a +
-REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE +
-i2tch/mongodb2      latest              12e00099ca8d        5 minutes ago       377MB +
-<none>              <none>              d5b95e9e63e1        5 minutes ago       377MB +
-<none>              <none>              4250613adf6a        5 minutes ago       377MB +
-<none>              <none>              eedfd53da0f8        5 minutes ago       377MB +
-<none>              <none>              04c2e98927c3        5 minutes ago       377MB +
-<none>              <none>              c6eae79e3d22        7 minutes ago       110MB +
-<none>              <none>              c205179d538c        7 minutes ago       110MB +
-<none>              <none>              b70835bebe35        7 minutes ago       110MB +
-<none>              <none>              5b2827910929        7 minutes ago       110MB +
-<none>              <none>              5b1f6df94d98        7 minutes ago       110MB +
-<none>              <none>              a950a5d04b68        7 minutes ago       110MB +
-<none>              <none>              c183cfecc5f0        7 minutes ago       110MB +
-<none>              <none>              aadb5806f1b8        8 minutes ago       110MB +
-<none>              <none>              8d538d38407e        8 minutes ago       110MB +
-<none>              <none>              32d59bf23987        8 minutes ago       110MB +
-i2tch/mongodb1      latest              3bf216d921d6        15 minutes ago      96.2MB +
-<none>              <none>              038e7de870b7        15 minutes ago      96.2MB +
-<none>              <none>              adc57da1b19f        15 minutes ago      96.2MB +
-<none>              <none>              f40ac453fa97        15 minutes ago      89.3MB +
-i2tch/mongodb       latest              eca7835d4fe6        24 minutes ago      1.03GB +
-<none>              <none>              620057baa411        27 minutes ago      816MB +
-<none>              <none>              67afc80e1424        33 minutes ago      816MB +
-nginx               latest              2bcb04bdb83f        13 days ago         109MB +
-centos              latest              9f38484d220f        3 weeks ago         202MB +
-ubuntu              bionic              94e814e2efa8        4 weeks ago         88.9MB +
-ubuntu              latest              94e814e2efa8        4 weeks ago         88.9MB +
-hello-world         latest              fce289e99eb9        3 months ago        1.84kB+
 </code> </code>
  
Ligne 980: Ligne 955:
  
 <code> <code>
-root@debian9:~/mongodb# mkdir ~/myDocker +root@debian11:~/mongodb# mkdir ~/myDocker 
-root@debian9:~/mongodb# cd ~/myDocker +root@debian11:~/mongodb# cd ~/myDocker 
-root@debian9:~/myDocker# +root@debian11:~/myDocker# 
 </code> </code>
  
Ligne 988: Ligne 963:
  
 <code> <code>
-root@debian9:~/myDocker# vi myEntrypoint.sh +root@debian11:~/myDocker# vi myEntrypoint.sh 
-root@debian9:~/myDocker# cat myEntrypoint.sh + 
 +root@debian11:~/myDocker# cat myEntrypoint.sh
 #!/bin/bash #!/bin/bash
 if [ -z "$myVariable" ]; then if [ -z "$myVariable" ]; then
- echo "La variable myVariable doit être renseignée+        echo "The variable myVariable must have a value
- return 1+        return 1
 fi fi
  
 while true; while true;
 do do
- echo $1 \($(date +%H:%M:%S)\); +        echo $1 \($(date +%H:%M:%S)\); 
- sleep "$myVariable";+        sleep "$myVariable";
 done done
 </code> </code>
Ligne 1006: Ligne 982:
  
 <code> <code>
-root@debian9:~/myDocker# myVariable=3 . ./myEntrypoint.sh salut +root@debian11:~/myDocker# myVariable=3 . ./myEntrypoint.sh Hello! 
-salut (20:04:39+Hello! (18:01:54
-salut (20:04:42+Hello! (18:01:57
-salut (20:04:45+Hello! (18:02:00
-salut (20:04:48+Hello! (18:02:03
-salut (20:04:51)+Hello! (18:02:06)
 ^C ^C
-root@debian9:~/myDocker# +root@debian11:~/myDocker# 
 </code> </code>
  
Ligne 1019: Ligne 995:
  
 <code> <code>
-root@debian9:~/myDocker# chmod u+x myEntrypoint.sh +root@debian11:~/myDocker# chmod u+x myEntrypoint.sh 
 </code> </code>
  
Ligne 1025: Ligne 1001:
  
 <code> <code>
-root@debian9:~/myDocker# vi Dockerfile +root@debian11:~/myDocker# vi Dockerfile 
-root@debian9:~/myDocker# cat Dockerfile+ 
 +root@debian11:~/myDocker# cat Dockerfile
 FROM centos:latest FROM centos:latest
-MAINTAINER i2tch "infos@i2tch.eu"+MAINTAINER Team IT Training "infos@ittraining.team"
 COPY myEntrypoint.sh /entrypoint.sh COPY myEntrypoint.sh /entrypoint.sh
 ENV myVariable 3 ENV myVariable 3
Ligne 1038: Ligne 1015:
  
 <code> <code>
-root@debian9:~/myDocker# docker build -t i2tch/mydocker . +root@debian11:~/myDocker# docker build -t i2tch/mydocker . 
-Sending build context to Docker daemon  3.072kB +[+] Building 0.8s (7/7) FINISHED                                                                                                                                    docker:default 
-Step 1/FROM centos:latest + =[internal] load .dockerignore                                                                                                                                             0.2s 
- ---9f38484d220f + => => transferring context2B                                                                                                                                               0.0s 
-Step 2/6 MAINTAINER i2tch "infos@i2tch.eu" + =[internal] load build definition from Dockerfile                                                                                                                          0.1s 
- ---Running in 02c700ed04da + ==> transferring dockerfile211B                                                                                                                                          0.0s 
-Removing intermediate container 02c700ed04da + =[internal] load metadata for docker.io/library/centos:latest                                                                                                              0.0s 
- ---4274107d52e2 + =[internal] load build context                                                                                                                                             0.1s 
-Step 3/6 COPY myEntrypoint.sh /entrypoint.sh + ==> transferring context: 224B                                                                                                                                             0.0s 
- ---7a3923372768 + => [1/2] FROM docker.io/library/centos:latest                                                                                                                                0.1s 
-Step 4/ENV myVariable 3 + => [2/2] COPY myEntrypoint.sh /entrypoint.sh                                                                                                                                 0.2s 
- ---Running in 3288bf6291ad + =exporting to image                                                                                                                                                        0.1s 
-Removing intermediate container 3288bf6291ad + => =exporting layers                                                                                                                                                       0.1s 
- ---3edb630c1511 + => => writing image sha256:c5a41438d278439fac2cd65d53d87cabc5c771dd9b99be1913ce049024eba961                                                                                  0.0s 
-Step 5/ENTRYPOINT ["/entrypoint.sh"] + ==naming to docker.io/i2tch/mydocker                                                                                                                                     0.0s
- ---Running in 8dcba2c41520 +
-Removing intermediate container 8dcba2c41520 +
- ---11962052539c +
-Step 6/6 CMD ["mycommand"] +
- ---Running in f891fbcfaad0 +
-Removing intermediate container f891fbcfaad0 +
- ---7925ba23abb2 +
-Successfully built 7925ba23abb2 +
-Successfully tagged i2tch/mydocker:latest+
 </code> </code>
  
Ligne 1067: Ligne 1035:
  
 <code> <code>
-root@debian9:~/myDocker# docker run -it --name myDocker i2tch/mydocker +root@debian11:~/myDocker# docker run -it --name myDocker i2tch/mydocker 
-mycommand (18:07:12+mycommand (17:05:57
-mycommand (18:07:15+mycommand (17:06:00
-mycommand (18:07:18) +mycommand (17:06:03
-mycommand (18:07:21+^Cmycommand (17:06:06
-^Cmycommand (18:07:22+mycommand (17:06:09
-mycommand (18:07:25+mycommand (17:06:12)
-mycommand (18:07:28)+
 ^P^Q ^P^Q
-root@debian9:~/myDocker#+root@debian11:~/myDocker#
 </code> </code>
 +
 +<WRAP center round important 50%>
 +**Important** - Notez que **^C** n'a aucun effet. Pour se détacher du conteneur il convient d'utiliser **^P^Q**.
 +</WRAP>
  
 Constatez que le conteneur est toujours en cours de fonctionnement : Constatez que le conteneur est toujours en cours de fonctionnement :
  
 <code> <code>
-root@debian9:~/myDocker# docker ps +root@debian11:~/myDocker# docker ps 
-CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                NAMES +CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS          PORTS                               NAMES 
-140ecfdd80b7        i2tch/mydocker      "/entrypoint.sh myco…"   About a minute ago   Up About a minute                        myDocker +97fe360bb1d6   i2tch/mydocker       "/entrypoint.sh myco…"   4 minutes ago    Up 4 minutes                                        myDocker 
-b3380889eb75        i2tch/mongodb2      "docker-entrypoint.s…"   minutes ago        Up minutes        27017/tcp            mongo2 +880733c6bdc3   i2tch/mongodb2       "docker-entrypoint.s…"   54 minutes ago   Up 54 minutes   27017/tcp                           mongo2 
-d2ddb4f8ca8a        i2tch/mongodb       "bash"                   38 minutes ago       Up 36 minutes                            mongo +885f75b6aa57   ittraining/mongodb   "bash"                   8 hours ago      Up 8 hours                                          mongo 
-c080793965de        nginx               "nginx -g 'daemon of…"   About an hour ago    Up About an hour    0.0.0.0:81->80/tcp   suspicious_sanderson +04d910a3c93d   nginx                "/docker-entrypoint.…"   8 hours ago      Up 8 hours      0.0.0.0:81->80/tcp:::81->80/tcp   quirky_moore 
-root@debian9:~/myDocker# + 
-root@debian9:~/myDocker# docker logs myDocker | tail +root@debian11:~/myDocker# docker logs myDocker | tail 
-mycommand (18:08:25+mycommand (17:10:30
-mycommand (18:08:28+mycommand (17:10:33
-mycommand (18:08:31+mycommand (17:10:36
-mycommand (18:08:34+mycommand (17:10:39
-mycommand (18:08:37+mycommand (17:10:42
-mycommand (18:08:40+mycommand (17:10:45
-mycommand (18:08:43+mycommand (17:10:48
-mycommand (18:08:46+mycommand (17:10:51
-mycommand (18:08:49+mycommand (17:10:54
-mycommand (18:08:52)+mycommand (17:10:57)
 </code> </code>
  
Ligne 1105: Ligne 1076:
  
 <code> <code>
-root@debian9:~/myDocker# docker stop -t 1 myDocker+root@debian11:~/myDocker# docker stop -t 1 myDocker
 myDocker myDocker
-root@debian9:~/myDocker# docker ps + 
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES +root@debian11:~/myDocker# docker ps 
-b3380889eb75        i2tch/mongodb2      "docker-entrypoint.s…"   minutes ago       Up minutes        27017/tcp            mongo2 +CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS          PORTS                               NAMES 
-d2ddb4f8ca8a        i2tch/mongodb       "bash"                   40 minutes ago      Up 38 minutes                            mongo +880733c6bdc3   i2tch/mongodb2       "docker-entrypoint.s…"   55 minutes ago   Up 55 minutes   27017/tcp                           mongo2 
-c080793965de        nginx               "nginx -g 'daemon of…"   About an hour ago   Up About an hour    0.0.0.0:81->80/tcp   suspicious_sanderson+885f75b6aa57   ittraining/mongodb   "bash"                   8 hours ago      Up 8 hours                                          mongo 
 +04d910a3c93d   nginx                "/docker-entrypoint.…"   8 hours ago      Up 8 hours      0.0.0.0:81->80/tcp, :::81->80/tcp   quirky_moore
 </code> </code>
  
Ligne 1117: Ligne 1089:
  
 <code> <code>
-root@debian9:~/myDocker# docker start myDocker+root@debian11:~/myDocker# docker start myDocker
 myDocker myDocker
-root@debian9:~/myDocker# docker ps + 
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES +root@debian11:~/myDocker# docker ps 
-140ecfdd80b7        i2tch/mydocker      "/entrypoint.sh myco…"   minutes ago       Up 10 seconds                            myDocker +CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS          PORTS                               NAMES 
-b3380889eb75        i2tch/mongodb2      "docker-entrypoint.s…"   10 minutes ago      Up 10 minutes       27017/tcp            mongo2 +97fe360bb1d6   i2tch/mydocker       "/entrypoint.sh myco…"   minutes ago    Up seconds                                        myDocker 
-d2ddb4f8ca8a        i2tch/mongodb       "bash"                   40 minutes ago      Up 38 minutes                            mongo +880733c6bdc3   i2tch/mongodb2       "docker-entrypoint.s…"   56 minutes ago   Up 56 minutes   27017/tcp                           mongo2 
-c080793965de        nginx               "nginx -g 'daemon of…"   About an hour ago   Up About an hour    0.0.0.0:81->80/tcp   suspicious_sanderson+885f75b6aa57   ittraining/mongodb   "bash"                   8 hours ago      Up 8 hours                                          mongo 
 +04d910a3c93d   nginx                "/docker-entrypoint.…"   8 hours ago      Up 8 hours      0.0.0.0:81->80/tcp, :::81->80/tcp   quirky_moore
 </code> </code>
  
Ligne 1130: Ligne 1103:
  
 <code> <code>
-root@debian9:~/myDocker# docker pause myDocker+root@debian11:~/myDocker# docker pause myDocker
 myDocker myDocker
-root@debian9:~/myDocker# docker ps + 
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                NAMES +root@debian11:~/myDocker# docker ps 
-140ecfdd80b7        i2tch/mydocker      "/entrypoint.sh myco…"   minutes ago       Up 51 seconds (Paused)                        myDocker +CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS                   PORTS                               NAMES 
-b3380889eb75        i2tch/mongodb2      "docker-entrypoint.s…"   10 minutes ago      Up 10 minutes            27017/tcp            mongo2 +97fe360bb1d6   i2tch/mydocker       "/entrypoint.sh myco…"   minutes ago    Up 55 seconds (Paused)                                       myDocker 
-d2ddb4f8ca8a        i2tch/mongodb       "bash"                   41 minutes ago      Up 39 minutes                                 mongo +880733c6bdc3   i2tch/mongodb2       "docker-entrypoint.s…"   56 minutes ago   Up 56 minutes            27017/tcp                           mongo2 
-c080793965de        nginx               "nginx -g 'daemon of…"   About an hour ago   Up About an hour         0.0.0.0:81->80/tcp   suspicious_sanderson+885f75b6aa57   ittraining/mongodb   "bash"                   8 hours ago      Up 8 hours                                                   mongo 
 +04d910a3c93d   nginx                "/docker-entrypoint.…"   8 hours ago      Up 8 hours               0.0.0.0:81->80/tcp, :::81->80/tcp   quirky_moore
 </code> </code>
  
Ligne 1143: Ligne 1117:
  
 <code> <code>
-root@debian9:~/myDocker# docker unpause myDocker+root@debian11:~/myDocker# docker unpause myDocker
 myDocker myDocker
-root@debian9:~/myDocker# docker ps + 
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES +root@debian11:~/myDocker# docker ps 
-140ecfdd80b7        i2tch/mydocker      "/entrypoint.sh myco…"   minutes ago       Up About a minute                        myDocker +CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS              PORTS                               NAMES 
-b3380889eb75        i2tch/mongodb2      "docker-entrypoint.s…"   11 minutes ago      Up 11 minutes       27017/tcp            mongo2 +97fe360bb1d6   i2tch/mydocker       "/entrypoint.sh myco…"   minutes ago    Up About a minute                                       myDocker 
-d2ddb4f8ca8a        i2tch/mongodb       "bash"                   42 minutes ago      Up 40 minutes                            mongo +880733c6bdc3   i2tch/mongodb2       "docker-entrypoint.s…"   57 minutes ago   Up 57 minutes       27017/tcp                           mongo2 
-c080793965de        nginx               "nginx -g 'daemon of…"   About an hour ago   Up About an hour    0.0.0.0:81->80/tcp   suspicious_sanderson+885f75b6aa57   ittraining/mongodb   "bash"                   8 hours ago      Up 8 hours                                              mongo 
 +04d910a3c93d   nginx                "/docker-entrypoint.…"   8 hours ago      Up 8 hours          0.0.0.0:81->80/tcp, :::81->80/tcp   quirky_moore
 </code> </code>
  
Ligne 1156: Ligne 1131:
  
 <code> <code>
-root@debian9:~/myDocker# docker rm -fv myDocker+root@debian11:~/myDocker# docker rm -fv myDocker
 myDocker myDocker
-root@debian9:~/myDocker# docker run -d --name myDocker i2tch/mydocker "Up and Running" + 
-0cf8c8c1bdf4cb05d9852900ecdf171ad9abad0fce29a9f040d5d8436285db65 +root@debian11:~/myDocker# docker run -d --name myDocker i2tch/mydocker "Up and Running" 
-root@debian9:~/myDocker# docker logs myDocker +fd5ac836f674fe0bf7b5056e851cd15e4762a5e41b05e00d384bede5234e1f5f 
-Up and Running (18:13:33+ 
-Up and Running (18:13:36+root@debian11:~/myDocker# docker logs myDocker 
-Up and Running (18:13:39+Up and Running (17:14:23) 
-Up and Running (18:13:42+Up and Running (17:14:26) 
-root@debian9:~/myDocker# +Up and Running (17:14:29
 +Up and Running (17:14:32
 +Up and Running (17:14:35
 +Up and Running (17:14:38
 +root@debian11:~/myDocker#
 </code> </code>
  
Ligne 1171: Ligne 1150:
  
 <code> <code>
-root@debian9:~/myDocker# docker rm -fv myDocker+root@debian11:~/myDocker# docker rm -fv myDocker
 myDocker myDocker
-root@debian9:~/myDocker# docker run -d --name myDocker --env myVariable=1 i2tch/mydocker + 
-fbbe3b48c63310e37a3bad5fc962361c39c045a107f47980614efd6b2e8d3981 +root@debian11:~/myDocker# docker run -d --name myDocker --env myVariable=1 i2tch/mydocker 
-root@debian9:~/myDocker# docker logs myDocker +a9e02a8bb39df9d5c84fc1d58643bc38c228b0562731792e2356a801b50a9a14 
-mycommand (18:14:47) + 
-mycommand (18:14:48) +root@debian11:~/myDocker# docker logs myDocker 
-mycommand (18:14:49) +mycommand (17:15:35
-mycommand (18:14:50) +mycommand (17:15:36
-mycommand (18:14:51+mycommand (17:15:37
-mycommand (18:14:52+mycommand (17:15:38
-mycommand (18:14:53+mycommand (17:15:39
-mycommand (18:14:54+mycommand (17:15:40
-mycommand (18:14:55+mycommand (17:15:41
-mycommand (18:14:56+root@debian11:~/myDocker# 
-mycommand (18:14:57+
-root@debian9:~/myDocker# +
 </code> </code>
  
Ligne 1197: Ligne 1174:
  
 <code> <code>
-root@debian9:~/myDocker# cd .. +root@debian11:~/myDocker# cd .. 
-root@debian9:~# mkdir bestp + 
-root@debian9:~# cd bestp +root@debian11:~# mkdir bestp 
-root@debian9:~/bestp# vi Dockerfile + 
-root@debian9:~/bestp# cat Dockerfile+root@debian11:~# cd bestp 
 + 
 +root@debian11:~/bestp# vi Dockerfile 
 + 
 +root@debian11:~/bestp# cat Dockerfile
 FROM ubuntu:latest FROM ubuntu:latest
 RUN date +%N > /tmp/moment RUN date +%N > /tmp/moment
Ligne 1210: Ligne 1191:
 Le fichier Dokerfile contient une opération non idempotente. Le fichier Dokerfile contient une opération non idempotente.
  
-<WRAP center round important>+<WRAP center round important 50%>
 **Important** : Une opération idempotente est une opération qui aboutit systématiquement au même résultat quand elle est lancée dans le même contexte. **Important** : Une opération idempotente est une opération qui aboutit systématiquement au même résultat quand elle est lancée dans le même contexte.
 </WRAP> </WRAP>
Ligne 1217: Ligne 1198:
  
 <code> <code>
-root@debian9:~/bestp# docker build -t testcache . +root@debian11:~/bestp# docker build -t testcache . 
-Sending build context to Docker daemon  2.048kB +[+] Building 0.9s (6/6) FINISHED                                                                                                                                    docker:default 
-Step 1/: FROM ubuntu:latest + => [internal] load build definition from Dockerfile                                                                                                                          0.2s 
- ---94e814e2efa8 + => => transferring dockerfile: 123B                                                                                                                                          0.0s 
-Step 2/4 : RUN date +%N > /tmp/moment + => [internal] load .dockerignore                                                                                                                                             0.1s 
- ---Running in 6c8c677c1549 + => => transferring context: 2B                                                                                                                                               0.0s 
-Removing intermediate container 6c8c677c1549 + => [internal] load metadata for docker.io/library/ubuntu:latest                                                                                                              0.0s 
- ---66c3c88c57bb + => [1/2] FROM docker.io/library/ubuntu:latest                                                                                                                                0.1s 
-Step 3/4 : ENTRYPOINT ["more"+ =[2/2] RUN date +%N > /tmp/moment                                                                                                                                          0.4s 
- ---Running in e9658e591172 + =exporting to image                                                                                                                                                        0.1s 
-Removing intermediate container e9658e591172 + ==exporting layers                                                                                                                                                       0.1s 
- ---81cb68241ec9 + ==> writing image sha256:842ab4a40890a1b5fe7a3af5a41513c6edd5fd2da503b82c375f350671b62707                                                                                  0.0s 
-Step 4/4 CMD ["/tmp/moment"] + ==naming to docker.io/library/testcache                                                                                                                                  0.0s
- ---Running in 48974dc12faa +
-Removing intermediate container 48974dc12faa +
- ---c55a42a18572 +
-Successfully built c55a42a18572 +
-Successfully tagged testcache:latest +
-root@debian9:~/bestp#+
 </code> </code>
  
Ligne 1241: Ligne 1216:
  
 <code> <code>
-root@debian9:~/bestp# docker run --name test1 -it testcache +root@debian11:~/bestp# docker run --name test1 -it testcache 
-369009216+771723987
 </code> </code>
  
Ligne 1248: Ligne 1223:
  
 <code> <code>
-root@debian9:~/bestp# docker rm test1+root@debian11:~/bestp# docker rm test1
 test1 test1
-root@debian9:~/bestp# docker build -t testcache . + 
-Sending build context to Docker daemon  2.048kB +root@debian11:~/bestp# docker build -t testcache . 
-Step 1/: FROM ubuntu:latest +[+] Building 0.3s (6/6) FINISHED                                                                                                                                    docker:default 
- ---94e814e2efa8 + => [internal] load .dockerignore                                                                                                                                             0.1s 
-Step 2/4 : RUN date +%N > /tmp/moment + => => transferring context: 2B                                                                                                                                               0.0s 
- ---Using cache + => [internal] load build definition from Dockerfile                                                                                                                          0.1s 
- ---66c3c88c57bb + => => transferring dockerfile: 123B                                                                                                                                          0.0s 
-Step 3/4 : ENTRYPOINT ["more"+ => [internal] load metadata for docker.io/library/ubuntu:latest                                                                                                              0.0s 
- ---Using cache + => [1/2] FROM docker.io/library/ubuntu:latest                                                                                                                                0.0s 
- ---81cb68241ec9 + =CACHED [2/2] RUN date +%N > /tmp/moment                                                                                                                                   0.0s 
-Step 4/4 CMD ["/tmp/moment"] + =exporting to image                                                                                                                                                        0.0s 
- ---Using cache + ==exporting layers                                                                                                                                                       0.0s 
- ---c55a42a18572 + ==> writing image sha256:842ab4a40890a1b5fe7a3af5a41513c6edd5fd2da503b82c375f350671b62707                                                                                  0.0s 
-Successfully built c55a42a18572 + ==naming to docker.io/library/testcache                                                                                                                                  0.0s 
-Successfully tagged testcache:latest +
-root@debian9:~/bestp# +
 </code> </code>
  
Ligne 1271: Ligne 1244:
  
 <code> <code>
-root@debian9:~/bestp# docker run --name test1 -it testcache +root@debian11:~/bestp# docker run --name test1 -it testcache 
-369009216+771723987
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 50%>
 **Important** - Notez que les deux sorties des conteneurs sont identiques malgré le fait que la valeur de la commande date aurait du modifier le résultat obtenu lors de l'exécution du deuxième conteneur. La raison que ceci n'est pas le cas est l'utilisation dans la deuxième compilation du cache. Si cette commande avait été quelque chose de plus importante telle apt-get upgrade, le résultat pourrait être génant ! **Important** - Notez que les deux sorties des conteneurs sont identiques malgré le fait que la valeur de la commande date aurait du modifier le résultat obtenu lors de l'exécution du deuxième conteneur. La raison que ceci n'est pas le cas est l'utilisation dans la deuxième compilation du cache. Si cette commande avait été quelque chose de plus importante telle apt-get upgrade, le résultat pourrait être génant !
 </WRAP> </WRAP>
Ligne 1282: Ligne 1255:
  
 <code> <code>
-root@debian9:~/bestp# vi Dockerfile  +root@debian11:~/bestp# vi Dockerfile 
-root@debian9:~/bestp# cat Dockerfile + 
 +root@debian11:~/bestp# cat Dockerfile
 FROM ubuntu:latest FROM ubuntu:latest
 RUN date +%N > /tmp/moment \ RUN date +%N > /tmp/moment \
Ligne 1294: Ligne 1268:
  
 <code> <code>
-root@debian9:~/bestp# docker rm test1+root@debian11:~/bestp# docker rm test1
 test1 test1
-root@debian9:~/bestp# docker build -t testcache . + 
-Sending build context to Docker daemon  2.048kB +root@debian11:~/bestp# docker build -t testcache . 
-Step 1/: FROM ubuntu:latest +[+] Building 0.7s (6/6) FINISHED                                                                                                                                    docker:default 
- ---94e814e2efa8 + => [internal] load .dockerignore                                                                                                                                             0.1s 
-Step 2/4 : RUN date +%N > /tmp/moment     && echo "V1.1" > /tmp/version + => => transferring context: 2B                                                                                                                                               0.0s 
- ---Running in 3d2a5cee6ac8 + => [internal] load build definition from Dockerfile                                                                                                                          0.1s 
-Removing intermediate container 3d2a5cee6ac8 + => => transferring dockerfile: 159B                                                                                                                                          0.0s 
- ---75d0498a9676 + => [internal] load metadata for docker.io/library/ubuntu:latest                                                                                                              0.0s 
-Step 3/4 : ENTRYPOINT ["more"+ => CACHED [1/2] FROM docker.io/library/ubuntu:latest                                                                                                                         0.0s 
- ---Running in 88c0cec68659 + =[2/2] RUN date +%N > /tmp/moment     && echo "V1.1" > /tmp/version                                                                                                        0.4s 
-Removing intermediate container 88c0cec68659 + =exporting to image                                                                                                                                                        0.1s 
- ---2aee524c8da4 + ==exporting layers                                                                                                                                                       0.1s 
-Step 4/4 CMD ["/tmp/moment"] + ==> writing image sha256:5a36b1c7ec76e7bde962c41f5f5dcc11ae0ce3968e4953fbababcc8b7b282dab                                                                                  0.0s 
- ---Running in 82d2162bb701 + ==naming to docker.io/library/testcache                                                                                                                                  0.0s
-Removing intermediate container 82d2162bb701 +
- ---a54c4af89994 +
-Successfully built a54c4af89994 +
-Successfully tagged testcache:latest+
 </code> </code>
  
Ligne 1319: Ligne 1289:
  
 <code> <code>
-root@debian9:~/bestp# docker run --name test1 -it testcache +root@debian11:~/bestp# docker run --name test1 -it testcache 
-746997174+063819144
 </code> </code>
  
Ligne 1330: Ligne 1300:
  
 <code> <code>
-root@debian9:~/bestp# cd .. +root@debian11:~/bestp# cd .. 
-root@debian9:~# docker run -d --name registry -p 88:5000 registry:2.0 + 
-Unable to find image 'registry:2.0' locally +root@debian11:~# docker run -d --name registry -p 88:5000 registry:latest 
-2.0: Pulling from library/registry +Unable to find image 'registry:latest' locally 
-4d2e9ae40c41: Pull complete  +latest: Pulling from library/registry 
-a3ed95caeb02: Pull complete  +c926b61bad3b: Pull complete  
-7c8152785df5: Pull complete  +5501dced60f8: Pull complete  
-8b04aafd7cd8: Pull complete  +e875fe5e6b9c: Pull complete  
-c97c75d2d42e: Pull complete  +21f4bf2f86f9: Pull complete  
-4b3ef98bba76: Pull complete  +98513cca25bb: Pull complete  
-edee0288d356: Pull complete  +Digest: sha256:0a182cb82c93939407967d6d71d6caf11dcef0e5689c6afe2d60518e3b34ab86 
-ea2a9399d365: Pull complete  +Status: Downloaded newer image for registry:latest 
-ddf532273b60: Pull complete  +272df4a849bcbc58a70d6c8e1e74751f24e485fd8ad6817427ef180b9f28b5f8
-e9e91aa1843e: Pull complete  +
-6144b0ffbb4c: Pull complete  +
-Digest: sha256:3cac1869696e4ff3435bbc30391749ac373f7471736dbb48dfa9bfde08c4efd2 +
-Status: Downloaded newer image for registry:2.0 +
-c4c7cad999cdd77df78a21897bd11c4742a094c1c76a2134fbe4a4d2d92bff0e+
 </code> </code>
  
Ligne 1353: Ligne 1318:
  
 <code> <code>
-root@debian9:~# lynx --dump http://localhost:88/v2 +root@debian11:~# lynx --dump http://localhost:88/v2 
-{}root@debian9:~# +{}root@debian11:~# 
 </code> </code>
  
-<WRAP center round important>+<WRAP center round important 50%>
 **Important** - Notez la réponse du serveur est **{}** soit une liste JSON vide. **Important** - Notez la réponse du serveur est **{}** soit une liste JSON vide.
 </WRAP> </WRAP>
Ligne 1364: Ligne 1329:
  
 <code> <code>
-root@debian9:~# docker tag i2tch/mydocker localhost:88/mydocker+root@debian11:~# docker tag i2tch/mydocker localhost:88/mydocker
 </code> </code>
- 
-<WRAP center round important> 
-**Important** - Notez que le tag **i2tch/mydocker** cache le nom du registre par défaut qui est le registre public de Docker Hub. 
-</WRAP> 
  
 Envoyez votre image **localhost:88/mydocker** sur ce nouveau registre : Envoyez votre image **localhost:88/mydocker** sur ce nouveau registre :
  
 <code> <code>
-root@debian9:~# docker push localhost:88/mydocker +root@debian11:~# docker push localhost:88/mydocker 
-The push refers to repository [localhost:88/mydocker] +Using default tag: latest 
-873a8ac77d4d: Pushed  +The push refers to repository [localhost:88/mydocker] 
-b362758f4793: Pushed  +f981bd64e799: Pushed  
-latest: digest: sha256:30866da81d92d2a1015b869c596ddd6e188f33894c41d8effa2161e5c2862b1f size: 5531+74ddd0ec08fa: Pushed  
 +latest: digest: sha256:32f7a11d8a8523bb5b4ac0986844d569ca96df4d1875e7e678a885ee3a3c61c3 size: 736
 </code> </code>
  
Ligne 1384: Ligne 1346:
  
 <code> <code>
-root@debian9:~# lynx --dump http://localhost:88/v2/mydocker/tags/list+root@debian11:~# lynx --dump http://localhost:88/v2/mydocker/tags/list
 {"name":"mydocker","tags":["latest"]} {"name":"mydocker","tags":["latest"]}
-</code> 
- 
-<code> 
-root@debian9:~# docker images 
-REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE 
-i2tch/mydocker          latest              c37edbd43993        45 minutes ago      193MB 
-localhost:88/mydocker   latest              c37edbd43993        45 minutes ago      193MB 
-registry                2.0                 3bccd459597f        2 years ago         549MB 
 </code> </code>
  
Ligne 1400: Ligne 1354:
 Actuellement, le registre privé créé ci-dessus n'est pas accessible à partir du réseau local car il est référencé par localhost. Il convient donc maintenant de mettre en place un serveur dédié. Actuellement, le registre privé créé ci-dessus n'est pas accessible à partir du réseau local car il est référencé par localhost. Il convient donc maintenant de mettre en place un serveur dédié.
  
-Connectez-vous à la VM Debian_9_1 :+Connectez-vous à la VM **CentOS_10.0.2.45_SSH** à partir de votre VM **Debian_10.0.2.46_SSH** :
  
 <code> <code>
-trainee@traineeXX:~ssh -l trainee 10.0.2.61+root@debian11:~ssh -l trainee 10.0.2.45 
 +trainee@10.0.2.45's password: trainee 
 +Activate the web console with: systemctl enable --now cockpit.socket 
 + 
 +Last login: Wed Nov 15 05:24:16 2023 from 10.0.2.1 
 +[trainee@centos8 ~]$
 </code> </code>
  
-En tant que root, modifiez le nom d'hôte de la machine :+Devenez root :
  
 <code> <code>
-trainee@debian91:~$ su - +[trainee@centos8 ~]$ su - 
-Mot de passe : fenestros +Password: fenestros 
-root@debian91:~# nmcli general hostname myregistry.i2tch.loc +[root@centos8 ~]
-root@debian91:~# hostname +
-myregistry.i2tch.loc+
 </code> </code>
  
-Installez Docker :+Modifiez le nom d'hôte de la machine :
  
 <code> <code>
-root@debian91:~# apt-get update +[root@centos8 ~]nmcli general hostname myregistry.i2tch.loc 
-root@debian91:~# apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common +[root@centos8 ~]hostname 
-root@debian91:~# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - +myregistry.i2tch.loc
-root@debian91:~# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" +
-root@debian91:~# apt-get update +
-root@debian91:~# apt-get install docker-ce+
 </code> </code>
  
Ligne 1430: Ligne 1384:
  
 <code> <code>
-root@debian91:~# vi /etc/hosts +[root@centos8 ~]# vi /etc/hosts 
-root@debian91:~# cat /etc/hosts +[root@centos8 ~]# cat /etc/hosts 
-127.0.0.1 localhost +127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 
-10.0.2.60 debian9.i2tch.loc debian9 +::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 
-10.0.2.61 myregistry.i2tch.loc    myregistry +10.0.2.45       myregistry.i2tch.loc 
-10.0.2.62 manager.i2tch.loc manager +10.0.2.46       debian11.i2tch.loc
-10.0.2.63 worker1.i2tch.loc worker1 +
-10.0.2.64 worker2.i2tch.loc worker2 +
- +
-# The following lines are desirable for IPv6 capable hosts +
-::1     localhost ip6-localhost ip6-loopback +
-ff02::1 ip6-allnodes +
-ff02::2 ip6-allrouters+
 </code> </code>
  
Ligne 1448: Ligne 1395:
  
 <code> <code>
-root@debian91:~# cd / && mkdir certs && openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt +[root@centos8 ~]# cd / 
-Generating a 4096 bit RSA private key + 
-............................................................++ +[root@centos8 /]# vi myconfig.cnf  
-.......................................................................................................................................+++ 
 +[root@centos8 /]# cat myconfig.cnf  
 +[ req ] 
 +distinguished_name = dn 
 +x509_extensions = extensions 
 +prompt = no 
 + 
 +[ extensions ] 
 +subjectAltName = DNS:i2tch.loc,DNS:myregistry.i2tch.loc 
 + 
 +[ dn ] 
 +0.DC = loc  
 +1.DC = i2tch  
 +commonName = i2tch.loc 
 + 
 +[root@centos8 ~]# mkdir certs && openssl req -config myconfig.cnf -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt 
 +Generating a RSA private key 
 +...............................................................................................................................................................................................++++ 
 +......++++
 writing new private key to 'certs/domain.key' writing new private key to 'certs/domain.key'
 ----- -----
-You are about to be asked to enter information that will be incorporated + 
-into your certificate request. +[root@centos8 /]# ls certs/
-What you are about to enter is what is called a Distinguished Name or a DN. +
-There are quite a few fields but you can leave some blank +
-For some fields there will be a default value, +
-If you enter '.', the field will be left blank. +
------ +
-Country Name (2 letter code) [AU]:FR +
-State or Province Name (full name) [Some-State]:VAR +
-Locality Name (eg, city) []:Toulon +
-Organization Name (eg, company) [Internet Widgits Pty Ltd]:I2TCH LTD +
-Organizational Unit Name (eg, section) []:TRAINING +
-Common Name (e.g. server FQDN or YOUR name) []:myregistry +
-Email Address []: +
-root@registry:/# ls certs/+
 domain.crt  domain.key domain.crt  domain.key
 </code> </code>
  
-Déconnectez-vous de la VM Debian_9_1 :+Déconnectez-vous de la VM **CentOS8_10.0.2.45_SSH** :
  
 <code> <code>
-root@debian91:~# exit +[root@centos8 /]# exit 
-trainee@debian91:~$ exit+logout 
 +[trainee@centos8 ~]$ exit 
 +logout 
 +Connection to 10.0.2.45 closed. 
 +root@debian11:~#
 </code> </code>
  
-Connectez-vous à la VM Debian_9_1 :+Re-connectez-vous à la VM **CentOS8_10.0.2.45_SSH** :
  
 <code> <code>
-trainee@traineeXX:~ssh -l trainee 10.0.2.61+root@debian11:~ssh -l trainee 10.0.2.45 
 +trainee@10.0.2.45's password: trainee 
 +Activate the web console with: systemctl enable --now cockpit.socket 
 + 
 +Last login: Fri Dec 15 01:07:37 2023 from 10.0.2.46 
 +[trainee@centos8 ~]$ 
 +</code> 
 + 
 +Devenez root : 
 + 
 +<code> 
 +[trainee@myregistry ~]$ su - 
 +Password: fenestros 
 +[root@myregistry ~]# 
 </code> </code>
  
Ligne 1488: Ligne 1457:
  
 <code> <code>
-root@registry:/# docker run -d -p 5000:5000 --name registry -v /certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2.0 +[root@myregistry ~]# docker run -d -p 5000:5000 --name registry -v /certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:latest 
-943c01b67cf3f461270a55ac3d9df6622cc9d74e5f272e17153183ff29ee5932+Unable to find image 'registry:latest' locally 
 +latest: Pulling from library/registry 
 +c926b61bad3b: Pull complete  
 +5501dced60f8: Pull complete  
 +e875fe5e6b9c: Pull complete  
 +21f4bf2f86f9: Pull complete  
 +98513cca25bb: Pull complete  
 +Digest: sha256:0a182cb82c93939407967d6d71d6caf11dcef0e5689c6afe2d60518e3b34ab86 
 +Status: Downloaded newer image for registry:latest 
 +bf0d4fe9fcb121f9c2d9e85b8f2bb54b01397602ef0dcefdfc71327acf832fec
  
-root@registry:/# docker ps -a +[root@myregistry ~]# docker ps -a 
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                    NAMES +CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS                    PORTS                                       NAMES 
-943c01b67cf3        registry:2.0        "registry cmd/regi..."   31 seconds ago      Up 24 seconds                 0.0.0.0:5000->5000/tcp   registry+bf0d4fe9fcb1   registry:latest   "/entrypoint.sh /etc…  47 seconds ago   Up 44 seconds             0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   registry 
 +90267aac9800   hello-world       "/hello"                 15 hours ago     Exited (0) 15 hours ago                                               eloquent_chatelet
 </code> </code>
  
-Envoyez une copie du fichier **/certs/domain.crt** vers le répertoire /tmp de la machine virtuelle **Debian_9** en le renommant **ca.crt** :+Envoyez une copie du fichier **/certs/domain.crt** vers le répertoire /tmp de la machine virtuelle **Debian11_10.0.2.46** en le renommant **ca.crt** :
  
 <code> <code>
-root@registry:~# scp /certs/domain.crt trainee@10.0.2.60:/tmp/ca.crt +[root@myregistry ~]# scp /certs/domain.crt trainee@10.0.2.46:/tmp/ca.crt 
-The authenticity of host '10.0.2.60 (10.0.2.60)' can't be established. +The authenticity of host '10.0.2.46 (10.0.2.46)' can't be established. 
-ECDSA key fingerprint is 79:00:60:0e:2b:71:5e:cb:1a:08:45:e8:ab:45:b8:dd+ECDSA key fingerprint is SHA256:JFem/0UXFw0aDAOSfOS3vsOGsSDl1wPOza6ybTGO7/8
-Are you sure you want to continue connecting (yes/no)? yes +Are you sure you want to continue connecting (yes/no/[fingerprint])? yes 
-Warning: Permanently added '10.0.2.60' (ECDSA) to the list of known hosts. +Warning: Permanently added '10.0.2.46' (ECDSA) to the list of known hosts. 
-trainee@10.0.2.60's password: trainee +trainee@10.0.2.46's password:  
-domain.crt                                                                                                                            100% 2017     2.0KB/s   00:00  +domain.crt                                                                                                                                                                  100% 2053     2.9MB/s   00:00   
 </code> </code>
  
 ===Configurer le Client=== ===Configurer le Client===
  
-Sortez de la VM **debian91** et connectez-vous à la VM debian9 :+Sortez de la VM **CentOS8_10.0.2.45_SSH** :
  
 <code> <code>
-trainee@traineeXX:~$ ssh -l trainee 10.0.2.60 +[root@myregistry ~]# exit 
-</code> +logout 
- +[trainee@myregistry ~]exit 
-Passez en tant que **root** : +logout 
- +Connection to 10.0.2.45 closed. 
-<code> +root@debian11:~#
-trainee@debian9:~$ su - +
-Mot de passe : fenestros +
-root@debian9:~#+
 </code> </code>
  
Ligne 1527: Ligne 1503:
  
 <code> <code>
-root@debian9:~# docker ps -+root@debian11:~# docker rm -registry
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES +
-c4c7cad999cd        registry:2.0        "registry cmd/regi..."   4 hours ago         Exited (2) 4 hours ago                         registry +
-21b0490a93dd        i2tch/mydocker      "/entrypoint.sh my..."   4 hours ago         Exited (137) 4 hours ago                       myDocker +
- +
-root@debian9:~# docker rm registry+
 registry registry
- 
-root@debian9:~# docker ps -a 
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES 
-21b0490a93dd        i2tch/mydocker      "/entrypoint.sh my..."   4 hours ago         Exited (137) 4 hours ago                       myDocker 
 </code> </code>
  
Ligne 1543: Ligne 1510:
  
 <code> <code>
-root@debian9:~# docker rmi registry:2.0 +root@debian11:~# docker rmi registry:latest 
-Untagged: registry:2.0 +Untagged: registry:latest 
-Untagged: registry@sha256:3cac1869696e4ff3435bbc30391749ac373f7471736dbb48dfa9bfde08c4efd2 +Untagged: registry@sha256:0a182cb82c93939407967d6d71d6caf11dcef0e5689c6afe2d60518e3b34ab86 
-Deleted: sha256:3bccd459597f38e78ce95a408e506099644ca713d79157d2f3e3a7975f1c9146 +Deleted: sha256:909c3ff012b7f9fc4b802b73f250ad45e4ffa385299b71fdd6813f70a6711792 
-Deleted: sha256:e486d081a2821af119adbc458214cacf510ebb519cdf31e04ac3d4c6ac521c31 +Deleted: sha256:577c3b283118ca6108a6a8c8a0a00eff666dec82c482dd239dfed49f31553df6 
-Deleted: sha256:d206757aba612d90965729f186dfb70aa5e63b53dafd7e7b20a76005acddfe24 +Deleted: sha256:2ba6acf6ed95c86cfb2c830693135513bc019a0c0cf8f2c58990bc215995699f 
-Deleted: sha256:1b953394add763fbaa50446b03d636f453fa75b2d12676ceb4b71681b4da6e7d +Deleted: sha256:65920463e77382a5cbe8da3e814c4449fc665487c8a9fa4ac27179e809f5ba2e 
-Deleted: sha256:e8a2cacb793cb843e35bbf64e9c73d685d83ecc8192fbdbc098b0e5fbcced848 +Deleted: sha256:54501ccbeaec2665849d200fc4a61ab7254ff0f3bd31ab673879fe321fa2ad7f 
-Deleted: sha256:19eec9bf8dcc3cb15b93cdcff717057444c540ee641cf20b7ef647d19b9d1df4 +Deleted: sha256:9fe9a137fd002363ac64f5af66146702432b638a83ee0c5b620c40a9e433e813
-Deleted: sha256:2fb6f2d834e4dd55a7a6bb1472f5c293242e6439982332143d7332642a238d40 +
-Deleted: sha256:e08b039d73e73f17b3fa02ebf9a28ef156a7b43b828cd67ed422b9d7a01e5482 +
-Deleted: sha256:bd85e070a996530cc5f576bc5f56a0e3a159e00091410987416844de6e018415 +
-Deleted: sha256:6269effe5aa88dfc0071a2841605d95c0d809111333b5044b2459b43e5879f44 +
-Deleted: sha256:784ff50f126370cb3be928cd14a078605990efda458e73ad43f2a2e40e1efda2 +
-Deleted: sha256:29efd197b6056e252ebb46fe1b315489c2f8e032eb32d1f6fcd0119ee9536df7 +
-Deleted: sha256:3d42e373d713bfab9403159f282ba4cfaa7b4f33e57d5e36d4d2ca0ca1a2f4e7 +
-Deleted: sha256:518c6772b2fc316c63e9f4f9745e3587f169ec916fd26749b0ce7bf1f36bb93b +
-Deleted: sha256:e74bff63859c2597691fffd6fe95b35b0803f6791bc6565072bf07067574dba3 +
-Deleted: sha256:f76baad394e6d835fa0e166254e9f70af873fe43232c67ac198a67865084ccee +
-Deleted: sha256:b0eba742532f664bab6fc6d5bd00c60141397ba299f6743457f7ead64d7c714d +
-Deleted: sha256:c10c49233bc62ce69aafa1a44a62d8639a7be08d68b1c23d6b25ebb13e5324b0 +
-Deleted: sha256:1c8e9ba14469736fa03ede127e47f5821ca97b3029385ec1348e87932c875ff8 +
-Deleted: sha256:611f5c9e21fce8d870f9ba82248980ca3baaaf95afef2b17504372d1ca03cb5a +
-Deleted: sha256:4cb1abe123254326dba72305ef897fdf5364ebb1823413e13dbced41990f951e +
-Deleted: sha256:e10e5ea91f007db418b284f4adc5f0b98f374d79ae52b9687b0d6d33865ffbcf +
-Deleted: sha256:c69ae1aa46985cbaf186b6354c61a1d2e0d6af47133db47bf04f0c6eb9c858e9 +
- +
-root@debian9:~# docker images +
-REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE +
-i2tch/mydocker          latest              c37edbd43993        5 hours ago         193MB +
-localhost:88/mydocker   latest              c37edbd43993        5 hours ago         193MB+
 </code> </code>
  
Ligne 1579: Ligne 1524:
  
 <code> <code>
-root@debian9:~# docker tag i2tch/mydocker myregistry:5000/mydocker +root@debian11:~# docker tag i2tch/mydocker myregistry.i2tch.loc:5000/mydocker 
-root@debian9:~# docker images + 
-REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE +root@debian11:~# docker images 
-i2tch/mydocker             latest              c37edbd43993        5 hours ago         193MB +REPOSITORY                           TAG       IMAGE ID       CREATED        SIZE 
-localhost:88/mydocker      latest              c37edbd43993        5 hours ago         193MB +testcache                            latest    5a36b1c7ec76   4 days ago     77.8MB 
-myregistry:5000/mydocker   latest              c37edbd43993        hours ago         193MB+<none>                               <none>    842ab4a40890   4 days ago     77.8MB 
 +i2tch/mydocker                       latest    c5a41438d278   4 days ago     231MB 
 +localhost:88/mydocker                latest    c5a41438d278   4 days ago     231MB 
 +myregistry.i2tch.loc:5000/mydocker   latest    c5a41438d278   4 days ago     231MB 
 +i2tch/mongodb2                       latest    56e5b1fb4284   4 days ago     352MB 
 +i2tch/mongodb1                       latest    72fad0b7e0c2   4 days ago     352MB 
 +ittraining/mongodb                   latest    fb3c6d5d186a   days ago     1.11GB 
 +ubuntu                               latest    b6548eacb063   2 weeks ago    77.8MB 
 +nginx                                latest    a6bd71f48f68   3 weeks ago    187MB 
 +hello-world                          latest    9c7a54a9a43c   7 months ago   13.3kB 
 +centos                               latest    5d0da3dc9764   2 years ago    231MB
 </code> </code>
  
-Editez le fichier **/etc/hosts** afin de pointer le 10.0.2.61 vers le nom **myregistry** :+Editez le fichier **/etc/hosts** afin de pointer le 10.0.2.45 vers le nom **myregistry.i2tch.loc** :
  
 <code> <code>
-root@debian9:~# vi /etc/hosts +root@debian11:~# vi /etc/hosts 
-root@debian9:~# cat /etc/hosts + 
-127.0.0.1 localhost +root@debian11:~# cat /etc/hosts 
-10.0.2.60 debian9.i2tch.loc debian9 +127.0.0.1       localhost 
-10.0.2.61 myregistry.i2tch.loc    myregistry +10.0.2.46       debian11.i2tch.loc      debian11 
-10.0.2.62 manager.i2tch.loc manager +10.0.2.45       myregistry.i2tch.loc    myregistry
-10.0.2.63 worker1.i2tch.loc worker1 +
-10.0.2.64 worker2.i2tch.loc worker2+
  
 # The following lines are desirable for IPv6 capable hosts # The following lines are desirable for IPv6 capable hosts
Ligne 1608: Ligne 1561:
  
 <code> <code>
-root@debian9:~# mkdir -p /etc/docker/certs.d/myregistry:5000 +root@debian11:~# mkdir -p /etc/docker/certs.d/myregistry:5000 
-root@debian9:~# mv /tmp/ca.crt /etc/docker/certs.d/myregistry:5000/+ 
 +root@debian11:~# mv /tmp/ca.crt /etc/docker/certs.d/myregistry:5000/ 
 +</code> 
 + 
 +Créez le fichier **/etc/docker/daemon.json** pour accepter le certificat auto-signé : 
 + 
 +<code> 
 +root@debian11:~# vi /etc/docker/daemon.json 
 + 
 +root@debian11:~# cat /etc/docker/daemon.json 
 +{"insecure-registries" : ["myregistry.i2tch.loc:5000"]} 
 +</code> 
 + 
 +Re-démarrez le service docker : 
 + 
 +<code> 
 +root@debian11:~# systemctl restart docker
 </code> </code>
  
Ligne 1615: Ligne 1584:
  
 <code> <code>
-root@debian9:~# curl http://myregistry:5000/v2/ +root@debian11:~# curl -k https://myregistry:5000/v2/ 
-+{}root@debian11:~#
 </code> </code>
  
Ligne 1622: Ligne 1591:
  
 <code> <code>
-root@debian9:~# docker push myregistry:5000/mydocker +root@debian11:~# docker push myregistry.i2tch.loc:5000/mydocker 
-The push refers to repository [myregistry:5000/mydocker] +Using default tag: latest 
-873a8ac77d4d: Pushed  +The push refers to repository [myregistry.i2tch.loc:5000/mydocker] 
-b362758f4793: Pushed  +f981bd64e799: Pushed  
-latest: digest: sha256:30866da81d92d2a1015b869c596ddd6e188f33894c41d8effa2161e5c2862b1f size: 5531+74ddd0ec08fa: Pushed  
 +latest: digest: sha256:32f7a11d8a8523bb5b4ac0986844d569ca96df4d1875e7e678a885ee3a3c61c3 size: 736
 </code> </code>
  
 ----- -----
  
-Copyright © 2022 Hugh Norris.+Copyright © 2024 Hugh Norris.
Menu