Docker常见命令

x33g5p2x  于2022-04-10 转载在 Docker  
字(4.0k)|赞(0)|评价(0)|浏览(399)

帮助命令

Docker官方帮助文档

命令说明
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 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 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 run -d \
       --restart=always \
       --name registry	\
       -p 5000:5000 \
       -v registry-data:/var/lib/registry \
       registry

相关文章