1、检查本地是否存在镜像,如查不存在从远端仓库检索
2、利用镜像启动容器
3、分配一个文件系统,并在只读的镜像层外挂载一层读写层
4、从宿主机配置的网桥接口中桥接一个虚拟接口到容器
5、从地址池配置一个IP地址给容器
6、执行用户指定的指令
7、执行完毕后容器终止
docker info查看镜像
docker search mysql登录镜像仓库(默认官方仓库)
docker login -u 用户名 -p 密码 docker logout # 登出查看版本信息
docker version查看本地镜像
docker images查看所以容器列表
docker ps -a查看container 详细信息:
docker inspect 72cfd15cd4c6镜像拉取
docker pull docker.io/library/hello-world:latest docker pull nginx:1.12.2 docker tag 4037a5562b03 ll/nginx:v1.12.2
拉取SQL Server 镜像 sudo docker pull mcr.microsoft.com/mssql/server:2017-latest docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Passw0rd" -p 1433:1433 --name sql1 -h sql1 -d mcr.microsoft.com/mssql/server:2017-latest /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Passw0rd"run 命令 注解
docker run [options] image [command][arg...] -i 交互 -t 终端 -d 后台运行 --rm 退出删除容器 --name 指定容器名称 image 运行镜像 command 启动运行的命令后台启一个镜像
docker run -d image_id以交互进行容器终端,并返回一个sh,再退出时删除此容器
docker run --rm -it 083d7564d904 /bin/sh在容器内执行 /bin/echo hello 命令
docker run --rm 083d7564d904 /bin/echo hello运行容器在后台sleep 300
docker run -d --name test ubuntu /bin/sleep 300映射端口:
docker run -p 容器外端口:容器内端口 docker run -d -p81:80 --rm --name mynginx ll/nginx:v1.12.2 netstat -luntp|grep 81挂载数据卷:
docker run -v 容器外目录:容器内目录 mkdir html cd html wget www.baidu.com -O index.html docker run -d -p82:80 --rm -v/root/html:/usr/share/nginx/html --name mynginx_baidu ll/nginx:v1.12.2传递环境变量:(解决信息孤岛,云原生)
docker run -e 环境变量key=环境变更value docker run --rm -e E_OPTS=abcd -e C_OPTS=bcd ubuntu printenv容器操作 进入容器
docker exec -it container_id /bin/sh删除容器
docker rm container_id重启容器
docker restart container_id停止容器
docker stop container_id启动容器
docker start container_id容器内安装软件:
1、进入容器 docker exec -it mynginx_baidu /bin/bash 2、使用包管理工具 yum/apt-get/apt等 3、更新yum 源 update repository: tee /etc/apt/sources.list <Docker file 的规则: 格式规则: 4组核心的Dockerfile指令
- #为注释
- 强烈建议:大写是指令,小写是内容 Docker 自上而下执行 Docker 第一个指令必须是FROM 指令,用于为镜像文件构建过程中,指定基准镜像,后续的指定指令运行于此基准镜像所提供的运行环境中:
- 实践中,基准镜像可以是任何可用镜像文件,默认情况下,docker build 会在docker 主机(本地)上查找指定的镜像文件,当其在本地不存在时,则会从Docker registry(远端)拉取所需镜像文件.
Dockerfile
- USER/WORKDIR指令 # whoami/pwd 验证
- ADD/EXPOSE指令 # 添加文件/暴露端口
- RUN/ENV指令 # 构建镜像时执行指令/声明变量
- CMD/ENTRYPOINT指令 # 启动容器时执行指令/容器入口脚本
FROM ll/nginx:v1.12.2 USER root WORKDIR /usr/share/nginx/html docker build . -t ll/nginx:v1.12.2_dockerfile将当前index.html 输出到 指定目录ADD index.html /usr/share/nginx/html/index.html输出 80 端口EXPOSE 80docker 四种网络模型
- NAT(默认)
- None(无网络) --net=none
- Host(docker和宿主同用一个网络) --net=host
- 联合网络(两个容器共享一个网络命名空间:共用一个IP) --net container:container_id



