docker操作使用手册,可以用于日常的docker学习

366 阅读6分钟

docker的基本使用

官网地址: docs.docker.com/desktop/

1.前提

需要 CentOS 7 或 8 的维护版本

**centos-extras**库必须启用

安装

  1. 首先我们需要卸载旧版本,防止重复安装

sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine

如果系统没有装yum,先安装yum工具

sudo yum install -y yum-utils

  1. 设置国内阿里云存储库,加快下载速度

sudo yum-config-manager
--add-repo
mirrors.aliyun.com/docker-ce/l…

  1. 查看docker版本列表,下载自己需要的docker版本

yum list docker-ce --showduplicates|sort -r

  1. 查看之后,安装需要的Docker版本

yum -y install docker-ce-23.0.3-1.el7

  1. 查看docker版本,检查是否安装完成

docker version

  1. 启动docker服务

systemctl start docker

其他常用命令

systemctl stop docker 停止 docker 服务
systemctl status docker 查看 docker 服务状态
systemctl restart docker 重启 docker 服务
systemctl enable docker 设置开机启动

执行一下命令,可以删除卸载docker

 #卸载Docker引擎
 sudo yum remove docker-ce docker-ce-cli containerd.io 
 #清除所有数据 删除所有镜像、容器和卷
 sudo rm -rf /var/lib/docker 
 sudo rm -rf /var/lib/containerd 

docker镜像

镜像下载地址,找到自己所需要的镜像,比如mysql,redis等

hub-stage.docker.com/

image.png 找到自己想要的版本

  1. 也可以搜索镜像(看有哪些版本)

docker search nginx

  1. 拉取镜像(如何没有版本号,拉去最新的镜像)

docker pull nginx (版本号) docker pull mysql
docker pull openjdk

  1. 如果拉取最新的镜像,想查看镜像的版本

docker image inspect mysql:latest|grep -i version

  1. 查看镜像列表

docker images

列表界面字段说明

REPOSITORY:镜像属于的仓库

TAG:镜像的标签信息,标记同一个仓库中的不同镜像;

IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;

CREATED:镜像创建时间;

VIRTUAL SIZE:镜像大小

  1. 删除镜像

docker rmi 仓库名称:标签
docker rmi 镜像ID号

  1. 切换阿里云镜像源可以让加快镜像拉取速度

touch /etc/docker/daemon.json
vi /etc/docker/daemon.json

写入如下内容

{
  "registry-mirrors": ["https://mr63yffu.mirror.aliyuncs.com"]
}

刷新系统

systemctl daemon-reload

7.docker外放端口配置(用于外部连接,如果不需要可以忽略) i 编辑配置文件

vi /etc/systemd/system/multi-user.target.wants/docker.service

2.修改文件

i 进入编辑模式,把下面的内容加入到文件中

-H tcp://0.0.0.0:1212 -H unix://var/run/docker.sock

esc之后保存:wq

3.配置安全组防火墙1212之后重启docker

重载
systemctl daemon-reload
重启
systemctl restart docker
查看端口是否开启
netstat -ntlp

4.连接

tcp://47.97.66.70:1212  

安装mysql

#拉取镜像
docker pull mysql:8.0.32-oracle
#启动mysql
  sudo docker run -d   --name=mysql  -e MYSQL_ROOT_PASSWORD=root    -p3306:3306  mysql:8.0.32-oracle

安装Redis

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /opt/myredis/redis.conf:/etc/redis/redis.conf  -v /opt/myredis/data:/data -d redis:7.0.4 redis-server /etc/redis/redis.conf --appendonly yes --requirepass root

安装rabbitMQ

  1. 拉取镜像

docker pull rabbitmq

  1. 启动
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
  1. 开启管理界面插件
进入rabbitmq内部
docker exec -it 容器id /bin/bash     
启动rabbitmq界面插件
rabbitmq-plugins enable rabbitmq_management



访问
http://localhost-ip:15672

账号密码
guest

guest

退出容器
exit

安装nginx

#拉取官方nginx镜像
docker pull nginx
docker run -di --name nginx -p 80:80 nginx
#创建Nginx容器,并将容器中的/etc/nginx目录和宿主机的/home/local/nginx/conf目录进行挂载

#将容器内的配置文件拷贝到指定目录
# 创建目录
mkdir -p /home/ruoyi/nginx

# 将容器内的配置文件拷贝到指定目录
docker cp nginx:/etc/nginx /home/local/nginx/conf

docker的一些开源镜像应用,可以直接使用

prclub.notion.site/Docker-827e…

DockerFile的使用

常用命令说明

1.FROM
指定基础镜像

FROM nginx

  1. RUN
    在容器执行的命令(可以安装一些容器中没有的东西,比如字体,一些curl工具等等)

RUN apk add --update ttf-dejavu fontconfig

  1. VOLUME
    挂载在宿主机的目录

VOLUME /local/project

  1. WORKDIR
    指定工作起始目录

WORKDIR /home/nsjz

  1. COPY
    复制文件到容器中(左边是系统,右边是容器)

COPY./docker/tianzhi/modules/system/jar/tianzhi-modules-system.jar /home/tianzhi/tianzhi-modules-system.jar

  1. *ENTRYPOINT
    容器启动的时候要干什么 (一般是启动应用程序,比如jar)

ENTRYPOINT ["java","-jar","tianzhi-modules-system.jar"]

  1. EXPOSE
    指定对外的端口

EXPOSE 8080

  1. MAINTAINER 维护者

MAINTAINER tianzhi

说明已经完毕,下面我们来制作镜像容器

首先

mkdir /opt/docker-images/web-docker

cd /opt/docker-images/web-docker

创建Dockerfile

vim Dockerfile

node环境项目的编写

node环境

FROM node:16.15.0

RUN git clone https://gitee.com/mirschao/webserver-vue.git
COPY ./ ./app
WORKDIR /app

WORKDIR  webserver-vue

RUN npm install

EXPOSE 8080

CMD ["npm","run","serve"]

编写完成后进行构建

docker build -t tianzhi-web:v1.0 .

webserve:名字
v1.0:版本
. 构造 当前目录的Dockerfile

查看镜像

docker image ls

运行镜像

docker run -itd —-name tianzhijava -p 8090:8080 tianzhi:v1.0

查看镜像的运行状态

docker ps -a

nginx的多阶段构造(先npm打包,在把它放进nginx中运行)

FROM node:16.15.0
COPY ./ ./app
WORKDIR /app
RUN npm install && npm run build

FROM nginx:1.21
RUN mkdir /app
COPY --from=0 /app/dist/app
COPY nginx.conf /etc/nginx/nginx.conf

编写完成后进行构建

docker build -t web-project:v1.0 .

docker -itd -name web-project -p 80:80 tianzhi-web:v1.0

后端的编写

Python

FROM python:alpine3.15
COPY ../webserverbacken
WORKDIR webserverbackend
RUN pip install -i https://mirrors.ustc.edu.cn/pypi/web/simple -r requirements.txt
EXPOSE 8000
CMD ["python","manager.py","runserver","0.0.0.0:8080"]

编写完成后进行构建

docker build -t tianzhijava:v1.0 .

运行

docker run -itd —name ``tianzhijava``-p 8090:8080 ``tianzhijava``:v1.0

Docker-Compose

Docker-Compose是一个用来定义和运行多个复杂应用的Docker编排工具。比如,多个微服务项目,通常由多个容器应用组成。一个个手动启动?假如有上百个微服务呢,显然不现实,那么就需要使用Docker Compose编排工具来批量启动容器

安装docker-compose,下载docker-compose文件

curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-uname -s-uname -m-o /usr/local/bin/docker-compose

将文件复制到/usr/local/bin环境变量下面

mv docker-compose /usr/local/bin

给他一个执行权限

chmod +x /usr/local/bin/docker-compose

查看是否安装成功

docker-compose -version

使用docker-compose进行编排

1.创建docker-compose目录,再创建一个docker-compose.yml

mkdir usr/local/docker-compose
cd usr/local/docker-compose vi docker-compose.yml

编写docker-compose.yml文件

version: "3"
services:

  redis:
    image: redis:alpine
    ports:
      - "6379"
    networks:
      - frontend
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure
 
  db:
    image: postgres:9.4
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - backend
    deploy:
      placement:
        constraints: [node.role == manager]
 
  vote:
    image: dockersamples/examplevotingapp_vote:before
    ports:
      - 5000:80
    networks:
      - frontend
    depends_on:
      - redis
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure
 
  result:
    image: dockersamples/examplevotingapp_result:before
    ports:
      - 5001:80
    networks:
      - backend
    depends_on:
      - db
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure
 
  worker:
    image: dockersamples/examplevotingapp_worker
    networks:
      - frontend
      - backend
    deploy:
      mode: replicated
      replicas: 1
      labels: [APP=VOTING]
      restart_policy:
        condition: on-failure
        delay: 10s
        max_attempts: 3
        window: 120s
      placement:
        constraints: [node.role == manager]
 
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
 
networks:
  frontend:
  backend:
 
volumes:
  db-data:

启动docker-compose文件,这样我们就可以一下子启动中间件及多个服务
docker-compose -f docker-compose.yaml up -d
-f调用文件。
-d:开启守护进程

docker-compose常用命令
命令说明
build重新构建服务
ps列出容器
up创建和启动容器
exec在容器里面执行命令
scale指定一个服务容器启动数量
top显示正在运行的容器进程
logs查看服务容器的输出
down删除容器、网络、数据卷和镜像
stop/start/restart停止/启动/重启服务
注意:必须要在含有docker-compose.yml文件的目录中才可以使用

详细的编排语法请自行查阅学习,这里就不一一解释说明了