Docker学习笔记

本文介绍了Docker的基本概念、安装步骤、常用命令,包括镜像与容器的区别,数据卷的使用,自定义镜像构建,Docker网络设置,以及DockerCompose在多容器部署中的应用。
摘要由CSDN通过智能技术生成

docker——快速构建、运行、管理应用的工具;忽略系统本身的差异而去直接部署


参考来源: 黑马程序员Docker快速入门到项目部署

1.docker安装

#1.安装构建必要的包
sudo apt-get install \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg \
  lsb-release 
#2.验证包是官方安装的
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # Docker 的官方 GPG 密钥 
#3.设置APT 源地址(stable版本)
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
#4.更新apt源
sudo apt-get update 
#5.安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io

2.docker程序启动和校验

#1.启动docker
systemctl start docker
#2.停止docker
systemctl stop docker
#3.重启docker
systemctl restart docker
#4.开机自启
systemctl enable docker

以上命令目前没有执行权限,操作的是整个服务器docker这个软件而不是docker的某一个容器

#5.调出本地所有镜像
docker images
#6.调出正在运行的容器
docker ps

3.docker理解

镜像(image):包含应用本身以及运行所需要的环境、配置、系统函数库

容器(container):Docker在运行镜像时创建一个隔离环境

在这里插入图片描述

4.常见命令

在这里插入图片描述

docker run 创建并运行容器

docker run \
	-d\ #代表让容器在后台运行
	--name [名称]\
	-p [主机端口:虚拟容器端口]\ #端口映射
	-e [KEY=VALUE]\ #设置环境变量,每一个镜像不同,hub_docker
	[repository]:[tag] #运行镜像名和版本,tag不写默认最新

docker pull下载镜像

docker pull [repository]:[tag]

docker images 查看本地所有的本地镜像

docker rmi 删除本地镜像

docker rmi [repository]:[tag]

docker build 自定义镜像

docker save 将本地镜像导出

docker save -o [保存文件名tar] [repository]:[tag]

docker load 将导出的镜像文件加载

docker load -i [tar文件]

docker pull 将镜像上传到云端

docker pull [镜像名]

以下命令直接加container名称

docker stop 停止容器进程,但容器本身还在

docker start 启动已经停掉的容器进程

docker ps 查看正在运行的容器(默认是运行容器,加-a是所有容器)

docker rm 删除某一个容器(与rmi区分)

docker logs 查看容器运行日志

docker exec 进入到容器内部

docker exec -it [容器名] bash #exit退出

5.数据卷

数据卷(volume)一个虚拟目录,是容器内目录宿主机目录之间映射的桥梁。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

docker volume create 创建数据卷

docker volume ls 查看所有数据卷

docker volume rm 删除指定数据卷

docker volume inspect 查看某一个数据卷的详情

docker volume prune 清除数据卷

如果容器已经创建了则无法再挂载数据卷,如果挂载时数据卷不存在会自动创建数据卷

挂载命令示例:

docker run -d --name zwh_test -p 80:80 -v [本地绝对路径]:[容器内部路径] [j]

docker inspect [容器名] 查看某一个容器详情(挂载的数据卷)

匿名卷:容器创建时自动创建的数据卷

删除掉容器,数据卷会依旧保留

6.自定义镜像

不依赖于操作系统的运行

层(layer):添加安装包、依赖、配置等,每一次操作都形成新的一层

基础镜像(BaseImage):应用依赖的系统函数库、环境、配置、文件等

入口(Entrypoint):镜像运行入口,一般是程序启动的脚本和参数

Dockerfile其中包含一个个指令,用指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。

指令说明示例
FROM指定基础镜像FROM centos:6
ENV设置环境,可在后面指令使用ENV key value
COPY拷贝本地文件到镜像的指定目录COPY ./jrell.tar.gz /tmp
RUN执行Linux的shell命令RUN tar -zxvf /tmp/jrell.tar.gz && EXPORTS path=/tmp/jrell:$path
EXPOSE指定容器运行时监听的端口,是给镜像使用者看的EXPOSE 8080
ENTRYPOINT镜像中应用的启动命令,容器运行时调用ENTRYPOINT java -jar xx.jar

https://docs.docker.com/engine/reference/builder

示例 :

FROM ubuntu:16.04                
ENV JAVA_DIR=/usr/local         
# 设置java环境变量               
COPY ./jdk8.tar.gz $JAVA_DIR/    
# 复制JDK                        
RUN cd $JAVA_DIR \              
    && tar -xf ./jdk8.tar.gz    
    && mv ./jdk1.8.0_144 ./java8
# 设置java环境                     
ENV JAVA_HOME=$JAVA_DIR/java8    
ENV PATH=$PATH:$JAVA_HOME/bin    # 入口,java路径的添加和配置       
ENTRYPOINT ["java", "-jar", "/app.jar"] #相当于java -jar /app.jar

为什么要压缩再解压直接拷贝不行吗?

减少复制压力;减少镜像层数

构建镜像:

docker build -t [repository]:[tag] [Dockerfile所在目录]

设置时区为了让日志时间吻合

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

7.Docker网络

默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上在这里插入图片描述

ip地址会在停止启动时变动。

加入自定义网络的容器才可以通过容器名互相访问

命令说明
docker network create [网络名] [容器名]创建一个网络
docker network ls查看所有网络
docker network rm删除指定网络
docker network prune清除未使用的网络
docker network connect [网络名] [容器名]使指定容器连接加入某网络
docker network disconnect使指定容器连接离开某网络
docker network inspect查看网络详细信息
ip addr查看网桥

docker run可以直接加--network网络名,直接加入网络,可以直接ping 网络名通。

8.DockerCompose

Docker Compose通过一个单独的docker-compose.yml模板文件(YAML文件)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署

DockerCompose示例:

version:"3.8"

services:
	containerA:
		image:A
		container_name:A
		ports:
			- "22:22"
	containerB:
		image:B
		container_name:B
		ports:
			- "11:11"

每一个容器称为服务

在这里插入图片描述

建立container参数:

build:
	context:.
	dcockerfile:Dockerfile

docker compose的命令格式如下:

docker compose [options] [command]
类型参数或指令说明
Options-f指定compose文件的路径和名称
-p指定project名称
Commandsup创建并启动所有service容器
down停止并移除所有容器、网络
ps列出所有运行的容器
logs查看指定容器的日志
stop停止容器
start启动容器
restart重启容器
top查看运行的进程
exec在指定的运行中容器中执行命令
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值