Bootstrap

Docker常用命令

一、安装(Centos7虚拟机)

# 移除旧版本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
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; enable + start 二合一
systemctl enable docker --now

#配置代理,地址换成主机无线局域网适配器IPv4地址。使用国内镜像登录不了hub.docker.com.
#详细配置:https://www.bilibili.com/video/BV1J2U7YLEmH/?#spm_id_from=333.1387.favlist.content.click&vd_source=a3bf5c71ab4b3cb2aad2f9e2f09b202c

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "proxies":{
    "http-proxy":"http://192.168.10.104:7890",
    "https-proxy":"http://192.168.10.104:7890"
    }

}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

二、常用命令

#查看运行中的容器
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 stop keen_blackwell
#启动容器
docker start 592
#重启容器
docker restart 592
#查看容器资源占用情况
docker stats 592
#查看容器日志
docker logs 592
#删除指定容器
docker rm 592
#强制删除指定容器
docker rm -f 592
#删除所有容器
docker rm -f $(docker ps -aq)
# 后台启动容器
docker run -d --name mynginx nginx
# 后台启动并暴露端口
docker run -d --name mynginx -p 80:80 nginx
# 进入容器内部
docker exec -it mynginx /bin/bash

# 提交容器变化打成一个新的镜像
docker commit -m "update index.html" mynginx mynginx:v1.0
# 保存镜像为指定文件
docker save -o mynginx.tar mynginx:v1.0
# 删除多个镜像
docker rmi bde7d154a67f 94543a6c1aef e784f4560448
# 加载镜像
docker load -i mynginx.tar 


# 登录 docker hub
docker login
# 重新给镜像打标签
docker tag mynginx:v1.0 leifengyang/mynginx:v1.0
# 推送镜像
docker push leifengyang/mynginx:v1.0

三、存储

● 目录挂载: -v /app/nghtml:/usr/share/nginx/html
● 卷映射:-v ngconf:/etc/nginx

三、网络

#自定义网络
docker network create mynet

#启动容器
docker run --network mynet 

四、Docker Compose

参考:Compose file reference | Docker Docs

#创建配置文件
vi compose.yaml

compose.yaml:

name: myblog
services:
  mysql:
    container_name: mysql
    image: mysql:8.0
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=wordpress
    volumes:
      - mysql-data:/var/lib/mysql
      - /app/myconf:/etc/mysql/conf.d
    restart: always
    networks:
      - blog

  wordpress:
    image: wordpress
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: 123456
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress:/var/www/html
    restart: always
    networks:
      - blog
    depends_on:
      - mysql

volumes:
  mysql-data:
  wordpress:

networks:
  blog:
#使用compose启动所有容器,修改 Docker Compose 文件。重新启动应用。只会触发修改项的重新启动
docker compose -f compose.yaml  up -d

#下线所有容器
docker compose -f compose.yaml down

#下线容器并移除卷
docker compose -f compose.yaml down --rmi all  -v

五、Dockerfile

参考:Dockerfile reference | Docker Docs

vim Dockerfile

 Dockerfile:

FROM openjdk:17


LABEL author=zaingray

COPY app.jar /app.jar

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]
#其中.代表当前目录
docker build -f Dockerfile -t myapp:v1.0 .

;