docker 操作常用指令

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值