服務計算:容器化技術
- 1:Docker安裝:
-
- 1.1解除安裝舊版本的docker:
- 2.1:支援使用https協定的倉庫:
- 2.2 添加GPG key:
- 2.3:添加docker鏡像源:
- 2.4安裝指定版本的docker-ce:
- 2.5設定docker啟動參數:
- 2.6檢查docker的安裝:
- 3:Docker基本操作:
-
- 3.1 運作鏡像:
- 3.2基本操作:
- 4:MySQL與容器化
-
- 4.1拉取鏡像:
- 4.2配置容器建構檔案Dockerfile
- 4.3 使用MySQL容器:
- 4.4檢視資料庫檔案:
- 4.5volume建立卷并挂載:
- 5:Docker compose 多容器自動化部署:
-
- 5.1:下載下傳docker compose:
- 6:容器監控與日記:
- 7:Dockers容器化部署:
-
- 7.1編寫go程式和編譯:
- 7.2 運作鏡像ubuntu
- 7.3在容器中執行檔案:
- 7.4将容器儲存為鏡像:
- 7.5 将鏡像打包:
- 7.6本地導入鏡像包:
1:Docker安裝:
1.1解除安裝舊版本的docker:
sudo apt-get remove docker docker-engine docker.io containerd runc
- 同時還需要解除安裝Docker Engine和删除以前的配置檔案、容器和卷等等:
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/systemd/system/docker.service.d
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SMzETO0QTM5IjMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2.1:支援使用https協定的倉庫:
- 更新apt 包以及安裝包使得apt指令可以使用來自https的源倉庫:
$ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
2.2 添加GPG key:
官方:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
驗證密鑰:
sudo apt-key fingerprint 0EBFCD88
如果通路官方的網站不穩定,使用阿裡雲的:
$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
2.3:添加docker鏡像源:
- 建議使用阿裡雲的鏡像源:
$ sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable"
- 官方的鏡像源如下:
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
2.4安裝指定版本的docker-ce:
- 1:檢視可用版本:
apt-cache madison docker-ce
- 2:選擇安裝版本18.03.1:
$ sudo apt-get install -y docker-ce=18.03.1ce3-0~ubuntu
- 3:啟動并設定開機自啟動docker:
$ sudo systemctl enable docker && sudo systemctl start docker
- 4:将目前登入使用者添加入docker使用者組中:
$ sudo usermod -aG docker yymy
- 5:運作鏡像hello-world以檢測docker是否成功安裝:成功運作:
sudo docker run hello-world
1:
2:
3:
4:
5:
2.5設定docker啟動參數:
- 設定阿裡雲鏡像庫加速dockerhub的鏡像。國内通路dockerhub不穩定,将對dockerhub的鏡像拉取代理到阿裡雲鏡像庫
- 配上1.3.2的禁用iptables的設定
- 如果想讓podIP可路由的話,設定docker不再對podIP做MASQUERADE,否則docker會将podIP這個源位址SNAT成nodeIP
- 設定docker存儲驅動為overlay2(需要linux kernel版本在4.0以上,docker版本大于1.12)
- 根據業務規劃修改容器執行個體存儲根路徑(預設路徑是/var/lib/docker)
配置如下:
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":[
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"iptables": false,
"ip-masq": false,
"storage-driver": "overlay2",
"graph": "/home/yymy/docker"
}
EOF
$ sudo systemctl restart docker
2.6檢查docker的安裝:
3:Docker基本操作:
3.1 運作鏡像:
- 運作一個簡易的ubuntu系統鏡像:
- it 參數,通過終端與程序(容器)互動,stdin,stdout,stderr定向到 TTY
- 通過指令exit退出
docker run -it ubuntu bash
3.2基本操作:
1:顯示本地鏡像庫内容:
docker images
2:獲得幫助:
docker help
3:顯示運作中的容器:
docker ps
4:顯示所有的容器(包括已停止)
docker ps -a
5:删除鏡像:
docker rmi
6: 删除容器:
docker rm container-id/name
7: 重新開機容器:
docker restart container-id/name
8:停止容器:
docker stop container-id
4:MySQL與容器化
4.1拉取鏡像:
使用如下指令拉取,可以看到成功拉到本地:
docker pull mysql:5.7
4.2配置容器建構檔案Dockerfile
- 1:建立檔案dockerfile:
mkdir /home/yymy/docker &&cd docker
gedit dockerfile
- 2:錄入如下内容:
FROM ubuntu ENTRYPOINT ["top", "-b"] CMD ["-c"]
- 3:在該目錄下建構鏡像:
sudo doker build -t hello .
- 4:運作鏡像:
docker run -it --rm hello -H
1:
2:
4.3 使用MySQL容器:
1:啟動伺服器:
sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
-p:端口映射。将容器的3306端口映射到主控端的3306端口。[主控端]:[容器]
-e:設定環境變量。這裡是設定root賬号的密碼為root
–name:将容器命名為mysql2
2:啟動MySQL用戶端:
dockerrun -it --net host mysql:5.7 “sh”
mysql -h127.0.0.b1 -P3306 -uroot-proot
-it 等價于 -i -t ,表示使用目前 stdin 和 stdout 作為該程序的 io
–rm , 當該程序結束時,自動清理該容器的檔案系統空間
–net host,表示容器使用目前主機的網絡環境
-
3:mysql用戶端基本操作:
建立資料庫:
create database test;
使用資料庫:
use test;
展示資料庫的表:
show tables;
建立表:
CREATE TABLE
(… )tablename
4.4檢視資料庫檔案:
1:通過指令docker info,檢視如下條目可得到檔案儲存的相關資訊;
Docker Root Dir: /home/yymy/docker
也就是說檔案是挂載在路徑/home/yymy/docker下:
運作容器,
docker restart mysql2
docker exec -it mysql2 bash
檢視檔案:
ls /var/lib/mysql
2:删除不使用的容器和卷:
dockercontainer prune -f
dockervolume prune
dockervolume ls
![]()
服務計算:容器化技術1:Docker安裝:3:Docker基本操作:4:MySQL與容器化4.5volume建立卷并挂載:5:Docker compose 多容器自動化部署:6:容器監控與日記:7:Dockers容器化部署:
4.5volume建立卷并挂載:
建立卷mydb:
docker rm $(docker ps -a -q) -f -v
dockervolume create mydb
再次運作,挂載了新建立的卷
docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=root -v mydb:/var/lib/mysql -d mysql:5.7
檢查卷,發現新建立了卷mydb,并挂載在/home/yymy/docker/volumes下面:
docker volume ls
1:
2
3:
5:Docker compose 多容器自動化部署:
5.1:下載下傳docker compose:
-
Linux 上我們可以從 Github 上下載下傳它的二進制包來使用,最新發行的版本位址:https://github.com/docker/compose/releases。
運作以下指令以下載下傳 Docker Compose 的目前穩定版本:
sudo curl -L “https://github.com/docker/compose/releases/download/1.24.1/docker-compose- ( u n a m e − s ) − (uname -s)- (uname−s)−(uname -m)” -o /usr/local/bin/docker-compose
要安裝其他版本的 Compose,請替換 1.24.1。将可執行權限應用于二進制檔案:
sudo chmod +x /usr/local/bin/docker-compose
建立軟鍊:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
測試是否安裝成功:
$ docker-compose --version
編寫yml檔案:
version: ‘3.1’
services:
db:
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
adminer:
image: adminer
restart: always
ports:
-8080:8080
1:
2:
6:容器監控與日記:
1:檢查docker的狀态:
docker info
2:檢查版本
docker info --format{{.ServerVersion}}
檢查容器狀态:
docker inspect container-name
docker inspect -f ‘{{.NetworkSettings.IPAddress}}’ id
7:Dockers容器化部署:
7.1編寫go程式和編譯:
在路徑:/home/yymy/gowork/test/test.go編寫一個簡單代碼:
生成可執行檔案test:
go build test.go
7.2 運作鏡像ubuntu
檢視是否有該鏡像以及鏡像id
docker images
docker ps -a
運作,生成容器godocker;
docker run -p 8888:80 --name godocker -e ENV=“dev” -it f643c /bin/bash
7.3在容器中執行檔案:
1:複制檔案到容器中:
docker cp /home/yymy/gowork/test/test godocker:/var
2:重新運作容器:并執行可執行檔案;輸出了資訊
docker restart godocker
docker exec -it godocker /bin/bash
./var/test
7.4将容器儲存為鏡像:
使用指令docker commit可以将容器轉化為鏡像:
docker commit -m “my godocker” -a “yymy” 44b78992eb61 yymy/test-go:1.0.0
-m 送出的附加資訊
-a 使用者
檢視鏡像,可以看到新生成的鏡像:
docker images![]()
服務計算:容器化技術1:Docker安裝:3:Docker基本操作:4:MySQL與容器化4.5volume建立卷并挂載:5:Docker compose 多容器自動化部署:6:容器監控與日記:7:Dockers容器化部署:
7.5 将鏡像打包:
使用如下指令進行打包,
-o為打包的輸出路徑
docker save -o /home/yymy/docker/test-go.v1.0.0.tar 913945e94e2e
可以看到成功輸出鏡像的打封包件:
7.6本地導入鏡像包:
1: 先删除正在運作的容器和鏡像:
docker stop
docker rm
docker rmi
2:導入鏡像:
docker load < /home/yymy/docker/test-go.v1.0.0.tar
docker images
3:再次運作可執行檔案
docker run -it 913945e994e2e /bin/bash
./var/test
![]()
服務計算:容器化技術1:Docker安裝:3:Docker基本操作:4:MySQL與容器化4.5volume建立卷并挂載:5:Docker compose 多容器自動化部署:6:容器監控與日記:7:Dockers容器化部署: