Rumah >Tutorial sistem >LINUX >Mulakan dengan Docker dalam masa lima minit
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.
Gentoo
# emerge --ask docker
CentOS
# yum install docker-ce
Ubuntu
# apt-get install docker-ce
Lengkungan
# pacman -S dockerMulakan daemon buruh pelabuhan
# systemctl start dockerpengenalan 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 amalanSeterusnya, 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:
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.
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 centosRingkasan
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!