一、安装docker及基础命令
1.centos系统安装https://www.runoob.com/docker/ubuntu-docker-install.html
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl start docker
docker info
systemctl enable docker
5.重启服务
systemctl restart docker
二、docker阿里云加速
sudo mkdir -p /etc/docker
{
"registry-mirrors": ["https://21pdv2qz.mirror.aliyuncs.com"]
}
systemctl restart docker
docker info
三、下载镜像
1.mysql
docker pull mysql:5.7.32
//启动mysql服务,后台运行,指定root用户密码为123456,指定容器名称为mysql
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7.32
//启动mysql服务,后台运行,指定root用户密码为123456,指定容器名称为mysql5.7.32,设置数据卷
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql5.7.32 -v mysqldata:/var/lib/mysql -v mysqlconfig:/etc/mysql mysql:5.7.32
2.redis
docker pull redis:5
//启动redis服务,拷贝配置文件
docker run --name redis-test -p 6379:6379 -d redis:5
docker cp 容器ID:/etc/nginx/nginx.conf /www/docker/nginx/conf/nginx.conf
//启动redis服务,后台运行,指定端口,指定容器名称为redis,设置数据卷
docker run -d -p 6379:6379 --name redis -v redisconf:/etc/redis/redis.conf -v redisdata:/data redis:5 redis-server /etc/redis/redis.conf
docker run -d -p 6379:6379 --name redis -v /www/docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /www/docker/redis/data:/data redis:5 redis-server /etc/redis/redis.conf
3.nginx
docker pull nginx
//启动nginx服务,拷贝配置文件
docker run --name nginx-test -p 80:80 -d nginx
docker cp 容器ID:/etc/nginx/nginx.conf /www/docker/nginx/conf/nginx.conf
//启动nginx服务,后台运行,指定端口,指定容器名称为nginx ,设置数据卷
docker run -d -p 9000:80 --name nginx -v /www/docker/nginx/dist:/usr/share/nginx/html -v /www/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /www/docker/nginx/logs:/var/log/nginx nginx
四、Dockerfile
官方说明:https://docs.docker.com/engine/reference/builder/
保留字 | 作用 |
---|---|
FROM | 当前镜像是基于哪个镜像的 第一个指令必须是FROM |
MAINTAINER | 镜像维护者的姓名和邮箱地址 |
RUN | 构建镜像时需要运行的指令 |
EXPOSE | 当前容器对外暴露出的端口号 |
WORKDIR | 指定在创建容器后,终端默认登录进来的工作目录,一个落脚点 |
ENV | 用来在构建镜像过程中设置环境变量 |
ADD | 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包 |
COPY | 类似于ADD,拷贝文件和目录到镜像中 将从构建上下文目录中<原路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置 |
VOLUME | 容器数据卷,用于数据保存和持久化工作 |
CMD | 指定一个容器启动时要运行的命令 Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换 |
ENTRYPOINT | 指定一个容器启动时要运行的命令 ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及其参数 |
FROM openjdk:8
WORKDIR /demo
ADD demo.jar /demo
EXPOSE 8989
ENTRYPOINT ["java","-jar"]
CMD ["demo.jar"]
五、compose使用
1.安装
sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
#测试安装是否成功
docker-compose --version
2.docker-compose.yml
创建hello网桥
docker network create -d bridge hello
FROM openjdk:8-jre
WORKDIR /api
EXPOSE 8080
CMD ["java", "-jar", "-Dserver.port=8080", "/api/dome.jar"]
version: "3"
services:
apiserver:
build:
context: ./dockerFiles/images/jdk
container_name: 'apiserver'
restart: 'always'
ports:
- "8080:8080"
environment:
TZ: "Asia/Shanghai"
volumes:
- ./jar/opt:/api/opt #注意挂载时的日志路径和上传文件路径
- ./jar:/api
networks:
- hello
depends_on: # 容器依赖
- redis
- mysql
mysql:
image: mysql:5.7.32
container_name: mysql
restart: 'always'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # 设置utf8字符集
ports:
- "3306:3306"
volumes:
- mysqldata3:/var/lib/mysql
- mysqlconf3:/etc/mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
- TZ=Asia/Shanghai
command: --lower-case-table-names=1 #表示表名不区分大小写
networks:
- hello
redis:
image: redis:5.0.10
container_name: redis
restart: 'always'
ports:
- "6379:6379"
environment:
TZ: "Asia/Shanghai"
volumes:
- redisdata:/data
networks:
- hello
command: "redis-server --appendonly yes" #run 镜像之后用来覆盖容器内容默认命令
nginx:
image: nginx:1.18.0
container_name: nginx
restart: 'always'
ports:
- 9998:80
- 3000:3000
volumes:
- ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf # 配置文件
#- ./nginx/cert/:/etc/cert/ # ssl证书
#- ./nginx/html/:/usr/share/nginx/html # 默认显示的index网页
- ./nginx/html/:/usr/share/nginx/weather
- ./nginx/logs/:/var/log/nginx/ # 日志文件
environment:
TZ: "Asia/Shanghai"
networks:
- hello
depends_on: # 容器依赖
- apiserver
volumes: #声明上面服务所使用的自动创建的卷名
mysqldata3:
mysqlconf3:
redisdata:
networks: #定义服务用到桥
hello: #定义上面的服务用到的网桥名称 默认创建就是 bridge
external:
true #使用外部指定网桥 注意:网桥必须存在
原文地址:https://blog.csdn.net/baidu_29609779/article/details/134662680
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_10391.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。