docker day01(小白必看)部署&开发环境

镜像images

  1. 获取镜像
dock pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
  1. 运行
$ docker run -it --rm ubuntu:18.04 bash
root@e7009c6ce357:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.1 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

docker run 就是运行容器的命令

  • -it :这是两个参数, 一个是-i 交互式操作,一个是’-t’ 终端,我们这里打算 进入bash 执行一些命令并

  • –rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间

  • ubuntu:18.04:这是指用 ubuntu:18.04 镜像为基础来启动容器。

  • bash:放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是 bash

  • exit 退出了这个容器

  • 常用选项说明
    -d, --detach=false, 指定容器运行于前台还是后台,默认为false
    -i, --interactive=false, 打开STDIN,用于控制台交互
    -t, --tty=false, 分配tty设备,该可以支持终端登录,默认为false
    -u, --user="", 指定容器的用户
    -a, --attach=[], 登录容器(必须是以docker run -d启动的容器)
    -w, --workdir="", 指定容器的工作目录
    -c, --cpu-shares=0, 设置容器CPU权重,在CPU共享场景使用
    -e, --env=[], 指定环境变量,容器中可以使用该环境变量
    -m, --memory="", 指定容器的内存上限
    -P, --publish-all=false, 指定容器暴露的端口
    -p, --publish=[], 指定容器暴露的端口
    -h, --hostname="", 指定容器的主机名
    -v, --volume=[], 给容器挂载存储卷,挂载到容器的某个目录
    –volumes-from=[], 给容器挂载其他容器上的卷,挂载到容器的某个目录
    –cap-add=[], 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities
    –cap-drop=[], 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities
    –cidfile="", 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
    –cpuset="", 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
    –device=[], 添加主机设备给容器,相当于设备直通
    –dns=[], 指定容器的dns服务器
    –dns-search=[], 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
    –entrypoint="", 覆盖image的入口点
    –env-file=[], 指定环境变量文件,文件格式为每行一个环境变量
    –expose=[], 指定容器暴露的端口,即修改镜像的暴露端口
    –link=[], 指定容器间的关联,使用其他容器的IP、env等信息
    –lxc-conf=[], 指定容器的配置文件,只有在指定–exec-driver=lxc时使用
    –name="", 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
    –net=“bridge”, 容器网络设置:

    • bridge 使用docker daemon指定的网桥
    • host //容器使用主机的网络
    • container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源
    • none 容器使用自己的网络(类似–net=bridge),但是不进行配置
  • privileged=false, 指定容器是否为特权容器,特权容器拥有所有的capabilities
  • restart=“no”, 指定容器停止后的重启策略:
    • no:容器退出时不重启
    • on-failure:容器故障退出(返回值非零)时重启
    • always:容器退出时总是重启
      –rm=false, 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
      –sig-proxy=true, 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理
列出镜像
docker images

在这里插入图片描述

挂载硬盘
docker run ... -v 主机目录:容器中的目录 ...
复制文件
docker cp 源目录 目标目录

常用命令

docker images -----> 查看已下载的镜像
docker rmi 镜像名称:标签名      -----> 删除已下载镜像
docker search 镜像   ----->   从官方仓库(hub.docker.com)查找镜像
docker pull 镜像名称:标签名   -----> 标签名默认是 latest,代表最新版本。
docker pull 镜像名 ------>下载最新版
docker ps      ----->  列出运行中的容器(运行中)
docker ps -a  ------> 列出所有的容器(运行、未运行)
docker ps -a 查看所有的容器
CONTAINER ID   IMAGE        COMMAND     CREATED         STATUS         PORTS     NAMES
7c291fb47b70   python:3.9   "python3"   4 minutes ago   Up 4 minutes             priceless_almeida
docker stop 容器名称id  ----->  停止容器
docker start 容器名称id   ----->  启动容器
docker start -i 容器的id  --->在将一个停止的容器运行起来的同时,指定交互模式
docker restart 容器名称id  ----->  重启容器
docker rm 容器id   -----> 删除 已经停止运行的容器
docker rm $(docker ps -a -q)    -----> 删除所有停止运行的容器 (慎用)
docker rm -f 容器的id  -----> 强制删除容器 (无论是否停止运行)
docker rmi  镜像的id
docker run 镜像名字:版本  ----->创建一个容器且运行
                -it --->交互模式
docker exec  执行容器中的指令

Dockerfile 参数

FROM:指定基础镜像,必须为第一个命令
MAINTAINER: 维护者信息
ENV:设置环境变量
RUN:构建镜像时执行的命令
ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
EXPOSE:指定于外界交互的端口
VOLUME:用于指定持久化目录
WORKDIR:工作目录,类似于cd命令
在这里插入图片描述

案例

使用MySQL镜像

docker run -d --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.5

命令说明:

  • –name=mysql:为容器指定一个名称为mysql
  • -p 3306:3306:将容器的(后面的3306) 3306 端口映射到主机的(前面的3306) 3306端口。
  • -d:后台运行容器,并返回容器ID。
  • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码为123456。
  • mysql:5.5 要使用的镜像的名称
网络 指令

查看 网络列表
docker network ls
在这里插入图片描述

当我们在使用docker-compose构建服务时,会自动创建一个新的网络如下
查看这个网络中所有的容器ip以及其他信息
docker network inspect 网络id

新建一个网络
$ docker network create -d bridge my-net
在这里插入图片描述

运行容器连接到my-net 网络
docker run --rm -it --network my-net my_flask:1.0 bash

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值