10分鐘,快速學會docker
- 1 總體框圖
- 2 快速入門
-
- 2.1 擷取鏡像
- 2.2 檢視本地鏡像
- 2.3 運作鏡像
- 2.4 檢視正在運作的容器
- 2.5 修改容器
- 2.6 删除容器
- 2.7 送出容器
- 2.8 通過dockerfile建構鏡像跑成容器
- 2.9 儲存檔案和重新加載
- 2.10 其他摘抄
-
- 小狐狸的筆記
- 入門操作
- 3 多容器部署
-
- 3.1 運作nginx容器,并檢視ip
- 3.2 運作alpine容器通過curl通路nginx
- 3.3 通過--link參數
- 3.4 三個容器的組織nginx、php、mysql
- 3.5 docker-compose
- 3.6 代碼解析:
- 4 參考
1 總體框圖
2 快速入門
2.1 擷取鏡像
docker pull nginx
docker pull nginx:latest
2.2 檢視本地鏡像
docker images
2.3 運作鏡像
docker run -d -p 80:80 nginx
-d 背景運作
-p 内外端口映射
2.4 檢視正在運作的容器
docker ps
2.5 修改容器
docker exec -it xxxx bash
-it 接容器id
xxxx是容器ID的代号前兩位
2.6 删除容器
docker rm -f xxx
xxx為容器ID
2.7 送出容器
docker commit xxx name
xxx為容器ID
2.8 通過dockerfile建構鏡像跑成容器
- 建立dockerfile檔案(寫法自行查閱官方文檔)
- 然後在目前目錄建立index.html
- build打包成鏡像,此時通過鏡像運作容器,nginx的index檔案顯示為上述内容
2.9 儲存檔案和重新加載
儲存
docker save name(鏡像名稱) > name(tar檔案名稱).tar
加載
docker load < name(tar檔案名稱).tar
2.10 其他摘抄
小狐狸的筆記
安裝和常用CLI:
添加阿裡雲鏡像:sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝指令:sudo yum install -y docker-ce docker-ce-cli containerd.io
啟動指令:sudo systemctl start docker
添加目前使用者到docker使用者組:sudo usermod -aG docker $USER (需登出),newgrp docker (立即生效)
Helloworld:docker run hello-world (本地沒有鏡像的話會自動從遠端倉庫pull)
pull nginx 鏡像:docker pull nginx(等效于nginx:latest)
運作:docker run -【d】(背景運作不阻塞shell) 【-p 80:80】(指定容器端口映射,内部:外部) nginx
檢視正在運作:docker ps
删除容器:docker rm -f <container id(不用打全,字首區分)>
進入bash:docker exec -it <container id(不用打全,字首區分)> bash
commit鏡像:docker commit <container id(不用打全,字首區分)> <name>
檢視鏡像清單:docker images (剛才commit的鏡像)
使用運作剛才commit的鏡像:docker run -d <name>
使用Dockerfile建構鏡像:docker build -t <name> <存放Dockerfile的檔案夾>
删除鏡像:docker rmi <name>
儲存為tar:docker save <name> > <tar name>
從tar加載:docker load < <tar name>
一些啟動參數:
背景運作容器:-d
容器内外端口映射:-p 内部端口号:外部端口号
目錄映射:-v 'dir name' : <dir>
指定映像版本:<name>:<ver>
入門操作
入門操作
增
删
改
查
3 多容器部署
3.1 運作nginx容器,并檢視ip
docker run -d -p 80:80 --name mynginx nginx
docker ps
docker exec -it mynginx bash
cat /etc/hosts
172.17.0.2是容器的ip
然後我們退出(exit)然後又啟動一個新的容器
3.2 運作alpine容器通過curl通路nginx
docker run -dit alpine
docker exec -it xxxx(容器id) sh
apk add curl
curl 172.17.0.2
3.3 通過–link參數
--link
把另一個容器映射到本容器裡面(通過修改/etc/hosts檔案)
3.4 三個容器的組織nginx、php、mysql
注意:建立順序需要先mysql,然後啟動php的時候link參數映射到mysql,同理類推~
這樣對運維來說太麻煩了,有什麼好方法嗎?docker-compose
3.5 docker-compose
視訊位址:https://www.bilibili.com/video/BV1Wt411w72h?from=search&seid=3688284699898465652
項目分為三個子產品
- nginx
- php
- mysql
目錄結構如下
使用方式
然後就啟動完成了, 如下圖
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
25b3b7498399 nginx:alpine "nginx -g 'daemon of…" 50 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp docker-compose-demo-1_nginx_1
c8aa834d8a6f devilbox/php-fpm:8.0-work-0.106 "/docker-entrypoint.…" 50 seconds ago Up 3 seconds 9000/tcp docker-compose-demo-1_php_1
de051f9b9569 mysql:5.6 "docker-entrypoint.s…" 50 seconds ago Up 3 seconds 3306/tcp docker-compose-demo-1_mysql_1
3.6 代碼解析:
-
建立倆檔案夾
conf
html
- 然後在conf/下面建立nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
}
- 然後寫docker-compose.yml
version: "3"
services:
nginx:
image: nginx:alpine
ports:
- 80:80
volumes:
- ./html:/usr/share/nginx/html
- ./conf/nginx.conf:/etc/nginx/nginx.conf
php:
image: devilbox/php-fpm:8.0-work-0.106
volumes:
- ./html:/var/www/html
mysql:
image: mysql:5.6
environment:
- MYSQL_ROOT_PASSWORD=123456
- 在該目錄下運作docker-compose up -d (-d 背景啟動)
流程:
4 參考
【docker入門】10分鐘,快速學會docker
【docker入門2】實戰~如何組織一個多容器項目docker-compose
【docker compose示範程式】