//1.刪除舊版本docker sudo yum remove docker //2.安裝必須的依賴 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 //添加docker-ce的源 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum-config-manager --add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新 yum 緩存
# yum makecache fast
//3.安裝docker-ce
sudo yum install docker-ce docker-ce-cli containerd.io
//運行docker systemctl start docker //查看狀態 systemctl status docker
//修改docker下載包的源 vi /etc/docker/daemon.json { "registry-mirrors":["http://registry.docker-cn.com"] } //保存后重啟docker systemctl daemon-reload systemctl restart docker
2.常用命令
//復制docker容器內的數據 docker cp containerId:/var/jenkins_home /home/jenkins/data //查看容器參數 可以看mounts(看掛載的volumes) NetworkSettings(port、Networks) docker inspect containerId
//查詢鏡像 docker search [name] //拉取鏡像 docker pull [name] //查詢所有鏡像 docker images //刪除鏡像 docker rmi [name] //修改鏡像名 docker tag docker.io/node node //啟動 # 運行並進入交互模式 docker run -it --name myjava java bash # 在后台運行 docker run -d --name myjava java //端口映射 -p docker run -it --name myjava -p 9000:8085 -p 9000:8086 java bash //目錄映射 docker run -it --name myjava -v /home/project:/soft --privileged docker.io/node bash
https://blog.csdn.net/docerce/article/details/79265858
-v 與--mount類似但是有區別
//進入后台運行的容器 docker exec -it name bash //自動重啟 docker run --restart=always -it --name myjava -p 9000:8085 -p 9000:8086 java bash //暫停容器 docker pause node //停止暫停容器 docker unpause node //停止容器 docker stop node //啟動容器 docker start -i node //查看容器 docker ps -a //導入鏡像 docker load < /home/node.tar.gz //導出鏡像 docker save > /home/node.tar.gz
//docker網段相關 //創建網段 docker network create net1 //查看網段信息 docker network inspect net1 //刪除網段信息 docker network rm net1
//查詢鏡像
https://blog.csdn.net/wos1002/article/details/78795459
//找出tag為<none>的images -q只返回imageID docker images -f "dangling=true" //根據repository名稱和tag模糊過濾,我驗證時,如果repository有/或小數點符號,通過*是無法匹配的 docker images --filter=reference='busy*:*libc'
3.dockerfile
//https://docs.docker.com/engine/reference/builder/#usage # build stage FROM node:10 as build-stage LABEL maintainer=brian@toimc.com # 創建一個工作目錄 WORKDIR /app COPY . . RUN yarn install --registry=https://registry.npm.taobao.org RUN npm run build # production stage FROM nginx:stable-alpine as production-stage COPY --from=build-stage /app/dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
docker build -t web-font:v1 .
docker docker run -it web-font:v1 bash
4.docker 基礎概念
Docker 中有三個核心概念:Image、Container、Repository。 Image: 有領“好人卡”傾向的廣大程序猿一定對 鏡像 的概念不會陌生。但和 windows 的那種 iso 鏡像相比,Docker 中的鏡像是分層的,
可復用的,而非簡單的一堆文件迭在一起(類似於一個壓縮包的源碼和一個 git 倉庫的區別)。 Container: 容器的存在離不開鏡像的支持,他是鏡像運行時的一個載體(類似於實例和類的關系)。依托 Docker 的虛擬化技術,
給容器創建了獨立的端口、進程、文件等“空間”,Container 就是一個與宿機隔離 “容器”。容器可宿主機之間可以進行 port、volumes、network 等的通信。 Repository: Docker 的倉庫和 git 的倉庫比較相似,擁有倉庫名、tag。在本地構建完鏡像之后,即可通過倉庫進行鏡像的分發。
常用的 Docker hub 有 https://hub.docker.com/ 、 https://cr.console.aliyun.com/ 等。
5.nginx運行
# 復制文件,將a.js復制到10.10.1.1的home目錄下,root是用戶名 scp ./a.js root@10.10.1.1:~/a.js # 從遠程復制文件到本地,也就是上面的命令反過來 scp root@10.10.1.1:~/b.js ./b.js # 復制文件夾到遠程 scp -r ./demo root@10.10.1.1:~/demo scp ~/Desktop/index.html penguin:~/docker-demo/nginx-html docker run -d --name nginx_p -p 8866:80 -v ~/docker-demo/nginx-html:/usr/share/nginx/html/ nginx
//nginx 默認配置在容器的 /etc/nginx/conf.d/defualt.conf
//配置里默認的根index.html /usr/share/nginx/html/index.html
參考:
前端領域的 Docker 與 Kubernetes
https://juejin.im/post/5dddd15b6fb9a071576dbd7a#heading-4
使用 docker-compose 構建你的項目
https://juejin.im/post/5e10163ce51d45410706539f#comment
Docker 部署 vue 項目
https://juejin.im/post/5cce4b1cf265da0373719819#heading-21
vue-cli3 項目從搭建優化到docker部署