►
Description
Walking through getting a local environment set up to work on container registry and then debugging an issue that we had identified as a good candidate for me to work on.
Unfortunately, because of my external screen, the video is an odd resolution. I can fix this later if necessary.
A
A
Thank
you
yeah.
The
idea
here
is
this.
Lo
same
situation,
I've,
it's
been
a
while,
since
I've
been
actively
writing
code,
so
Juelz
graciously
offered
his
time
to
help
me
sort
of
get
back
up
to
speed
with
some
of
this
stuff
get
my
environment
set
up
and
then
start
working
through
a
bug
that
we've
identified
as
being
a
good
candidate.
So
meanwhile,
I
am
building
my
environment
and
background.
A
B
B
Okay,
so
it's
fine
checking
out
the
source,
but
since
we
are
cloning,
the
upstream
repository
and
since
go
relies
on
the
path.
I
want
go
putz
to
build
the
source.
We
need
to
respect
the
upstream
source
pots,
which
means
that
we
have
to
clone
our
container
registry
fork
source
code
into
a
pot
that
is
the
same
as
the
upstream
as
the
extreme
source
code.
Okay,
so
got
it.
So
basically,
what
we
have
to
do
is
just
go
ahead
and
grab
the
grab.
The
teat
URL
for
our
container
registry
repository
to
everything
man.
B
A
B
A
B
A
A
B
B
Yeah
yeah,
it's
it's
a
bit
tricky
because,
as
I
said,
we
cloned
the
upstream
repository,
so
we
still
have
the
part
of
the
purge
stream
repository
and
given
that
this
is
not
using
go
modules,
we
need
to
respect
the
go
back
to
the
source
code.
So
now,
if
you
go
into
distribution
here,
we
are
that's
the
that's
our
source
code.
Now,
do
you
have
an
editor
of
choice?
Be
a
school
or.
B
A
B
B
Much
better,
okay!
So
now
we
need
to
check
if
you
have
go
installed
and
we
have
no
part
of
scores.
But
if
you,
if
you
type
go
space
version,
we
are
going
to
see
which
version
of
who
you're
running
that
schools
as
long
as
you're
running
more
than
one
dots
11.
We
should
be
good
for
this,
your
absolute,
so
that's
even
better
and
right
now.
The
the
first
thing
that
we
need
to
do
is
fetch
the
dependencies
we
all
right,
all
of
that
in
the
vendor
folder.
B
So
this
is
not
a
problem,
as
you
can
see
there
in
the
Engel
in
the
left.
In
the
left
side,
you
have
the
vendor
folder,
and
you
know
all
the
dependencies
check
that
checked
in
as
well.
So
there
is
no
need
to
fetch
them
here.
We
just
need
to
make
sure
that
to
go
to
will
use
the
parentheses
that
are
angry.
So,
let's
just
try
to
to
to
build
the
binaries.
So
if
you
right
make
sure
that
you
make
binaries
and
let's
see
how
that
goes,.
B
Nice,
so
it
works,
which
means
that
your
go
tool
has
used
the
right
vendor
it
definite
it's.
Otherwise,
it
would
not
have
worked
so
right.
Now
we
can
check
the
the
version
of
the
registry.
We
can
see
that
for
actually
three
main
areas
were
were
built.
The
only
one
that
we
care
about
is
the
the
registry
on
ok.
So
if
you
type
dot
slash
bin
now,.
B
That's
that's
the
latest
version
we
yeah,
it
seems
we
are
in
development.
It
will
append
the
the
commit
hash
to
the
to
the
tag
version
locally.
So
that's
it!
Everything
is
okay.
Now
what
we
need
to
do
so
the
source
code
comes
with
everything
that
we
need,
except
the
colleague
the
configuration
file.
Okay.
So
we
need
to
set
up
a
configuration
file
for
the
registry
before
we
can.
B
We
can
boot
it
so
for
this
there
is
no
this
week
documentation
on
our
container
registry
repository,
because
it's
the
standard
Walker
documentation
that
the
search
for
this-
let's
see
the
configuration
you
can
look
at
at
your
official
docker
documentation
when
I'm
just
going
to
give
you
a
sample.
Config
okay,
sounds.
A
B
A
A
B
A
B
So
you
can,
in
this
case
we
are
going
to
use
the
file
system
storage
driver,
so
we
could
use
file
system
or
any
block.
No
each
phone
system,
but
the
simplest
one
for
different
purposes
is
to
the
file
system.
I,
usually
keep
it
inside
this
path.
You
can
give
it
another
path
or
create
the
part
that
I'm
using.
So
if
you
just
want
to
keep
the
same
patch,
just
create
the
underscore
temp,
slash,
storage,
former.
B
So
we
should.
We
should
be
right
if
that
isn't
nothing
special
about
these
configurations,
just
a
configuration
with
a
special
root
directory
for
the
file
system
driver.
So
let's
go
ahead
and
try
to
to
boot
the
registry
so
to
root
the
registry.
You
need
to
do
dot,
slash
games
last
registry
and
then
we
use
the
comment
means.
B
B
A
A
B
A
B
Makes
sense
so,
let's
just
pop
up
a
different
terminal,
tab
and
I,
think
you
can
do
it
on
the
plus
button
on
the
right
side,
thanks
yeah,
oh
nice
I've
never
really
used
that.
Thank
you
yeah
and
now
that
let's
do
thing
which
is
calling
the
dapi
to
see
that
is
no
repositories
inside
the
our
agency,
because
it's
empty
and
it's
a
new
registry.
So
we
can
use
current
for
that.
So
if
you
curl
HTTP,
okay
and
then
the
other
s
to
the
registry.
A
B
A
B
A
B
Okay,
so
that's
that's
completely
expectable,
so
let's
go
ahead
and
upload
our
first
image.
So
maybe
you
can.
We
can
start
reproducing
the
issue
that
we
have
been
discussing.
I've
documented
the
steps
to
reproduce
it,
and
one
of
them
is
actually
uploading
an
image
to
the
registry.
So
let's,
let's
do
that.
If
you
go
to
the
to
the
issue.
A
B
A
B
B
Yeah,
okay,
so
this
is
the
issue
that
we
are
going
to
try
to
reproduce
and
patch.
So
this
requires
a
fix
and
we
are
trying
to
do
it
for
anyone
holding
their
own.
They
can
look
at
it
for
for
more
details,
but
overall,
the
problem
is
that
when
an
image
is
only
one
type
and
we
delete
that
tag,
if
we
are
using
blob
storage,
back-end
so
say,
s3
GCS,
no
matter
what,
if
you
delete
that
last
egg,
the
folder
for
all
types
will
also
disappear
because
it
will
add
no
child's
and
in
blob
storage.
B
B
Cool
awesome,
okay,
so
the
first
step
is
to
grab
a
sample
image,
so
we
are
going
to
use
auto
pine
lattice.
For
for
this
purpose,
we
can
use
whatever
image
we
just
use
open,
because
it's
smaller
serves
a
purpose,
so
go
ahead
and
do
that
and
then
once
that
is
done,
we
are
going
to
take
this
image
with
a
pet
that
resembles
our
container
registry.
Okay.
B
A
B
We
we
need
to
so
locker
demon
will
only
accept
registries
that
at
a
secure
connection,
so
HTTP
we
need
to.
We
don't
have
HTTPS.
So
we
need
to
update
the
docker
demon
configurations
on
your
machine
to
let
an
insecure
registry,
and
so,
let's
see,
if
you
go
to
the
docker
on
your
top,
you
have
preferences
right.
We're.
A
A
B
B
Yeah,
so
we
need
to
ever
an
insecure
registries
section
to
that.
So
let
me
send
you
my
configuration,
which
I
just
sent
you
in
your
case
so
I'm
not
using
neither
local
O's,
neither
of
0
dot,
0
dot
you
as
an
IP
address.
Actually
so
in
your
case,
just
an
it
an
entry
40.00,
let's
see
if
that
works
or
not.
A
B
B
B
B
A
B
B
B
Yep,
let's
see:
okay,
okay,
it's
work!
If
you
don't,
if
you
need
a
type
change,
the
insecure
registry
configuration
I
believe
this
comment
would
fail,
because
the
content
negotiation
would
would
not
be
in
HD
PS,
but
it
is
okay
right
now.
So
let's
go
to
tab
1
on
the
terminal,
so
that's
the
yeah.
So
we
should
see
the
lots
from
the
container
registry
that
was
first,
your
catalog
query.
B
B
A
A
A
A
B
B
B
B
B
A
B
B
B
B
B
A
B
B
A
B
We
can
see
that
we
have
and
that
represent
Ori,
as
so,
if
you
scroll
down
those
are
the
blobs,
then
we
have
the
repositories.
We
have
one.
We
have
overall
our
project
and
then
we
have.
We
have
the
text,
okay,
and
that
is
only
one
tag
which
is
the
latest
one
which
is
right
below
that
exactly
so.
What
we
are
going
to
do
first
is
running
garbage
collection
to
see
that
everything
runs
okay
and
there
is
nothing
relational
for
deletion,
because
we
only
have
one
image
with
one
type
and
it's
being
used.
Okay,.
B
B
B
Okay,
so
for
anyone
that
noticed,
the
log
output
is
different
than
that
is
different
than
the
one
that
is
shown
on
the
issue,
because
meanwhile
we
have
chipped,
a
new
version
of
the
content
of
registry
with
garbage
collection
improvements,
which
also
include
with
structural
clogging.
So
that's
why
the
logging
looks
pretty
different,
so
moving
forth.
We
can
see
that
the
last
line
longsword
marks
there
are
Nobles
eligible
for
deletion
and
there
are
no
manifest
illogical
physical
for
deletion
as
well.
B
Okay,
so
this
makes
sense
now
to
reproduce
the
issue
we
are
going
to
remove
the
text
folder
for
the
read
for
that
image,
and
basically
this
will
simulate
the
end
tag
of
the
image
on
a
table:
storage
back-end,
which
will
cause
the
text
folder
to
disappear
as
well.
So
there
is
a
comment
for
that
on
the
issue
as
well.
You
just
need
to
RM.
B
B
B
B
Tag
was
you
just
need
to
actually:
let's:
let's
do
it
interactively
so
just
each
step
on
your
keyboard:
okay,
okay,
okay,
okay
and
now,
let's
go
to
repositories
again
and
now
it's
that's
right!
That's
right
and
let's
see
that
the
manifests
exactly
and
that's
it,
and
then
we
want
to
delete
the
text
cooler.
Okay,
let's
do
it
like.
B
B
Now,
let's
find
out
where,
in
the
circle,
this
is
actually
happening.
So
there
are
many
ways
of
doing
this.
We
could
debug
this
and
run
a
debugger
or
some
type
that,
but
just
let's
just
do
the
easiest
way,
which
is
finding
first
The
New
Yorker
message
so
at
first
it
may
seem
at
first.
It
may
seem
that
that's
a
unique
that's
a
single
error
message,
but
it's
not
it's
actually
the
concatenation
of
several
messages.
Okay,
so
you
could
search
for
a
combination
of
them
I'm,
going
to
make
it
easier.
B
B
Yeah
so
the
first
one
that
appears
it's
not
the
one
that
we
are
looking
for,
because
it
has
four
digests
in
front.
So
that's
not
our
problem,
the
one
that
we
are
looking
at.
It's
probably
this
one
fairly,
three
three
stacks.
Now.
How
do
we
know
if
this
is
really
the
right
on
again
we
could
use
a
debugger,
because
it's
multiple
things,
but
that
let's
just
print
a
message
to
the
terminal
inside
that,
if
block
well
so
before
that
before.
A
B
A
B
B
A
B
Compile
everything
with
our
changes
and
now
the
lights
rerun
the
garbage
collection
comment
that
you
have
that's
right
now.
We
should
see
your
message.
We
are
here,
okay,
so
we
are
in
the
right
place.
So
what
happens?
Is
that
that's
commendable
repository
dot,
X
dot,
all
we'll
try
to
look
for
all
types
of
a
given
repository?
Okay,
but
we
have
deleted
the
text
folder.
So
the
problem
comes
from
weeding,
that's
all
method:
online
1.8
1
to
8,
okay,.
B
A
B
You're
going
to
look
at
the
documentation,
just
quick,
cancel
all
down
comments
and
click
on
all
yeah.
That's
it.
Okay,
it
works.
Now
we
are,
we
were
redirected
to
a
place,
that's
not
actually
the
implementation
of
the
method,
but
rather
the
interface.
Then
he
finds
the
implementation
of
the
method.
So
this
is
not
very
useful.
Some
taxi
readers.
We
would
show
you
where
this
method
is
being
implemented,
but
I
believe
would
be
a
school.
B
A
B
Makes
sense
text
it
will
definitely
be
something
named
attacks.
So
that's
one
of
the
implementations.
If
you
click
on
that,
let's
see
it's
the
it's
the
actual
interface.
So
that's
not
what
we
are
looking
for.
Let's
just
see
if
there
is
any
any
file
name
it
text.
That
is
not
the
one
that
contains
the
interface
so
I'm.
B
Yeah,
that's
the
endler,
but
it's
just
calling
the
matter:
it's
not
actually
defining
it,
so
we
can
skip
those
as
well.
Now,
if
you
keep
scrolling
down
I,
see
here,
one
text
or
okay
yeah
next
door
is
the
definition
of
the
old
method.
Okay.
So
this
is
one
of
the
places
where
that
interface
is
implemented
and
I
believe
this
is
the
place
where
we
are
getting
here.
So,
let's
repeat
the
same
thing
and
just
include
the
prints
inside
this
message
inside
this
function,
I
believe
that
the
attacker
should
be
on
line
38.
B
A
B
B
That's
basically
the
text
representation
of
this
error
and
then
fairly
to
retrieve
text
is
the
error
message
from
the
garbage
collection
code?
Okay,
so
it
makes
sense.
We
are
not
going
to
touch
this
and
why
we
are
not
going
to
do
it
here,
because
this
code
is
reused
in
several
parts
of
the
registry.
So
we
don't
want
to
sell
and
see
over
here
we
need
to
sound
Seattle
where
we
actually
are
comfortable
by
ignoring
X
okay.
So
let's
just
wipe
that
message
and
restore
the
previous
state.
B
Okay,
let's
go
to
the
garbage
collect
and
now
what
we
need
to
do
here
is
basically
we
are
doing
that
and
then
we
are
checking
if
the
error
is
is
not
new.
If
the
error
is
not
ill,
we
have
an
error,
which
is
the
case,
but
if
the
error
is
a
unknown
repository
her
we
want
to
ignore
it.
Okay,
we
don't
want
to
old
garbage
collection.
So
the
first
thing
that
we
need
to
do
is
basically
make
a
type
assertions
on
the
error
to
check.
B
If
the
error
is
unknown,
rip
the
trigger
or
not,
I'm
sure
this
is
done
in
other
places
as
well.
So
if
you
want
to
do
it,
just
go
back
to
the
text
or
dot
go
file,
a
copy,
the
distribution,
dots
error,
--air
repository
unknown
yeah,
okay,
just
copy
that
two
words
yeah
and
actually
save
the
file
because
it
was
not
safe.
B
B
B
So
with
this,
hopefully,
what
we
are
going
to
get
is
that
in
case
there
is
not
a
text
folder
for
an
image.
Garbage
collection
should
not
be
altered,
it
should
continue
and
the
manifest
and
the
blobs
associated
with
that
image
that
doesn't
have
a
text
folder
should
be
marked
as
eligible
for
deletion.
Okay,
we
want
to
free
free
this
space.
That's
really
to
deal
with
that.
So
we're
gonna
go
ahead,
make
me
nervous
again
and
then
we
run
garbage
collection
and,
let's
see,
let's
see
how
that
works.
B
B
Three
walk
three
blocks
really
and
one
waifus
to
delete.
Okay,
there
are
only
three
three
blobs
in
the
repository
they
are
all
going
to
be
wiped
because
there
is
only
a
single
image,
referencing
that
that
blobs
those
blobs
and
that
manifest
doesn't
have
a
text
folder.
So
it's
also
related
content,
so
those
make
sense-
and
it
fix
fixes
our
issue.
B
B
A
Sorry
well,
we
have
like
three
minutes
left
for
our
meeting,
so
maybe
what
we
can
do
is
sort
of
wrap
this
up
here
as
a
like:
hey
here's,
how
we
can
get
into
it,
as
example,
to
people
to
get
started
and
then
that
we
could
memory.
Excuse
me
about
tests
separately.
I
might
what
I
might
do
is
actually
create
an
Emma
for
this
change
associated
with
the
issue
with
this
particular
change
we
had
and
then
I'll
add
tests
to
that
we
can
take
that
async.
Does
that.
B
A
Well,
thank
you
so
much
for
helping
be
impatient
with
me.
It's
been
a
little
while,
since
I've
actively
written
go
as
part
of
my
everyday
life
and
so
I
definitely
appreciate
your
assistance
and
I
hope.
This
is
helpful
for
people
in
the
community
and
other
people
who
might
like
to
contribute.
If
people
have
any
questions.
A
I,
probably
the
best
thing
to
do
is
maybe
come
in.
Our
issue
will
start
adding
documentation
around
how
to
contribute
for
community
contributors
and
other
people
who
might
be
just
interested.
So
where
can
everyone
find
us
get
live.com
navigate
to
the
package
group?
There's
contact
information
there,
it's
under
the
CI
CD,
otherwise
thanks
so
much
for
your
time.
Thank.