Docker学习总结

1.Docker

# 查看全部镜像
$ docker images

# 网络上搜索镜像
$ docker search 镜像名称

# 拉取镜像
$ docker pull 镜像名称

# 删除所有镜像
$ docker rmi 'docker images -q'

# 查看镜像体积(镜像、容器、数据卷所占用的空间)
$ docker system df



# 查看正在运行的容器
$ docker ps

# 查看停止的镜像
$ docker ps -f status=exited

# 创建容器
$ docker run -itd ID
$ docker exec -it ID

# 停止与启动
$ docker stop 容器名称/ID
$ docker start 容器名称/ID

# 删除容器
$ docker rm 容器名称/ID

# 导出容器
$ docker export ID > test.tar		
# 容器快照导入为镜像
$ cat test.tar | docker import  - test/test:v1.0	
$ $ docker import http://app.name.tar example/imagerepo

# 文件拷贝
$ docker cp 需要拷贝的文件或目录 容器名称:容器目录		//文件拷贝到容器(反之亦然)

# 目录挂载(目录与容器目录进行映射,修改宿主机影响容器)
$ docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7 --privileged=true

# 查看容器IP
$ docker inspect 容器名称(容器ID)
# 查看容器底层信息(返回一个 JSON 文件记录着 Docker 容器的配置和状态信息)
$ docker inspect ID

# 构建推送镜像
$ docker build -t imagename .	(.代表Dockerfile文件目录)
$ docker tag ID 191517137/flask:v1d
$ docker push 191517137/flask:v1

# 删除指定容器
$ docker rm 容器名称/ID

# 启动所有容器
$ docker start $(docker ps -a |awk '{ print $1}' | tail -n +2)
# 关闭所有容器
$ docker stop $(docker ps -a |awk '{ print $1}'|tail -n +2)
# 删除所有容器
$ docker rm $(docker ps -a|awk '{ print $1}'|tail -n +2)
$ docker container prune
# 删除所有镜像
$ docker rmi $(docker images -a|awk '{ print $3}'|tail -n +2)

2.Dockerfile

FROM:定制的镜像都是基于 FROM 的镜像。

WORKDIR:设置工作目录。

RUN:用于执行后面跟着的命令行命令。&&符号连接命令,创建 1 层镜像。

CMD:类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:
    CMD 在docker run 时运行。(会被覆盖)
    RUN 是在 docker build。

COPY:复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
ADD:需要解压文件时使用(自动解压)。

   
ENV:设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。

ARG:构建参数,与 ENV 作用一致。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量。

VOLUME:定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。

EXPOSE:仅仅只是声明端口。

HEALTHCHECK:用于指定某个程序或者指令来监控 docker 容器服务的运行状态(健康检查)。
支持下列选项:
--interval=<间隔>:两次健康检查的间隔,默认为 30 秒;
--timeout=<时长>:健康检查命令运行超时时间,如果超过这个时间,本次健康检查就被视为失败,默认 30 秒;
--retries=<次数>:当连续失败指定次数后,则将容器状态视为 unhealthy,默认 3 次。

3.Docker-compose.yml

version:指定本 yml 依从的 compose 哪个版本制定的。

build:指定为构建镜像上下文路径。

context:上下文路径。
dockerfile:指定构建镜像的 Dockerfile 文件名。
args:添加构建参数,这是只能在构建过程中访问的环境变量。
labels:设置构建镜像的标签。
target:多层构建,可以指定构建哪一层。

cap_add,cap_drop添加或删除容器拥有的宿主机的内核功能。
cap_add:
  - ALL # 开启全部权限
cap_drop:
  - SYS_PTRACE # 关闭 ptrace权限
  
cgroup_parent:为容器指定父 cgroup 组,意味着将继承该组的资源限制。

command:覆盖容器启动的默认命令。

container_name:指定自定义容器名称,而不是生成的默认名称。

depends_on:设置依赖关系。
docker-compose up :以依赖性顺序启动服务。
docker-compose up SERVICE :自动包含 SERVICE 的依赖项。在以下示例中,docker-compose up web 还将创建并启动 db 和 redis。
docker-compose stop :按依赖关系顺序停止服务。

deploy:指定与服务的部署和运行有关的配置。只在 swarm 模式下才会有用。

devices:指定设备映射列表。

env_file:从文件添加环境变量。

environment:添加环境变量。

expose:暴露端口,但不映射到宿主机,只被连接的服务访问。
extra_hosts:添加主机名映射。

image:指定容器运行的镜像。

network_mode:设置网络模式。

restart:重启策略。

secrets:存储敏感数据。

security_opt:修改容器默认的 schema 标签。

sysctls:设置容器中的内核参数。

volumes:将主机的数据卷或着文件挂载到容器里。

4.Docker stack

# 显示stack列表
$ docker stack ls

# 列出stack中的服务 
$ docker stack services 

# 列出stack中的任务
$ docker stack ps

# 移除一个或多个stack
$ docker stack rm

# 部署新stack或更新现有stack
$ docker stack deploy -c docker-compose.yml stackdemo

# 查看镜像是否正常启动
$ docker service ps --no-trunc 镜像名称
# 查看具体报错
$ docker service logs -f 镜像名称

5.Linux

# 每行按空格或TAB分割,输出文本中的1、4列
$ awk '{print $1,$4}' log.txt

# crontab定时任务
$ crontab -e
# 添加
$ 0 2 * * * docker restart <容器名>
# 重启生效
$ systemctl reatart crond
# 查看所有定时任务
$ crontab -l

# 查看端口占用情况
$ netstat -ntulp | grep 80

# 查看已经开放的端口
$ firewall-cmd --list-ports

# 开启端口
$ firewall-cmd --zone=public --add-port=80/tcp --permanent
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效


# 重启防火墙
firewall-cmd --reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动


firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

6.Pycharm Docker

$ docker pull jetbrains/projector-pycharm-p:2020.3-projector-v1.7.0

$ docker run -p 8887:8887 -d --name pycharm --restart=always d45bb3b48f9d

7. Docker 安装

# 卸载旧版本
$  sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  
# 设置存储库
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
# 安装docker引擎
$ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 启动docker
$ sudo systemctl start docker

# 下载docker-compose
$ curl -SL https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

# 添加可执行权限
$ chmod +x /usr/local/bin/docker-compose
# 创建软链接
$ ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值