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部署

https://juejin.im/post/5c4a6fcd518825469414e062#heading-28