Docker学习,以及Docker-compose

文章 , 技术分享
427 0

Docker


docker search redis 搜索redis版本
docker pull redis 下载默认版本
docker pull redis:7.0
docker rmi IMAGE_ID删除镜像,rm是remove i是镜像
docker images -q 查看所有镜像id
docker rmi docker images-q

exit退出
docker ps -a
docker run -id --name=c2 centos:7 /bin/bash #创建docker
docker exec -it sb1 /bin/bash #进入这个docker
docker stop sb1
docker start sb1
docker ps
docker rm sb1(或io都可以删除)
docker inspect 容器名称 #查看容器相关信息

docker 文件和宿主机挂载
docker run -it --name=c3 -v /root/data:/root/data_container centos /bin/bash

使用docker容器制作镜像
(将容器制作成镜像)
docker commit 容器id sbsb:1.0 #制作镜像 (docker commit 5c0fd sb1:1.0)
这样用docker images 时能看到sb1的镜像且版本号是1.0

docker save -o 压缩文件名(
自定义) 镜像名 (docker save -o sbces.tar sb1)
-o是路径 ,如果不填路径只填名称就是现在的文件夹下
把镜像压缩成sbces.tar的文件

///直接将容器打包成文件(就省略将容器打包成镜像然后在打包成文件)
///docker export -o ~/mysql-vim-dk.tar mysql-studk

docker load -i nb1.tar #解压(还原)压缩镜像文件
-i 指的是指定数据流的标准输入,也就是从文件中读取镜像。

doker import <tar文件的地址> <需要保存成的镜像名称 :版本>
一般docker import 是将远程文件打包到本地
docker import URL [REPOSITORY[:TAG]]
例如docker import https://nb.sb/cnm.tar cnm:1.0

docker load和doker import将tar文件转为镜像的区别
和docker load -i 的区别就是load不需要定义镜像名称,直接可以用打包里面的被打包时的镜像名称和版本
docker load 命令速度较快,因为它直接将 tar 归档文件加载到 Docker daemon 中,而 docker import 命令需要将 tar 归档文件解压缩并重新打包为镜像,因此速度较慢。

使用dockerfile 文件制作镜像:
创建文件:(例如文件名:springboot_dockerfile
FROM java:8
MAINTAINER itheima mailto:[email protected]
ADD HelloDocker-0.0.1-SNAPSHOT.jar app.jar
CMD java -jar app.jar
使用文件制作镜像:(-f是指定目录的意思)
docker build -f ./springboot_dockerfile -t app:1.0 .

如果docker文件在此目录下的话可以直接用
docker build -t centos:test .
如果docker文件没有在此目录下的话可以直接用
docker build -t myimage  -f ./path/to/dockerfile .

这个命令最后的.表示在当前目录执行docker build命令,即使用当前目录下的Dockerfile文件进行构建,并将结果以myimage标签保存到本地。

查看镜像 docker imges
可以看到命名为app的镜像版本为1.0
然后创建容器即可:
docker run -it --name=c5 app:1.0

从容器中复制文件到宿主机中
拷贝容器的文件到主机中
docker cp 容器id:容器内路径 目的主机路径
拷贝宿主机的文件到容器中
docker cp 目的主机路径 容器id:容器内路径
重启容器
docker restart 0f883d9d5d32
删除容器
docker rm 容器名称

docker 创建数据卷
创建数据卷:docker volume create <数据卷名称>
docker ls
docker rm
docker volume prune //删除未使用的数据卷
docker volume inspect 查看卷的信息

dockerfile

运行dockerfile文件创建镜像
<这个标签可以是一个键值对,也可以是一个镜像名称>
-t是指定标签的意思
docker build -t <标签> <Dockerfile 所在目录> 
dockerfile 的命令摘要
FROM- 镜像从那里来
MAINTAINER- 镜像维护者信息
RUN- 构建镜像执行的命令,每一次RUN都会构建一层
CMD- 容器启动的命令,如果有多个则以最后一个为准,也可以为ENTRYPOINT提供参数
VOLUME- 定义数据卷,如果没有定义则使用默认
USER- 指定后续执行的用户组和用户
WORKDIR- 切换当前执行的工作目录
HEALTHCHECH- 健康检测指令
ARG- 变量属性值,但不在容器内部起作用
EXPOSE- 暴露端口
ENV- 变量属性值,容器内部也会起作用
ADD- 添加文件,如果是压缩文件也解压
COPY- 添加文件,以复制的形式
ENTRYPOINT- 容器进入时执行的命令
Docker-compose

docker-compose up
文件夹内需要有docker-compose.yml文件
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose

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

docker-compose --version

sudo systemctl enable docker

最后更新 2023-08-16
评论 ( 0 )
OωO
隐私评论