Docker常见命令

文章目录

  • 帮助命令
  • 镜像命令
  • 容器命令
  • 数据卷命令
  • 自定义镜像
  • Docker Compose
  • 搭建Docker镜像仓库

帮助命令

Docker官方帮助文档

Docker常见命令_第1张图片

命令 说明
docker version 显示 docker 的版本信息
docker ifno 显示 docker 的系统信息
docker --help 查看 docker 所有命令
docker [命令] --help 查看命令的作用

镜像命令

Docker镜像(Image)就是一个只读的模板。将应用程序及其依赖、环境、配置打包在一起就是镜像。镜像可以用来创建容器,一个镜像可以创建多个容器。

命令 说明
docker search 搜索镜像
docker images 查看本机上的镜像
docker pull 拉取镜像
docker push 推送镜像到服务
docker save 将镜像保存为压缩包
docker load 加载压缩包为镜像
docker rmi 删除镜像
docker bulid 构建镜像

显示所有镜像

docker images -a
常用可选项
-a,--all    列出所有镜像
-q,--quiet  只显示镜像id

镜像名称一般分两部分组成:[名字]:[版本].不加版本默认拉去最新的

拉取版本为5.7的mysql镜像
docker pull mysql:5.7

将镜像保存为压缩包

docker save -o nginx.tar nginx:latest
-o--output  输出到哪个个文件

加载压缩包为镜像

docker load -i nginx.tar
-i,--input  把哪个压缩包加载为镜像

搜索mysql镜像

docker search mysql --filter=STARS=3000
常用可选项
--filter=STARS=3000  搜索STARS大于3000的镜像

也可以到DockerHub上搜索镜像
Docker常见命令_第2张图片
点击去可以查看镜像信息和如何使用镜像
Docker常见命令_第3张图片

容器命令

命令 说明
docker run 创建容器并运行
docker pause 让容器从运行状态转到暂停状态
docker unpause 让容器从暂停状态转到运行状态
docker stop 让容器从运行状态转到停止状态
docker start 让容器从停止状态恢复到运行状态
docker ps 查看所有运行的容器及状态
docker logs 查看容器的运行日志
docker exec 进入容器执行命令
docker rm 删除指定容器
exit 退出容器

创建名为myNginx的nginx容器并后台运行

docker run --name myNginx -p 80:80 -d nginx
--name : 给容器起一个名字
-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
-d:后台运行容器
nginx:镜像名称

显示所有容器

docker ps -a
-a  显示所有容器

跟踪日志

docker log -f myNginx
-f跟踪日志 ctrl+c停止日志跟踪

进入myNginx容器执行命令

docker exec -it myNginx bash 
-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
bash:进入容器后执行的命令,bash是一个linux终端交互命令

强制删除myNginx容器

docker rm -f myNginx
-f强制删除容器

数据卷命令

数据卷(volume)是虚拟目录,指向宿主机文件系统中的某个文件 /var/lib/docker/volume

命令 说明
docker volume create 创建数据卷
docker volume inspect 显示数据卷信息
docker volume ls 列出所有的数据卷
docker volume prune 删除未使用的数据卷
docker volume rm 删除指定数据卷

挂载数据卷到容器目录

docker run --name myNginx -p 80:80 -v html:/usr/share/nginx/html -d nginx
-v [数据卷名称]:[目标的容器内路径](如果容器运行时数据卷不存在则会被自动创建出来)

目录挂载与数据卷挂载相似

-v [宿主机目录]:[容器内目录]
-v [宿主机文件]:[容器内文件] 

自定义镜像

DockerFile命令
DockerFile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。更详细的语法可在官方文档查看

指令 说明 示例
FORM 指定基础镜像 FORM centos7
ENV 设置环境变量 ENV key value
COPY 拷贝本地文件到镜像的指定目录 COPY ./mysql-5.7.rpm /tmp
RUN 执行LInux的shell命令,一般是安装过程的指令 RUN yum install gcc
EXPOSE 指定容器运行监听的端口,是给镜像使用者看的 EXPOSE 8080
ENTRYPOINT 镜像中应用的启动命令,容器运行时调用 ENTRYPOINT java -jar xx.jar

【案例】

基于CentOS镜像构建一个新镜像,运行java项目

  • 第1步:新建空目录
  • 第2步:拷贝jar文件到这个目录
  • 第3步:拷贝jdk8.tar.gz文件到这个目录
  • 第4步:拷贝Dockerfile到这个目录
  • 第5步:进入这个文件夹
  • 第6步:运行命令
# 最后面的点表示Dockerfile所在的目录
docker build -t myProject:1.0 .

Dockerfile文件内容

# 指定基础镜像
FROM centos 7
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

Dockerfile的本质是一个文件,通过指令描述镜像的构建过程。Dockerfile的第一行必须是FROM,从一个基础镜像来构建。基础镜像可以是基本操作系统,也可以是其他人制作好的镜像,比如java:8-alpine

Docker Compose

Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行

version: "3.8"

services:
  #第一种方式:基于镜像的部署方式
  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - "/tmp/mysql/data:/var/lib/mysql"
      -  "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
  #第二种方式:临时构建镜像并且运行
  web:
    build: .
    ports:
      - "8090:8090"

安装

#安装
curl -L https://get.daocloud.io/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 up -d

搭建Docker镜像仓库

一、配置Docker信任地址

打开要修改的文件
vi /etc/docker/daemon.json
添加内容:
"insecure-registries":["http://192.168.140.129:8080"]
重加载
systemctl daemon-reload
重启docker
systemctl restart docker

二、创建docker-compose.yml文件

创建目录
mkdir registry-ui
进去目录
cd registry-ui
创建文件
touchu docker-compose.yml

三、编辑docker-compose.yml文件

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=my private registry
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

四、执行dockercompose

docker-compose up id

五、访问私有仓库
Docker常见命令_第4张图片
六、上传镜像

重命名镜像
docker tag nginx:latest 192.168.140.129:8080/nginx:1.0
推送镜像
docker push 192.168.140.129:8080/nginx:1.0
拉取镜像
docker pull 192.168.140.129:8080/nginx:1.0

Docker常见命令_第5张图片
搭建简化版镜像仓库

docker run -d \
       --restart=always \
       --name registry	\
       -p 5000:5000 \
       -v registry-data:/var/lib/registry \
       registry

你可能感兴趣的:(微服务专题笔记,docker,服务器,微服务)