centos安装docker及常用命令
//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部署