一、Docker安装
移除旧版本docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
配置docker yum源
sudo yum install -y yum-utils
配置阿里云docker仓库
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 最新 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动& 开机启动docker
systemctl enable docker --now
配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
二、Docker常用命令
镜像相关
检索:docker search
下载:docker pull
列表:docker images
删除:docker rmi
容器
运行:docker run
查看:docker ps
停止:docker stop
启动:docker start
重启:docker restart
状态:docker status
日志:docker logs
进入:docker exec
删除:docker rm
重命名:docker rename
分享
提交:cocker commit
保存:docker save
加载:docker load
登录:docker login
命名:docker tag
推送:docker push
#查看运行中的容器
docker ps
#查看所有容器
docker ps -a
#搜索镜像
docker search nginx
#下载镜像
docker pull nginx
#下载指定版本镜像
docker pull nginx:1.26.0
#查看所有镜像
docker images
#删除指定id的镜像
docker rmi e784f4560448
#运行一个新容器
docker run nginx
#强制删除指定容器
docker rm -f 592
# 后台启动并暴露端口
docker run -d --name mynginx -p 80:80 nginx
# 进入容器内部
docker exec -it mynginx /bin/bash
# 登录 docker hub
docker login
# 重新给镜像打标签
docker tag mynginx:v1.0 marlon/mynginx:v1.0
# 推送镜像
docker push marlon/mynginx:v1.0
#自定义网络
docker network create mynet
#批量删除运行的容器
docker rm -f $(docker ps -aq)
#批量删除容器卷
docker volume rm $(docker volume ls -q)
三、安装Mysql
docker run -d -p 3306:3306 \
-v /app/myconf:/etc/mysql/conf.d \
-v /app/mydata:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=marlon \
mysql:8.0
四、安装Nginx
docker run -d -p 80:80 -v 外部目录:内部目录 --name 名称 镜像名称
docker run -d -p 3000:80 \
-v /app/mynginx/html:/usr/share/nginx/html \
-v ngconf:/etc/nginx \
--name nginx\
nginx
卷映射
-v ngconf:/etc/nginx 默认位置在/var/lib/docker/volumes/
查看卷位置
docker volume inspect 卷name
eg:
docker volume inspect ngconf
五、安装redis主从
下载bitnami镜像
docker pull bitnami/redis:latest
启动master服务
docker run -d -p 6379:6379 -v /app/redisDataM:/bitnami/redis/data -e REDIS_REPLICATION_MODE=master -e REDIS_PASSWORD=123456 --network mynet --name redis-master bitnami/redis
可能会启动不成功,不成功的原因是因为文件夹权限的问题。
授权文件夹最高权限
chmod -R 777 redisDataM
mkdir redisDataS
chmod -R 777 redisDataS
重新启动没有启动成功的redis-master服务
docker restart redis-master
启动redis-slave服务
docker run -d -p 6380:6379 -v /app/redisDataS:/bitnami/redis/data -e REDIS_REPLICATION_MODE=slave -e REDIS_MASTER_HOST=redis01 -e REDIS_MASTER_PORT_NUMBER=6379 -e REDIS_MASTER_PASSWORD=123456 -e REDIS_PASSWORD=123456 --network mynet --name redis-slave bitnami/redis
六、根据dockerfile文件构建镜像
命令指南
- FROM:指定镜像基础环境
- RUN:运行自定义命令
- CMD:容器启动命令或参数
- LABEL:自定义标签
- EXPOSE:指定暴漏端口
- ENV:环境变量
- ADD:添加文件到镜像
- COPY:赋值文件到镜像
- ENTRAYPOINT:容器固定启动命令
- VOLUME:数据卷
- USER:指定用户和用户组
- WORKDIR:指定默认工作目录
- ARG:指定构建参数
上传jar包,并在同级目录下新建Dockerfile文件
vi Dockerfile
FROM openjdk:17
LABEL author=marlon
EXPOSE 9000
COPY cp-system-start-3.7.0.jar /app/cp-system-start-3.7.0.jar
ENTRYPOINT ["java","-jar","/app/cp-system-start-3.7.0.jar"]
按esc并输入:wq回车保存文件
制作镜像
docker build -f Dockerfile -t cp-system:v1.0 .
运行制作的镜像
docker run -d -p 9000:9000 cp-system:v1.0
查看镜像是否启动成功
docker ps -a