本文章内容针对k8s前置学习的docker入门,如需更多指令,可查看官方文档,文章如有错误,请指正
一、docker基础入门
1、ubuntu安装docker命令:
apt install docker.io -y
2、查看docker的配置文件b
cd /etc/docker/
3、编辑镜像加速配置
vim /etc/docker/daemon.json
{
"registry-mirrors":[
"https://docker.mirrors.ustc.edu.cn/"
]
}
保存文件后,编写以下命令:
systemctl daemon-reload
systemctl restart docker
二、docker常用命令
1、docker环境
1.1、查看docker版本
docker version
1.2、查看docker相关信息
docker info
2、容器的生命周期
(这里以nginx:1.14,容器ID为 87fb049482b3 ,(以下容器可以容器头个字符定义:例如可以缩写为8),为例子展开)
2.1、创建容器
docker create -it --name nginx nginx:1.14
2.2、查看正在运行的容器
docker ps
2.3、查看所有运行的容器
docker ps -a
2.4、启动容器
docker start 87fb049482b3
2.5、停止容器
docker stop 87fb049482b3
2.6、杀死容器进程
docker kill 87fb049482b3
2.7、暂停容器中的所有进程
docker pause 87fb049482b3
2.8、启动容器中的所有进程
docker unpause 87fb049482b3
2.9、创建并启动容器
docker run xxx
3、容器运维
(这里依旧以容器87fb049482b3 为例子,容器id可缩写为8,如果没有其他容器干扰的话)
2.1、获取容器的元信息
docker inspect 8
2.2、进入容器命令
docker exec -it 8 bash
2.3、退出容器
exit
2.4、查看容器里面的进程信息
docker top 8
2.5、查看容器耗费的cpu、内存情况
docker stats 8
2.6、更新容器名称
docker rename 8 nginx2
4、容器rootfs
(以下依旧以容器87fb049482b3 为例子)
4.1、把当前目录下的test.txt文本复制到容器的根目录下
docker cp test.txt 8./
4.2、查看容器里的文件做了哪些更改
docker diff 8
4.3、把当前容器打包成镜像
docker commit -m 'test-commit' 8 nginx-test:1.14
4.4、删除镜像
# 这里需要注意:rm是删除,imageId是镜像的id
docker rmi imageId
4.5、删除所有未被tag标记或者违背容器使用的镜像
docker image prune
4.6、强制删除所有容器
#-f, --force:强制删除镜像文件,无需弹出提示确认;
docker rm -f$(docker ps -a -q)
4.7、强制删除所有镜像
#-f, --force:强制删除镜像文件,无需弹出提示确认;
docker rmi -f$(docker images -q)
5、镜像仓库
# login 登录仓库
# pull 拉取镜像
# push 推送镜像
# tag 给镜像打标记
# search 搜索镜像
docker login|pull|push|tag|search
6、容器资源
6.1、创建volume
docker volumn create mydata
6.2、挂载volume
#使用 docker run 命令时,可在命令中使用 -v 选项来挂载 Volume:
docker run -v <volume_name>:/<container_mount_point> <image_name>
#其中 <volume_name> 是你创建的卷名称,<container_mount_point> 是容器内的文件路径,和 <image_name> 是容器要使用的镜像名称。例如:
docker run -v mydata:/home/data nginx
#以上命令将在容器内创建一个 /home/data 目录,并将主机中的 mydata 目录挂载到该容器目录中(注意,冒号前面的为 Volume 名称,冒号后面的为容器内挂载路径)
7、系统日志
依旧以容器87fb049482b3 为例子
7.1、获取容器的活动日志
docker logs -f 87fb049482b3
7.2、获取docker操作事件
# since后面带时间戳,表示自时间起的操作
docker events -since="14673202400"
7.3、镜像构建过程中的历史信息
docker history nginx:1.14
三、dockerfile的编写
1、基础镜像
创建dockerfile文件夹
mkdir dockerfile-std
编辑dockerfile文件
vim Dockerfiel
# 基础镜像
from nginx:1.19
# dockerfile的维护者
maintainer xuby@qq.com
# dockerfile的注释
label xuby dockerfile-std
由以上的dockrfile文件创建一个docker-std的v1版本镜像
docker build -t docker-std:v1 .
查看该镜像的创建历史
docker history docker-std:v1
2、环境变量
编辑dockerfile文件
# 基础镜像
from nginx:1.19
# dockerfile的维护者
maintainer xuby@qq.com
# dockerfile的注释
label xuby dockerfile-std
# 构建时的环境端口变量
arg port 80
# 运行时的环境端口变量
env port 80
3、拷贝文件
创建文件
touch test.txt
创建文件夹test
mkdir test
把test.txt文件复制到test文件夹
cp test.txt ./test
把test文件夹进行打包
tar -zcvf test.tar
编辑dockerfile文件
#基础镜像
from nginx:1.14
#dockerfile的维护者
maintainer xuby@qq.com
#dockerfile的注释
label imooc dockerfile-std
# 构建时的环境变量
arg port 80
# 运行时的环境变量
env port 80
# 拷贝
copy test.txt /
# 拷贝并且解压
add test.tar /
重新构建镜像
docker build -t docker-std:v1 .
创建并运行一个容器
docker run --rm -itd -P docker-std:v1
进入容器
# 该容器的id是781f684b3ac835b4967cc7d76bf290b56fd50d70276b6235cbf57e4c9180adea
docker exec -it 781 bash
在容器内执行ls查看是否有刚才复制的test.txt和test存在
4、工作目录
运行某文件夹下的命令,在实际开发中多永于跑囧本
#基础镜像
from nginx:1.14
#dockerfile的维护者
maintainer xuby@qq.com
#dockerfile的注释
label imooc dockerfile-std
#构建时的环境变量
arg port 80
#运行时的环境变量
env port 80
#拷贝
copy test.txt /
#拷贝并且解压
add test.tar /
# 指定工作目录
workdir /
run ls
# 指定另外一个工作目录
workdir ./test
run ls
使用docker build -t docker-std:v1 . 构建时即可查看到日志
5、指令和端口
编辑dockerfile文件
#基础镜像
from nginx:1.14
#dockerfile的维护者
maintainer xuby@qq.com
#dockerfile的注释
label imooc dockerfile-std
#构建时的环境变量
arg port 80
#运行时的环境变量
env port 80
#拷贝
copy test.txt /
#拷贝并且解压
add test.tar /
# 指定工作目录
workdir /
run ls
# 指定另外一个工作目录
workdir ./test
run ls
# 容器启动时执行的命令
# cmd 会作为entrypoint的参数进行传递
cmd ["-g","daemon off;"]
entrypoint ["nginx"]
# 把上面的arg port 80 端口作为入参
expose ${port}
6、卷挂载
#基础镜像
from nginx:1.14
#dockerfile的维护者
maintainer xuby@qq.com
#dockerfile的注释
label imooc dockerfile-std
#构建时的环境变量
arg port 80
#运行时的环境变量
env port 80
#拷贝
copy test.txt /
#拷贝并且解压
add test.tar /
# 指定工作目录
workdir /
run ls
# 指定另外一个工作目录
workdir ./test
run ls
# 容器启动时执行的命令
# cmd 会作为entrypoint的参数进行传递
cmd ["-g","daemon off;"]
entrypoint ["nginx"]
# 把上面的arg port 80 端口作为入参
expose ${port}
# 卷挂载
volume ["/data"]
构建镜像
docker build -t docker-std:v1 .
创建并且运行容器
docker run -itd --rm -P docker-std:v1
进入容器
# 以上生成的容器id为:3a8fd19c0269
docker exec -it 3a bash
通过ls查看是否有data路径
7、健康检查
#基础镜像
from nginx:1.19
#dockerfile的维护者
maintainer xuby@qq.com
#dockerfile的注释
label xuby dockerfile-std
#构建时的环境变量
arg port 80
#运行时的环境变量
env port 80
#拷贝
copy test.txt /
#拷贝并且解压
add test.tar /
#指定工作目录
workdir /
#在构建的时候执行
run ls
#换一个工作目录
workdir /test
#在构建的时候执行
run ls
#容器启动时执行的命令
#cmd 会作为entrypoint的参数进行传递
cmd ["-g","daemon off;"]
entrypoint ["nginx"]
#把上面的arg port 80 端口作为入参:1:开发人员方便查看 2:-P 动态映射窗口
expose ${port}
#挂载卷
volume ["/data"]
# 安装curl库,nginix:1.19自带curl
# RUN apt-get update
# run apt-get install curl -y
#健康检查
healthcheck --interval=5s --timeout=3s cmd curl -fs http://localhost/ || exit 1
构建镜像:
docker build -t docker-std:v1 .
创建并且运行容器
docker run -itd -P --rm docker-std:v1
四、dockercompose入门
1、安装命令
apt install docker-compose -y
2、查看版本
docker-compose version
3、编辑
创建目录
mkdir dockercompose-std
创建编辑dockerfile文件
from nginx:1.14
创建编辑docker-compose.yaml文件
version: "3"
services:
nginx1:
image: nginx:1.14
container_name: nginx1
ports:
- 8081:80
nginx2:
# 启动完nginx1启动
depends_on:
- nginx1
build:
# 要注意这里是运行刚才创建的dockerfile文件
context: .
container_name: nginx2
ports:
- 8082:80
注意执行docker-compose命令的当前路径,必须的docker-compose.yaml所在的路径
创建并且启动dockercompost中的容器
docker-compose up -d
查看docker-compose正在运行的容器
doocker-compose ps
停止容器
docker-compose stop
启动容器
docker-compose start