DOCKER入门

DOCKER入门


安装docker

1、安装前先卸载之前装的docker,没有安装过跳过,卸载旧版本

[root@localhost ~] yum remove docker \
	docker-client
	docker-client-latest \
	docker-common \
	docker-latest \
	docker-latest-logrotate  \
	docker-1ogrotate \
	docker-engine


2、安装工具包

[root@localhost ~] yum install -y yum-utils


3、设置镜像仓库(阿里云)

[root@localhost ~] yum-config-manager \
 --add-repo \
 http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo



3.1 更新yum软件包索引

[root@localhost ~]# yum makecache fast

3.2 安装docker相关服务

[root@localhost ~]# yum install docker-ce docker-ce-cli containerd.io


4、启动docker

[root@localhost ~]# systemctl start docker


5、使用docker version 检测是否安装成功

[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           26.1.4
 API version:       1.45
 Go version:        go1.21.11
 Git commit:        5650f9b
 Built:             Wed Jun  5 11:32:04 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          26.1.4
  API version:      1.45 (minimum version 1.24)
  Go version:       go1.21.11
  Git commit:       de5c9cf
  Built:            Wed Jun  5 11:31:02 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.33
  GitCommit:        d2d58213f83a351ca8f528a95fbd145f5654e957
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0


查看安装的镜像

[root@localhost ~]# docker images



卸载docker


1、卸载依赖

[root@localhost ~]#  yum remove docker-ce docker-ce-cli containerd.io

2、删除资源

[root@localhost ~]# rm -rf /var/lib/docker

/var/lib/docker docker的默认工作路径




帮助命令


docker version #显示docker的版本信息

docker info #显示docker的系统信息,包括镜像和容器的数量

docker 命令 --help #帮助命令




镜像命令

查看所有本地的主机上的镜像

[root@localhost ~]# docker images
REPOSITORY   TAG               IMAGE ID       CREATED        SIZE
rabbitmq     3.13-management   b188af0de93c   6 months ago   251MB
mysql        5.7               5107333e08a8   9 months ago   501MB

解释

REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小


可选项

-a,--all 列出所有对象
-q,--quiet 只显示镜像的id




常用命令

搜索镜像

docker search  镜像名

可选项:-- filter=stars=3000 筛选星级大于等于3千的



下载镜像

docker pull 镜像名:版本
eg:docker pull mysql:5.7

不输入版本默认最新。



删除镜像

docker rmi  容器id

-f 强制,多个时空格间隔

批量删除:docker rmi docker images -aq



保存导出镜像

 docker save mysql > /tmp/test/mysql.tgz

先在容器内安装我们需要的软件后,提交该镜像,导出镜像为压缩文件,可以发给别人使用了

保存以下镜像到指定文件夹



查看镜像详细信息

docker info

docker image inspect  镜像id

docker image inspect  镜像id前几位

修改镜像名称

 docker  tag  镜像id  名称

容器命令

新建容器并启动,不存在回去下载

docker   run  [可选参数]  image

--name = "Name" 容器名称 mysql1,mysql2

-d 后台运行

-it 使用交互方式运行,进入容器查看内容

-p 指定端口映射,主机端口:容器端口 -p 80:80



退出容器

exit          #退出并停止
Ctrl + P + Q  #不停止退出 


列出所有容器

docker ps [可选参数]

-a 列出当前正在运行的容器+带出历史运行过的容器

-n=?显示最近创建的容器



删除容器

docker rm 容器id
docker rm -f $(docker ps -aq)  # 删除所有的容器
docker ps -a -q|xargs docker rm # 删除所有的容器

-f 强制删除



启动和停止

docker start  容器id       启动

docker  restart  容器id    重启

docker stop  容器id       停止

docker kill 容器id    强制停止


查看容器端口

docker port  容器名称


提交容器

docker commit 容器id  新的镜像名称

先提交保存新的镜像然后通过docker save 去导出到文件夹

日志

docker logs  -f-t  --tail 容器id  


查看镜像的元数据

docker inspect 容器id


查看容器详细信息

docker container inspect 容器id


进入当前正在运行容器

方式一:docker exec -it 容器id bashShe11       进入容器后开启一个新的终端,可以在里面操作(常用)

方式二: docker attach 容器id               进入容器正在执行的终端,不会启动新的进程!

进入容器,修改一些配置

多容器通信

要想多容器之间互通,从项目容器访问 Redis 容器,需要把他们放到同个网络中。通过创建虚拟网络并在运行时把他们放到一个虚拟网络下即可。

创建一个名为test的网络:

docker network create test

运行 Redis 在 test网络中,别名redis

docker run -d --name redis --network test-net --network-alias redis redis:5.0

docker network ls 查看网络列表



Dockerfile

自定义镜像就需要创建一个Dockerfile文件定义镜像,然后执行构建命令。

from: 指定当前自定义镜像依赖的环境,指定基础镜像
copy: copy指令从宿主机复制文件/目录到新的一层镜像内.COPY指令能够保留源文件的元数据,如权限,访问时间等等
add: 复制文件会自动解压,复制主机文件到容器内
workdir: 声明镜像的默认工作目录
run: 执行的命令,可以编写多个,也就是你想它干啥
cmd: 需要执行的命令(在workdir下执行的,cmd可以写多个,只以最后一个为准)
volume:设置卷,挂载主机目录,将容器产生的数据存到主机上
ENV:设置环境变量
expose:指定容器运行时对外提供的端口服务

CMD:在指定了entrypoint指令后,用CMD指定具体的参数
docker不是虚拟机,容器就是一个进程,既然是进程,那么程序在启动的时候需要指定些运行参数,这就是CMD指令作用
例如centos镜像默认的CMD是/bin/bash,直接docker run-it centos会直接进入bash解释器也可以启动容器时候,指定参数,docker run it centos cat /etc/os-releasea
CMD运行shell命令,也会被转化为shell形式

ENV:

例如:

在dockerfile中

ENV NAME="张三"
ENV age="18"
# 后续的操作通过$NAME就可以访问张三

例如:运行个jar包

# 使用官方的OpenJDK镜像作为基础镜像
FROM openjdk:8-jdk-alpine

# 设置工作目录
WORKDIR /app

# 复制构建好的JAR包到容器中
COPY target/app-1.0-SNAPSHOT.jar  /app/app.jar

# 暴露端口
EXPOSE 8080

# 运行应用
CMD ["java", "-jar", "app.jar"]

编写完Dockerfile后需要通过命令将其制作为镜像,并且要在Dockerfile的当前目录下,之后即可在镜像中查看到指定的镜像信息,注意最后的 .

docker build -t 镜像名称[:tag] .

1、构建:docker build -t my-java-app

2、运行容器:docker run -p 8080:8080 -d my-java-app



Docker-Compose

使用 docker-compose 可以把项目的多个服务集合到一起,一键运行。

linux版本安装

1、校验是否已经安装

 docker compose version

2、没有安装的话,

sudo yum update
sudo yum install docker-compose-plugin

要把项目依赖的多个服务集合到一起,我们需要编写一个docker-compose.yml文件,描述依赖哪些服务

posted @ 2025-03-23 15:01  赤叶秋枫  阅读(37)  评论(0)    收藏  举报