芯が強い人になるESTJ-A

# Docker相关基础命令&dockerfile命令脚本&进阶

IT開発 Tags: 无标签 阅读: 226

镜像相关命令

-d, --detach: 指定容器在后台运行,默认为 false。
-e, --env: 指定环境变量。
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-p,--publish:指定容器暴露的端口,宿主端口:容器内部端口
--name:为容器指定一个名字。
-v,--volume: 映射目录(卷),宿主目录:容器内部目录,常用来将配置文件或者是数据文件放在宿主机器上。
--restart: 指定容器停止后的重启策略:
     no: 容器退出时不重启,默认值
     no-failure: 容器故障退出(返回值为零)时重启,no-failure:3 循环重启3次。
     always: 容器退出时总是重启
--privileged:指定容器是否为特权容器,特权容器拥有所有的权限,默认为 false。
--rm:指定容器停止后自动删除容器(不支持以docker run -d 后天启动的容器),默认为 false.


示例
docker run xxx:运行应用程序。例如运行用来测试 Docker 是否安装成功的简单镜像:docker run hello-world。
docker run --detach --publish=80:80 --name=webserver nginx:后台运行一个 Nginx 容器,端口为 80,容器名为 webserver
docker run -d -p 80:80 --name weberver nginx: 简写形式,同以上命令。

docker pull #拉取镜像
docker images #列出本地所有镜像
docker image ls busybox #查询指定镜像
docker images | grep busybox  #使用docker images  列出所有镜像,然后过滤
docker tag busybox:latest newbusybox:latest #将镜像重命名
docker tag busybox lagoudocker/busybox #重命名
docker rmi busybox #删除镜像
docker run --rm --name=busybox -it busybox sh#创建一个名为busybox的容器并进入busybox容器
touch hello.txt && echo “I love Docker” > hello.txt #创建一个文件并写入内容
docker commit busybox busybox:hello #提交镜像
docker build -t mybusybox #在Dockerfile所在目录构建一个镜像

查询已经运行的镜像

docker ps -a

关闭镜像

docker kill ID

删除镜像

docker rm ID

卸载镜像,注意和上面的区别

docker rmi ID

查看已安装镜像

docker images

开机自启docker

systemctl enable docker.service

关闭开启自启docker

systemctl disable docker.service

设置镜像自启

docker update --restart=always ID

截屏2021-10-25 15.05.51.jpg
截屏2021-10-25 15.10.02.jpg
仓库相关

docker push lagoudocker/busybox #推送镜像到自己创建的仓库
docker run -d -p 5000:5000 --name registry registry:2.7
docker rmi busybox localhost:5000/busybox #删除本地busybox和local~镜像
docker pull localhost:5000/busybox #从本地镜像仓库拉取busybox镜像

容器相关

docker start  #基于已经创建好的容器直接启动
docker run   #直接基于镜像新建一个容器并启动
docker create -it --name=busybox busybox #创建容器
docker ps -a | grep busybox
docker start busybox #启动容器
docker ps  #查看当前运行的容器
docker run -it --name=busybox busybox #进入容器
docker stop busybox
docker ps -a #查看全部容器信息
ps aux
dockers restart busybox
docker attach busybox #进入容器(容器已经启动,退出后容器停止)
docker exec -it busybox sh #进入容器(容器已经启动,退出后容器不停止)
    cd /tmp && touch test  #进入容器创建文件
docker rm busybox #删除一个停止状态的容器
docker rm -f busybox #删除正在运行的容器
docker export CONTAINER #导出一个容器到文件
docker export busybox > busybox.tar #执行导出命令
docker import busybox.tar busybox:test #导入上一步导出的容器
docker run -it busybox:test sh #启动并进入容器
docker run -it --cpus=1 -m=2048m --pids-limit=1000 busybox sh #启动一个1核2G的容器,并且限制在容器内最多只能创建1000个PID

卷的相关命令

docker volume create myvolume #创建数据卷
docker run -d --name=nginx-volume -v /usr/share/nginx/html nginx #在Docker启动时使用-v的方式指定容器内需
要被持久化的路径
docker volume ls #查看主机上的卷
docker volume inspect myvolume #查看myvolume的详细信息
docker run -d --name=nginx --mount source=myvolume, target=/usr/share/nginx/html nginx
使用上一步创建的卷来启动一个nginx容器,并将/usr/share/nginx/html目录与卷关联
docker volume rm myvolume #删除数据卷
注意:正在被使用中的数据卷无法删除,需要先删除所有关联的容器
#启动一个生产日志的容器(producer窗口来表示)
docker run --mount source=log-vol,target=/tmp/log --name=log-producer -it busybox
docker run -it --name consumer --volume-from log-producer busybox #启动消费者容器

dockerfile=脚本

通过脚本文件,生成一个镜像.
镜像是一层一层,脚本也是一个一个的命令。每个命令是一层。

docker compose

截屏2021-09-06 20.38.49.jpg

docker Swarm

docker Stack