docker常用命令

2023-12-24 07:54:14

镜像相关指令:

从服务拉取镜像:

docker pull nginx

查看镜像:

docker images

导出镜像到磁盘:

docker save -o [保存的目标文件名称] [镜像名称]

例:

docker save -o nginx.tar nginx:latest

删除本地的nginx镜像:

docker rmi nginx:latest

使用docker load加载镜像:

docker load -i nginx.tar

容器相关指令:

创建一个容器并运行:

docker run --name mn -p 80:80 -d nginx

命令解读:

  • docker run :创建并运行一个容器

  • --name : 给容器起一个名字,比如叫做mn

  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口

  • -d:后台运行容器

  • nginx:镜像名称,例如nginx

这里的-p参数,是将容器端口映射到宿主机端口。

默认情况下,容器是隔离环境,我们直接访问宿主机的80端口,肯定访问不到容器中的nginx。

现在,将容器的80与宿主机的80关联起来,当我们访问宿主机的80端口时,就会被映射到容器的80,这样就能访问到nginx了:

查看容器日志:

docker logs -f?[容器的名字]

添加? -f 参数可以持续查看日志

查看容器状态:

docker ps

加上 -a 查看所有的容器包括已经停止的。

删除指定容器:

docker -f?rm 容器名字

加-f 强制删除

进入容器执行命令:?

docker exec -it mn bash

命令解读:

  • docker exec :进入容器内部,执行一个命令

  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互

  • mn :要进入的容器的名称

  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

退出容器命令:

exit

暂停容器:

docker pause 容器名字或者ID

取消暂停容器:

docker unpause 容器名字或者ID

停止容器运行:

docker stop 容器名字或ID

启动容器运行:

docker start 容器名字或ID

数据卷的相关指令:

创建数据卷:

docker volume create 数据卷名字

查看所有数据卷:

docker volume ls

查看指定数据卷的信息:

docker volume inspect 数据卷名字

移除指定数据卷:

docker volume rm 数据卷名字

移除未使用的数据卷:

docker volume prune

数据卷挂载方式:

创建nginx容器并挂载数据卷html到容器内的HTML目录:

docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx

自定义镜像

镜像结构:

镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。

以MySQL为例,镜像的组成结构:

简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。

基于java8构建Java项目

构建java项目的镜像,可以在已经准备了JDK的基础镜像基础上构建。

需求:基于java:8-alpine镜像,将一个Java项目构建为镜像

步骤:

  • ① 新建一个空的目录docker-demo,然后在目录中新建一个文件,命名为Dockerfile

  • ② 拷贝Java项目的jar包到这个docker-demo目录中

  • ③ 编写Dockerfile文件:内容如下:

# 指定基础镜像
FROM java:8-alpine
# 将app.jar拷贝到镜像中 
COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
  • ④ 进入docker-demo目录中,使用docker build命令构建镜像 (注意后面有个“点”)javaweb:2.0是创建的镜像的名字和版本,此后镜像就创建好了,可以docker images查看。

    ?docker build -t javaweb:2.0 .
  • ⑤ 使用docker run创建容器并运行

  • docker run --name web -p 8090:8090 -d javaweb:2.0

Docker-Compose

?Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!

Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。

初识DockerCompose

Compose文件格式如下:

它是个yml文件:

上面的Compose文件就描述一个项目,其中包含两个容器:

  • mysql:一个基于mysql:5.7.25镜像构建的容器,并且挂载了两个目录

  • web:一个基于docker build临时构建的镜像容器,映射端口是8090

DockerCompose的详细语法参考官网:Overview | Docker Docs

其实DockerCompose文件可以看做是将多个docker run命令写到一个文件,只是语法稍有差异。

安装DockerCompose

下载:

第一种:在github下载,比较慢。

# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

第二种:

链接:https://pan.baidu.com/s/1Cl9AasCAMmxSu-ICTDZvAQ?pwd=8j3o?
提取码:8j3o

上传到/usr/local/bin/目录

修改文件权限

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

Base自动补全命令:

curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

可以通过命令: docker-compose logs -f 查看所有日志。若后面跟上服务名,查看服务的日志。

Docker 镜像仓库:

搭建私有镜像仓库:

??1,配置Docker信任地址???????

我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容,地址是私有镜像仓库的地址 注意是否要添加逗号:
"insecure-registries":["http://192.168.88.128:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

这里添加的内容中的地址就是虚拟机的ip 和仓库的端口。添加时注意逗号

2,使用DockerCompose部署带有图象界面的DockerRegistry

首先创建一个文件夹例如:

然后在里面创建文件: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=传智教育私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

在文件夹中,运行这个docker-compose文件:

docker-compose up -d

就可以在:ip地址:8080端口? (私有仓库的地址)? 打开了

里面还没有镜像。

推送拉取镜像:

推送镜像到私有镜像服务必须先tag,步骤如下:

意思就是给镜像重命名:

① 重新tag本地镜像,名称前缀为私有仓库的地址:192.168.88.128:8080/

docker tag nginx:latest 192.168.88.128:8080/nginx:1.0 

② 推送镜像

docker push 镜像名字:版本

③ 拉取镜像

docker pull?镜像名字:版本

文章来源:https://blog.csdn.net/qq_64688685/article/details/135091291
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。