Jak zainstalować kontener Docker w systemie Linux? (Ubuntu i CentOS)
Opublikowany: 2019-08-01 Docker bez wątpienia jest najlepszą Container Management Platform
dla potrzeb projektu korporacyjnego i/lub osobistego.
Dlaczego potrzebujemy Dockera?
Rozważ ten prosty scenariusz dla swojego projektu.
- Masz złożoną aplikację Java Enterprise z ponad 50 zależnościami maven.
- Masz jeszcze kilka zależności usług lokalnych.
- Masz własną instancję bazy danych działającą lokalnie.
- Masz ponad 10 niestandardowych skryptów powłoki, które są wymagane do skonfigurowania środowiska.
- Masz ~5 zmiennych środowiskowych.
- Masz ~5 skryptów automatycznego uruchamiania.
- I tak dalej…
Cóż, jeśli chcesz wysłać wszystko powyższe do swojego klienta, jest to wiele kroków. Prawda?
W tym miejscu pojawia się Docker.
Prostota:
Co powiesz na zbudowanie i złożenie wszystkich powyższych w single docker image
i wysłanie tego obrazu do klienta? To tylko single step install
dla Twojego klienta i get ready within few minutes
.
W tym samouczku omówimy kroki, jak install Docker on Linux
i wszystkie wymagane kroki.
Zacznijmy:
Krok 1. Zaloguj się do hosta Linux i sprawdź wymagania wstępne
Docker występuje w 3 wersjach:
- Silnik Dockera – Społeczność
- Silnik Dockera – Przedsiębiorstwo
- Docker Enterprise
W tym samouczku omówimy etapy instalacji Docker Community Edition
.
1.1) Zaloguj się do swojego hosta Linux.
Jako hosta linuksowego używam dropletu Digital Ocean.
1 2 3 |
bash - 3.2 $ ssh root @ 45.56.94.4 root @ 45.56.94.4 ' s password : Welcome to Ubuntu 19.04 ( GNU / Linux 5.0.0 - 13 - generic x86_64 ) |
1.2) Sprawdź architekturę systemu operacyjnego Linux:
Potrzebujesz architektury 64-bit
.
1 2 3 |
root @ localhost : ~ # arch x86_64 |
1.3) Sprawdź poziom jądra systemu operacyjnego Linux:
Poziom jądra powinien być większy niż 3.0.
1 2 3 |
root @ localhost : ~ # uname -r 5.0.0 - 13 - generic |
Krok 2. Zainstaluj Docker Community Edition
2.1) Upewnij się, że dodałeś oficjalny klucz PGP platformy Docker do swojego systemu.
1 2 3 4 |
root @ localhost : ~ # curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - OK root @ localhost : ~ # |
2.2) Upewnij się, że masz właściwy klucz PGP:
1 2 3 4 |
root @ localhost : ~ # sudo apt-key fingerprint 0EBFCD88 | grep 5822 Warning : apt - key output should not be parsed ( stdout is not a terminal ) 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 |
2.3) Upewnij się, że zainstalowałeś system operacyjny Ubuntu do najnowszej wersji
Command:
aktualizacja sudo apt-get
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
root @ localhost : ~ # sudo apt-get update Hit : 1 http : //mirrors.linode.com/ubuntu disco InRelease Get : 2 http : //mirrors.linode.com/ubuntu disco-updates InRelease [97.5 kB] Get : 3 http : //mirrors.linode.com/ubuntu disco-backports InRelease [88.8 kB] Hit : 4 https : //download.docker.com/linux/ubuntu disco InRelease Get : 5 http : //mirrors.linode.com/ubuntu disco-updates/main amd64 Packages [226 kB] Get : 6 http : //security.ubuntu.com/ubuntu disco-security InRelease [97.5 kB] Get : 7 http : //mirrors.linode.com/ubuntu disco-updates/main i386 Packages [194 kB] Get : 8 http : //mirrors.linode.com/ubuntu disco-updates/universe i386 Packages [252 kB] Get : 9 http : //mirrors.linode.com/ubuntu disco-updates/universe amd64 Packages [254 kB] Get : 10 http : //mirrors.linode.com/ubuntu disco-updates/universe Translation-en [80.1 kB] Get : 11 http : //security.ubuntu.com/ubuntu disco-security/main i386 Packages [144 kB] Get : 12 http : //security.ubuntu.com/ubuntu disco-security/main amd64 Packages [173 kB] Get : 13 http : //security.ubuntu.com/ubuntu disco-security/universe amd64 Packages [220 kB] Get : 14 http : //security.ubuntu.com/ubuntu disco-security/universe i386 Packages [217 kB] Get : 15 http : //security.ubuntu.com/ubuntu disco-security/universe Translation-en [55.4 kB] Fetched 2 , 098 kB in 2s ( 1 , 188 kB / s ) Reading package lists . . . Done |
2.4) Skonfiguruj najnowsze stabilne repozytorium Docker
Command:
sudo add-apt-repository „deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stabilny”
1 2 3 4 5 6 7 8 |
root @ localhost : ~ # sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" Hit : 1 http : //mirrors.linode.com/ubuntu disco InRelease Hit : 2 http : //mirrors.linode.com/ubuntu disco-updates InRelease Hit : 3 http : //mirrors.linode.com/ubuntu disco-backports InRelease Hit : 4 https : //download.docker.com/linux/ubuntu disco InRelease Hit : 5 http : //security.ubuntu.com/ubuntu disco-security InRelease Reading package lists . . . Done |
2.5) Zainstaluj Docker
Command:
sudo apt-get install docker-ce
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
root @ localhost : ~ # sudo apt-get install docker-ce Reading package lists . . . Done Building dependency tree Reading state information . . . Done The following packages were automatically installed and are no longer required : bridge - utils dns - root - data dnsmasq - base ubuntu - fan Use 'sudo apt autoremove' to remove them . The following additional packages will be installed : aufs - tools containerd . io docker - ce - cli libltdl7 The following packages will be REMOVED : containerd docker . io runc The following NEW packages will be installed : aufs - tools containerd . io docker - ce docker - ce - cli libltdl7 0 upgraded , 5 newly installed , 3 to remove and 101 not upgraded . Need to get 87.9 MB of archives . After this operation , 133 MB of additional disk space will be used . Do you want to continue ? [ Y / n ] Y Get : 1 http : //mirrors.linode.com/ubuntu disco/universe amd64 aufs-tools amd64 1:4.9+20170918-2 [104 kB] Get : 2 http : //mirrors.linode.com/ubuntu disco/main amd64 libltdl7 amd64 2.4.6-10 [38.3 kB] Get : 3 https : //download.docker.com/linux/ubuntu disco/stable amd64 containerd.io amd64 1.2.6-3 [22.6 MB] Get : 4 https : //download.docker.com/linux/ubuntu disco/stable amd64 docker-ce-cli amd64 5:19.03.1~3-0~ubuntu-disco [42.5 MB] Get : 5 https : //download.docker.com/linux/ubuntu disco/stable amd64 docker-ce amd64 5:19.03.1~3-0~ubuntu-disco [22.7 MB] Fetched 87.9 MB in 3s ( 34.9 MB / s ) ( Reading database . . . 83080 files and directories currently installed . ) Removing docker . io ( 18.09.5 - 0ubuntu1 ) . . . '/usr/share/docker.io/contrib/nuke-graph-directory.sh' - > '/var/lib/docker/nuke-graph-directory.sh' Removing containerd ( 1.2.6 - 0ubuntu1 ) . . . Removing runc ( 1.0.0 ~ rc7 + git20190403 . 029124da - 0ubuntu1 ) . . . Selecting previously unselected package aufs - tools . ( Reading database . . . 82836 files and directories currently installed . ) Preparing to unpack . . . / aufs - tools_1 % 3a4.9 + 20170918 - 2_amd64.deb . . . Unpacking aufs - tools ( 1 : 4.9 + 20170918 - 2 ) . . . Selecting previously unselected package containerd . io . Preparing to unpack . . . / containerd . io_1 . 2.6 - 3_amd64.deb . . . Unpacking containerd . io ( 1.2.6 - 3 ) . . . Selecting previously unselected package docker - ce - cli . Preparing to unpack . . . / docker - ce - cli_5 % 3a19.03.1 ~ 3 - 0 ~ ubuntu - disco_amd64 . deb . . . Unpacking docker - ce - cli ( 5 : 19.03.1 ~ 3 - 0 ~ ubuntu - disco ) . . . Selecting previously unselected package docker - ce . Preparing to unpack . . . / docker - ce_5 % 3a19.03.1 ~ 3 - 0 ~ ubuntu - disco_amd64 . deb . . . Unpacking docker - ce ( 5 : 19.03.1 ~ 3 - 0 ~ ubuntu - disco ) . . . Selecting previously unselected package libltdl7 : amd64 . Preparing to unpack . . . / libltdl7_2 . 4.6 - 10_amd64.deb . . . Unpacking libltdl7 : amd64 ( 2.4.6 - 10 ) . . . Setting up aufs - tools ( 1 : 4.9 + 20170918 - 2 ) . . . Setting up containerd . io ( 1.2.6 - 3 ) . . . Setting up libltdl7 : amd64 ( 2.4.6 - 10 ) . . . Setting up docker - ce - cli ( 5 : 19.03.1 ~ 3 - 0 ~ ubuntu - disco ) . . . Setting up docker - ce ( 5 : 19.03.1 ~ 3 - 0 ~ ubuntu - disco ) . . . Installing new version of config file / etc / init . d / docker . . . Installing new version of config file / etc / init / docker . conf . . . Created symlink / etc / systemd / system / multi - user . target . wants / docker . service → / lib / systemd / system / docker . service . Processing triggers for systemd ( 240 - 6ubuntu5 ) . . . Processing triggers for man - db ( 2.8.5 - 2 ) . . . Processing triggers for libc - bin ( 2.29 - 0ubuntu2 ) . . . |

2.6) Sprawdź wersję Dockera
1 2 |
root @ localhost : ~ # docker -v Docker version 19.03.1 , build 74b1e89 |
Krok 3. Uruchom Docker i uruchom Hello World
3.1) Proste polecenie do uruchomienia Dockera w systemie Linux
Jak widać powyżej podczas instalacji Docker rejestruje się jako usługa systemowa: /lib/systemd/system/docker.service
.
1 |
root @ localhost : ~ # sudo systemctl start docker |
3.2) Pociągnijmy Hello World Docker i uruchommy
Command:
sudo docker run hello-world
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
root @ localhost : ~ # sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest : Pulling from library / hello - world 1b930d010525 : Pull complete Digest : sha256 : 6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f Status : Downloaded newer image for hello - world : latest Hello from Docker ! This message shows that your installation appears to be working correctly . To generate this message , Docker took the following steps : 1. The Docker client contacted the Docker daemon . 2. The Docker daemon pulled the "hello-world" image from the Docker Hub . ( amd64 ) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading . 4. The Docker daemon streamed that output to the Docker client , which sent it to your terminal . To try something more ambitious , you can run an Ubuntu container with : $ docker run - it ubuntu bash Share images , automate workflows , and more with a free Docker ID : https : //hub.docker.com/ For more examples and ideas , visit : https : //docs.docker.com/get-started/ root @ localhost : ~ # |
Powyższe polecenie ściągnie obraz dockera i będziesz mógł uruchomić aplikację Docker Hello World.
Krok 4. Jak sprawdzić obrazy/repozytoria Dockera?
Przed uruchomieniem aplikacji Hello World:
1 2 3 4 5 6 |
root @ localhost : ~ # docker images REPOSITORY TAG IMAGE ID CREATED SIZE keyansoftwares / logviewersvc latest 04612d6a457d 2 months ago 144MB keyansoftwares / logreadagent latest 0385a757deb5 2 months ago 138MB keyansoftwares / logreadagent < none > d75a02abb278 2 months ago 369MB grafana / grafana latest f96bf1723e2a 3 months ago 245MB |
Po uruchomieniu aplikacji Hello World:
Jak widzisz tutaj – poniżej zobaczysz nowe repozytorium hello-world
1 2 3 4 5 6 7 |
root @ localhost : ~ # docker images REPOSITORY TAG IMAGE ID CREATED SIZE keyansoftwares / logviewersvc latest 04612d6a457d 2 months ago 144MB keyansoftwares / logreadagent latest 0385a757deb5 2 months ago 138MB keyansoftwares / logreadagent < none > d75a02abb278 2 months ago 369MB grafana / grafana latest f96bf1723e2a 3 months ago 245MB hello - world latest fce289e99eb9 7 months ago 1.84kB |
Gratulacje. Wszystko gotowe. Skonfigurowałeś środowisko Linux dla platformy Docker, zainstalujesz Docker i uruchomiłeś swoją pierwszą aplikację Docker.
Dodatkowy krok:
Zalecamy wykonanie tych kroków po instalacji.
Jak automatycznie uruchomić docker po ponownym uruchomieniu maszyny wirtualnej?
Command:
sudo systemctl enable docker
1 2 3 4 |
root @ localhost : ~ # sudo systemctl enable docker Synchronizing state of docker . service with SysV service script with / lib / systemd / systemd - sysv - install . Executing : / lib / systemd / systemd - sysv - install enable docker |
Po prostu wykonaj powyższe polecenie, a twój docker uruchomi się automatycznie przy następnym ponownym uruchomieniu maszyny wirtualnej/hosta.
Daj mi znać, jeśli napotkasz jakikolwiek problem z działaniem powyższych poleceń i jakikolwiek problem z Dockerem.
Chcesz zainstalować Docker na CentOS?
Po prostu zastąp Step-2
powyżej poniższymi krokami:
1 2 3 4 5 6 7 8 9 |
root @ localhost : ~ # sudo yum install -y yum-utils device-mapper-persistent-data lvm2 root @ localhost : ~ # sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo root @ localhost : ~ # sudo yum install docker-ce docker-ce-cli containerd.io root @ localhost : ~ # sudo systemctl start docker root @ localhost : ~ # sudo docker run hello-world |