一、硬件环境要求
CPU(推荐1C+)
内存(推荐2G+)
硬盘(推荐40GB+)
二、安装docker
官方安装参考:https://docs.docker.com/engine/install/centos/
#安装辅助工具 sudo yum install -y yum-utils #准备repo文件 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
三、启动docker
#启动docker
systemctl start docker
#查看docker状态
systemctl status docker
#关闭docker
systemctl stop docker
四、设置阿里云镜像
#通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://y8yh50dy.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
五、镜像管理
#查看docker镜像 docker images #删除docker镜像 docker rmi 镜像ID // 批量删除 docker rmi $(docker images -a -q) #获取docker镜像 // docker官方仓库:http://hub.docker.com docker pull 镜像名称[:版本号]
六、容器管理
#查看docker容器 docker ps // 显示运行的容器,-a 显示所有的容器 #运行容器 docker run -dp 宿主机端口:docker内部端口 --name 容器名称 镜像名称 // 例如:docker -dp 8080:8080 --name tomcat-8080 tomcat #停止容器 docker stop 容器ID|容器名称 // 批量停止:docker stop $(docker ps -a -q) #启动容器 docker start容器ID|容器名称 #删除容器 docker rm 容器ID|容器名称 // 批量停止:docker rm $(docker ps -a -q)
七、进入容器
#进入容器 docker exec -it 容器名称 bash
#宿主机与容器之间拷贝文件
docker cp 容器名称:容器路径 宿主机路径 // 从容器拷贝到宿主机
docker cp 宿主机路径 容器名称:容器路径 // 从宿主机拷贝到容器
#查看容器日志
docker logs 容器名称|容器ID // 查看容器运行日志
docker logs --tail=10 容器名称|容器ID // 查看最后10行的运行日志
docker logs -f --tail=10 容器名称|容器ID // -f 查看实时日志
八、创建数据卷
#查看数据卷 docker volume ls #删除数据卷 docker volume rm 数据卷 #创建数据卷 docker volume create 数据卷 #应用数据卷 docker run -v 路径:容器内路径 镜像ID // 直接指定一个路径作为数据卷的存储位置 docker run -v 数据圈名称:容器内路径 镜像ID // 如果数据卷不存在,docker会帮你自动创建 #示例: docker run -dp 8080:8080 --name tomcat-8080 -v /project/docker-volume:usr/local/tomcat/webapps/exam tomcat #centos 复制 cp -r from-path to-path // -r 复制
九、安装nginx
#安装nginx docker pull nginx #运行nginx docker run -dp 80:80 --name nginx80 nginx #创建数据卷目录 mkdir /project/nginx/html mkdir /project/nginx/conf mkdir /project/nginx/logs #备份文件nginx默认配置文件 docker cp nginx80:/etc/nginx/nginx.conf /project/nginx/conf docker cp nginx80:/etc/nginx/conf.d /project/nginx/conf #运行nginx docker run -dp 80:80 --name nginx80 -v /project/nginx/html:/usr/share/nginx/html -v /project/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /project/nginx/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /project/nginx/logs:/var/log/nginx nginx #nginx 设置集群 vi /project/nginx/conf/nginx.conf #添加集群配置 // 在#gzip on;下一行加入 upstream nginxCluster{ server 192.168.1.216:8080 weight=5; server 192.168.1.216:8081 weight=5; server 192.168.1.216:8082 weight=5; server 192.168.1.216:8083 weight=5; server 192.168.1.216:8086 backup; } vi /project/nginx/conf/conf.d/default.conf #添加集群配置 location / { root html; index index.jsp; proxy_pass http://nginxCluster; // 增加此行配置 } #重启nginx docker restart 容器名称 #设置防火墙端口 firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload
十、安装mysql
#安装mysql docker pull mysql:5.6 #运行mysql docker run -dp 3306:3306 --name msyql5.6 -e MYSQL_ROOT_PASSWORD='123456' mysql:5.6 #mysql 设置外部访问 docker exec -it msyql5.6 bash mysql -uroot -p GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; FLUSH PRIVILEGES; #设置防火墙端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload
安装本地指南
官方参考:https://docs.docker.com/get-started/
#安装指南 docker run -dp 80:80 docker/getting-started // 端口说明 HostPort:ContainerPort
#访问地址
http://IP
安装指定的TODO List项目
目录下增加Dockerfile文件,内容添加如下:
FROM node:12-alpine RUN apk add --no-cache python g++ make WORKDIR /app COPY . . RUN yarn install --production CMD ["node", "src/index.js"]
在项目目录下,执行命令:
#编译(耗时25分钟,安装gcc、g++、python均耗时8分钟以上) docker build -t getting-started . #运行 docker run -dp 3000:3000 getting-started // 端口说明 HostPort:ContainerPort
#访问
http://IP:3000
停止与删除
#查看docker进程
docker ps
#查看docker所有镜像列表
docker images -a
#停止指定容器(根据名称) docker stop $(docker ps -q --filter name=image-name) #删除指定容器(根据名称) docker rm $(docker ps -q --filter name=image-name) #停止所有容器 docker stop $(docker ps -a -q) #删除所有容器 docker rm $(docker ps -a -q) # 1.13版本以上提供prune系统工具 #系统清理 docker system prune #组件清理 docker container prune docker image prune docker network prune docker volume prune
-- over- -