Rumah  >  Artikel  >  Tutorial sistem  >  Mulakan dengan Docker dalam masa lima minit

Mulakan dengan Docker dalam masa lima minit

WBOY
WBOYke hadapan
2024-01-02 14:29:52816semak imbas
Apakah itu Docker?

Docker ialah enjin kontena sumber terbuka, dan kontena sebenarnya adalah persekitaran bebas maya Oleh itu, pembangun boleh membungkus aplikasi ke dalam bekas docker sedemikian dan kemudian menerbitkannya ke mana-mana mesin yang boleh menjalankan bekas docker untuk mencapai Pakej dan menggunakan berbilang. tempat pada satu masa, menyelesaikan masalah penempatan yang disebabkan oleh masalah alam sekitar.

Konsep yang sepadan dengan bekas adalah imej Imej boleh dianggap sebagai imej sistem pemasangan harian kami, yang merupakan persekitaran berjalan. Sudah tentu, saya lebih suka membandingkan imej dengan kelas dalam pengaturcaraan berorientasikan objek kami, dan bekas ialah contoh kelas, jadi banyak bekas boleh dibuat berdasarkan satu imej. Setiap bekas adalah khusus. Kita boleh membuat perubahan pada bekas dan kemudian membungkus bekas itu ke dalam imej baharu, supaya bekas baharu boleh dibuat berdasarkan imej yang diubah suai pada masa hadapan. Bekas itu sendiri boleh difahami secara ringkas sebagai persekitaran berjalan bebas maya Apa yang perlu kami lakukan ialah membungkus aplikasi kami dalam persekitaran ini untuk penggunaan mudah semula.
Mulakan dengan Docker dalam masa lima minit

Pasang Docker

Gentoo

# emerge --ask docker

CentOS

# yum install docker-ce

Ubuntu

# apt-get install docker-ce

Lengkungan

# pacman -S docker
Mulakan daemon buruh pelabuhan
# systemctl start docker
pengenalan arahan docker
# docker --help
管理命令:
  container   管理容器
  image       管理镜像
  network     管理网络
命令:
  attach      介入到一个正在运行的容器
  build       根据 Dockerfile 构建一个镜像
  commit      根据容器的更改创建一个新的镜像
  cp          在本地文件系统与容器中复制 文件/文件夹
  create      创建一个新容器
  exec        在容器中执行一条命令
  images      列出镜像
  kill        杀死一个或多个正在运行的容器    
  logs        取得容器的日志
  pause       暂停一个或多个容器的所有进程
  ps          列出所有容器
  pull        拉取一个镜像或仓库到 registry
  push        推送一个镜像或仓库到 registry
  rename      重命名一个容器
  restart     重新启动一个或多个容器
  rm          删除一个或多个容器
  rmi         删除一个或多个镜像
  run         在一个新的容器中执行一条命令
  search      在 Docker Hub 中搜索镜像
  start       启动一个或多个已经停止运行的容器
  stats       显示一个容器的实时资源占用
  stop        停止一个或多个正在运行的容器
  tag         为镜像创建一个新的标签
  top         显示一个容器内的所有进程
  unpause     恢复一个或多个容器内所有被暂停的进程

Terdapat lebih banyak pilihan yang kaya dalam subperintah, yang boleh dilihat menggunakan DOcker COMMAND --help. Contohnya:

# larian buruh pelabuhan --tolong

Penggunaan docker dalam amalan

Seterusnya, saya akan menggunakan docker untuk menggunakan pelayan Nginx sebagai contoh. Untuk membuat bekas, kita mesti mempunyai imej yang digunakan untuk mencipta bekas itu. Cari imej berkaitan nginx dalam hab docker.

# docker search nginx
NAME                                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                                                  Official build of Nginx.                        6959      [OK]
jwilder/nginx-proxy                                    Automated Nginx reverse proxy for docker c...   1134                 [OK]
richarvey/nginx-php-fpm                                Container running Nginx + PHP-FPM capable ...   452                  [OK]
...
...

Tarik gambar rasmi Gambar tidak rasmi di atas adalah gambar yang dibuat oleh pengguna mengikut keperluan sendiri untuk kemudahan semua.

# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
afeb2bfd31c0: Pull complete
7ff5d10493db: Downloading [===============>                                   ] 6.651 MB/21.87 MB
d2562f1ae1d0: Download complete

By the way, imej docker disimpan dalam lapisan, jadi imej nginx di atas mempunyai 3 lapisan Selain itu, setiap kali imej baru dibuat berdasarkan bekas baru, satu lapisan akan ditambah pada imej.
Seterusnya, gunakan imej ini untuk memulakan bekas baharu secara langsung:

# docker run --name my-nginx -d -p 8080:80 nginx

Pada masa ini, masukkan: http://localhost:8080/ dalam penyemak imbas untuk mengakses nginx. Penjelasan parameter:

  • --nama Beri nama bekas
  • Sintaks parameter
  • -p ialah -p port hos:port kontena; -p 8080:80 mengikat port 8080 pada hos ke port 80 pada bekas, jadi mengakses port 8080 pada hos sebenarnya mengakses port 80 bekas nginx
  • -d menjalankan bekas di latar belakang

Kemudian mari kita lihat contoh yang lebih kompleks:

# docker run --name my-nginx \ 
    -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro \
    -v /some/html:/usr/share/nginx/html:ro \
    -p 8080:80 \
    -d nginx

Contoh ini mempunyai parameter tambahan -v Fungsi parameter ini adalah untuk melekapkan fail atau folder tempatan ke dalam bekas. Ro atau rw terakhir mengawal sama ada pelekap boleh ditulis.

  • -v sintaks parameter ialah -v host dir:container dir[:ro|rw]

Arahan di atas melekapkan fail konfigurasi nginx.conf dalam fail setempat ke bekas, dan juga melekapkan halaman statik untuk dipaparkan pada bekas. Nota: Selepas bekas melaksanakan arahan, apabila arahan tamat, bekas itu juga akan tamat.

Seterusnya mari kita lihat arahan docker yang lain.

Lihat semua bekas yang sedang berjalan:

# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
1fe91b5a4cd4        nginx               "nginx -g 'daemon ..."   39 minutes ago      Up 39 minutes       0.0.0.0:8080->80/tcp   my-nginx
# docker ps -a ### 列出包括未运行的容器

Lihat log bekas berjalan:

# docker logs my-nginx
172.17.0.1 - - [05/Oct/2017:07:31:11 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" "-"
2017/10/05 07:31:11 [error] 7#7: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "localhost:8080"

Mulakan semula bekas:

# docker restart my-nginx
my-nginx

Berhenti menjalankan bekas:

# docker stop my-nginx
my-nginx
# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Mulakan bekas sedia ada:

# docker start my-nginx
my-nginx
# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
1fe91b5a4cd4        nginx               "nginx -g 'daemon ..."   50 minutes ago      Up 3 seconds        0.0.0.0:8080->80/tcp   my-nginx

Bunuh bekas yang sedang berjalan terus:

# docker kill my-nginx

Namakan semula bekas:

# docker rename my-nginx new-nginx

Padam bekas:

# docker rm new-nginx

Lihat semua imej mesin ini:

# docker imags

Buat imej menggunakan bekas sedia ada:

# docker commit -m "nothing changed" my-nginx my-nginx-image
sha256:f02483cdb842a0dc1730fe2c653603fa3271e71c31dbb442caccd7ad64860350
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
my-nginx-image      latest              f02483cdb842        6 seconds ago       108 MB
nginx               latest              da5939581ac8        3 weeks ago         108 MB

Buat bekas menggunakan imej yang kami cipta sendiri:

# docker run --name test -d -p 8081:80 my-nginx-image
12ba86eabdef0121d875bdb547f1101d4eb54ff7cb36e20214fb1388659af83d
# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
12ba86eabdef        my-nginx-image      "nginx -g 'daemon ..."   7 seconds ago       Up 5 seconds        0.0.0.0:8081->80/tcp   test
299f4ede9e79        nginx               "nginx -g 'daemon ..."   11 minutes ago      Up 11 minutes       0.0.0.0:8080->80/tcp   my-nginx

Jika arahan permulaan bekas yang kita gunakan adalah shell, maka kita boleh menggunakan arahan attach untuk campur tangan dalam bekas, sama seperti kita menggunakan ssh untuk menyambung ke pelayan.

# docker attach some-container

Mulakan shell interaktif secara langsung apabila mencipta bekas, dan padamkan bekas secara automatik selepas keluar:

# docker run -it --rm  centos
Ringkasan

Artikel ini memperkenalkan penggunaan mudah docker, dan juga memberikan contoh praktikal untuk menunjukkan pelbagai operasi arahan docker. Sebagai artikel permulaan cepat, artikel ini agak mudah Banyak perkara konsep memerlukan membaca maklumat lain untuk memahami, tetapi selepas membaca artikel ini, anda harus mempunyai keupayaan asas untuk menggunakan docker. Di samping itu, artikel seterusnya harus menulis tentang Dockerfile dan docker-compose.

Atas ialah kandungan terperinci Mulakan dengan Docker dalam masa lima minit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:linuxprobe.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam