簡介
docker是為了簡化外網(wǎng)服務(wù)器軟件環(huán)境部署的工作。現(xiàn)在初淺的理解是领跛,可以在linux機器上通過docker單獨安裝mysql,nginx,應(yīng)用程序的也可以跑在一個docker之上。
Docker 包括三個基本概念:
- 鏡像(Image):Docker 鏡像(Image),就相當(dāng)于是一個 root 文件系統(tǒng)。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統(tǒng)的 root 文件系統(tǒng)涩金。
- 容器(Container):鏡像(Image)和容器(Container)的關(guān)系谱醇,就像是面向?qū)ο蟪绦蛟O(shè)計中的類和實例一樣,鏡像是靜態(tài)的定義步做,容器是鏡像運行時的實體副渴。容器可以被創(chuàng)建、啟動全度、停止煮剧、刪除、暫停等将鸵。
- 倉庫(Repository):倉庫可看著一個代碼控制中心勉盅,用來保存鏡像。
安裝
參考了騰訊在線實驗 菜鳥入門 可以很快速的將docker部署到你的服務(wù)器上顶掉。
- 可能需要卸載掉老的docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 設(shè)置倉庫
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce docker-ce-cli containerd.io
- 安裝
$ sudo yum install docker-ce docker-ce-cli containerd.io
安裝完成之后草娜,可以通過docker -v來查看當(dāng)前docker的版本信息。
基本操作
- 運行一個容器
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- 查詢?nèi)萜?/li>
docker ps -a
- 使用 docker start 啟動一個已停止的容器:
docker start b750bbbcfd88
- 后臺運行 (增加-d的指令)
docker run -itd --name ubuntu-test ubuntu /bin/bash
- 停止一個容器
docker stop <容器 ID>
- 進入容器
docker attach 如果從這個容器退出痒筒,會導(dǎo)致容器的停止宰闰。
docker exec:推薦大家使用 docker exec 命令,因為此退出容器終端簿透,不會導(dǎo)致容器的停止移袍。
docker attach 1e560fca3906
docker exec -it 243c32535da7 /bin/bash
- 導(dǎo)出和導(dǎo)入容器
docker export 1e560fca3906 > ubuntu.tar
- 導(dǎo)入容器快照
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
- 下面的命令可以清理掉所有處于終止?fàn)顟B(tài)的容器。
docker container prune
更多指令可以后續(xù)補充
安裝mysql
# 拉取mysql5.7版本
docker pull mysql:5.7 # 拉取 mysql 5.7
# 檢查版本
docker images
# 啟動mysql
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- -–name:容器名老充,此處命名為mysql
- -e:配置信息咐容,此處配置mysql的root用戶的登陸密碼
- -p:端口映射,此處映射 主機3306端口 到 容器的3306端口
- -d:源鏡像名蚂维,此處為 mysql:5.7
安裝nginx
# 拉取版本
docker pull nginx:latest
# 檢查版本
docker images
# 啟動docker中的nginx
docker run --name nginx-test -p 8080:80 -d nginx
- --name nginx-test:容器名稱。
- -p 8080:80: 端口進行映射路狮,將本地 8080 端口映射到容器內(nèi)部的 80 端口虫啥。
- -d nginx: 設(shè)置容器在在后臺一直運行。
可能需要去修改nginx里面的配置項目奄妨,我需要將這個服務(wù)器端口映射出來涂籽。
[docker 安裝nginx 并部署](https://blog.csdn.net/ddhsea/article/details/92203713。
里面有3個步驟
# 在自己目錄下創(chuàng)建這些文件夾
mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf
# 將容器中的nginx文件拷貝出來砸抛,通過docker ps出來實例編號评雌。
sudo docker cp 3bd71361a112:/etc/nginx/nginx.conf ~/nginx/conf
# 啟動的時候,綁定映射關(guān)系
docker run --name yzgmweb -d -p 35981:8088 \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf\
-v /root/nginx/www:/usr/share/nginx/html\
-v /root/nginx/logs:/var/log/nginx -d docker.io/nginx
- -p 8080:80: 端口進行映射直焙,將本地 8080 端口映射到容器內(nèi)部的 80 端口景东。
- -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 將本地文件映射到容器內(nèi)部。
擴展
后續(xù)如果有時間奔誓,可以再去研究一下 docker compose & swarm斤吐;dockerfile之類的東西。再做記錄。