1、通用
# 安装容器nginx
docker pull nginx
# 安装容器mysql
docker pull mysql
# 安装容器mysql 8.0版本
docker pull mysql:8.0
# 安装容器redis
docker pull redis
//删除docker上的镜像
docker rmi 7bb2586065cd(IMAGE ID)
# 创建名为demo的镜像
docker build -t demo .
# 删除镜像demo demo为containerId
docker image rm [demo]
# 删除镜像之前,需要先删除容器
docker rm -f [容器id]
# 删除容器之前,需要先暂停容器
docker stop [容器id]
# 命令用来展示所有运行中的容器
docker ps
# 命令是用来展示所有所有的容器,包括未运行的容器
docker ps -a
# 查看名叫openjdk容器的详细信息
docker inspect openjdk
# 查看容器mysql的日志
docker logs mysql:5.7
# 查看容器Id为 3cbfeef4b6ea 的日志
docker logs 3cbfeef4b6ea
# 查看容器Id为 3cbfeef4b6ea 的实时日志
docker logs -f 6fc72e2540ce
# 将docker容器中mysql:/etc/mysql/my.cnf拷贝到宿主机器的/command/mysql/conf/下。
docker cp mysql:/etc/mysql/my.cnf /command/mysql/conf/
# 重启docker中名为mysql的mysql容器
docker restart mysql
# 列出本地镜像
docker images
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
--format :指定返回值的模板文件;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。
2、nginx相关
# 临时建立一个名为temnginx的nginx
docker run --name tmpnginx -d nginx
# 进入 f2d77e2a3033 的容器
docker exec -it f2d77e2a3033 bash
# 退出容器
exit
快捷键:Ctrl+P+Q
# 拷贝 容器中的文件 到 对应宿主中
docker cp tmpnginx:/etc/nginx/. /data/nginx/conf
docker cp tmpnginx:/usr/share/nginx/html/. /data/nginx/html/
# 后台启动nginx 不会因为退出而停止nginx
docker-compose -f nginx.yml up -d
# 删除容器
docker rm -f baf42337637d
nginx.yml文件
version: '3.1'
services:
nginx:
image: nginx:latest
restart: always
container_name: nginx
hostname: nginx
ports:
- 80:80
- 443:443
volumes:
- /data/nginx/conf:/etc/nginx
- /data/nginx/logs:/var/log/nginx
- /data/nginx/html:/usr/share/nginx/html
3、redis相关 参考文章:docker-compose部署redis
a、redis.yml文件
version: '3'
services:
redis:
image: redis
container_name: redis
command: redis-server /usr/local/etc/redis/redis.conf
restart: always
volumes:
- /data/redis/data:/data
- /data/redis/redis.conf:/usr/local/etc/redis/redis.conf
ports:
- 6379:6379
command:
--requirepass "hPxyR4" #这一行是设置密码
privileged: true #使用该参数,container内的root拥有真正的root权限
b、redis.conf文件
bind 0.0.0.0 #只监听内网IP
daemonize yes #开启后台模式将no改为yes
port 6379 #端口号
requirepass Sutpc@123
dir /data #本地数据库存放持久化数据的目录该目录-----需要存在
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
appendonly yes #开启AOF
appendfilename appendonly.aof #指定aof文件名称
appendfsync everysec #指定aof操作中文件同步策略
#redis 后端启用
docker-compose -f redis-compose.yml up -d
docker-compose up:启动容器
docker-compose down:停止并删除容器
docker-compose ps:查看容器状态
docker-compose logs:查看容器日志
docker-compose exec:在容器内执行命令
docker-compose build:构建镜像
docker-compose restart:重启容器
docker-compose stop:停止容器
docker-compose rm:删除已停止的容器
4、mysql相关
a、mysql.yml文件
version: "2"
services:
mysql:
container_name: mysql5.7
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
TZ: Asia/Shanghai # 时区 要不然会少8小时
MYSQL_ROOT_PASSWORD: xxx # 系统user表 用户名root的密码
MYSQL_DATABASE: user # 系统user表
MYSQL_USER: nacos
MYSQL_PASSWORD: nacos
volumes:
- /data/mysql/data:/var/lib/mysql #将容器中运行的mysql数据保存到宿主机,防止容器删除后数据丢失
ports:
- 3306:3306
# docker 设置mysql密码
docker run --name mysql5.7 -d -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你的密码 mysql:5.7
# docker 查看日志 mysql5.7是容器名称
docker logs -f mysql5.7
5、jar包相关
version: '3'
services:
java:
restart: always
image: openjdk:14
container_name: openjdk14
ports:
- 8882:8882
volumes:
- /command/java/hailiao/hailiao-1.0.0.jar:/app/hailiao-1.0.0.jar
environment:
- TZ="Asia/Shanghai"
entrypoint: java -jar /app/hailiao-1.0.0.jar
networks:
mynetwork:
ipv4_address: 192.168.1.13
networks:
mynetwork:
ipam:
config:
- subnet: 192.168.1.0/24
6、安装node
# 安装最新版
$ docker pull node:latest
# 安装指定版
$ docker pull node:14.17
# 运行容器 latest 最新版
$ docker run -itd --name node-14.17 node
# 运行容器 14.17版本
$ docker run -itd --name node-14.17 node
# 最后进入查看容器运行的 node 版本:
$ docker exec -it node-test /bin/bash
root@6c5d265c68a6:/# node -v
博主小白:这里遇到了两个奇耻大坑,openJDK的版本有极大的兼容问题,因为本地的jdk版本是
但是安装openJDK版本的时候,本地启动一切正常,但linux(cento)一堆莫名其妙的问题报错
openJDKlatest 报错
Error creating bean with name 'xxxx' defined in URL
openJDK8 11报错
No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
所以,本地JDK 1.8 对应的openjdk最合适的版本是14
9、将linux系统中的文件复制到docker容器中
// docker cp 本地路径 容器ID:容器路径
docker cp /usr/local/test.txt 775c7c9ee1e1:/usr/local/tomcat/webapps test.txt
10、删除所有未使用的容器、网络、映像(包括悬挂的和未引用的)
# 删除所有未使用的容器、网络、映像(包括悬挂的和未引用的)
docker system prune -a
11、docker启动与重启
# 启动docker
systemctl start docker
# 重启docker
systemctl restart docker