网站建设的书,php网站开发实用技术课后习题,建设网站的3个必要条件,网站开发类的合同范本1. 使用Docker镜像
1.1 获取镜像
主要命令: docker pull NAME[:TAG] NAME 为镜像名称#xff0c;后跟:版本号#xff0c;如果没有跟后面的版本号#xff0c;默认拉取最新的稳定版本
例子#xff1a; 上述命令相当于#xff1a;docker.io/library/ubuntu:latest
1.2 查…1. 使用Docker镜像
1.1 获取镜像
主要命令: docker pull NAME[:TAG] NAME 为镜像名称后跟:版本号如果没有跟后面的版本号默认拉取最新的稳定版本
例子 上述命令相当于docker.io/library/ubuntu:latest
1.2 查看镜像信息
使用images查看已有镜像 docker images 支持子命令如下:
使用tag命令添加镜像标签 docker tag [已有镜像] [新镜像名] 整体来说docker tag命令添加的标签实际上起到了类似链接的作用.
使用inspect查看详细信息 docker inspect [镜像名] 可以使用-f来指定主要获取的属性。 docker inspect -f {{“.Architecture”}} 使用history查看历史镜像 docker history [镜像名] 1.3 搜索镜像 docker search [名称] 支持的命令:
名称默认作用–automatedfalse仅显示自动创建的镜像–no-truncfalse输出信息不截断-s,–star0指定星级以上的镜像
1.4 删除镜像 docker rmi [镜像名] 如果你正在使用一个容器该镜像无法删除
此刻你可以使用-f参数来强行删除但是这并不正确默认情况您要先停止容器删除容器再删除镜像
1.5 创建镜像 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] OPTIONS内容:
-a,–author“”表示作者信息-c,–change[]表示提交时候执行的DockerFile指令-m,–message“”表示消息-p,–pausetrue表示提交时暂停容器运行
首先启动一个容器
接着执行
查看到有test标签为0.1的镜像即为成功。
本地模板导入 cat [本地模板] | docker import - [自己定义的镜像名] 1.6 存出和载入镜像
存出镜像 docker save -o [存出的文件名] [IMAGE[:TAG]] 载入镜像 docker load --input [文件名] 或者 docker load [文件名] 1.7 上传镜像 docker push NAME[:TAG] | [REGISTERY_HOST[:REGISTRY_HOST]/]NAME[:TAG] 首先再Docker Hub先创建一个仓库: https://hub.docker.com/
然后为你需要提交的镜像打一个标签注意!!这里标签需要对应你所建立的仓库名 注意如果显示冒号:denied: requested access to the resource is denied 有可能是没有登录执行docker login(没有账号的要记得去Docker Hub中创建噢)
2. 使用Docker容器
2.1 创建容器
create docker create -it ubuntu:latest // 创建但是并不会运行 docker ps -a // 查看目前存在的容器 create命令与容器运行模式相关的选项
create命令与容器环境和配置相关的选项
create命令与容器资源限制和安全保护相关的选项
启动容器 docker start 06 新建并且创建容器 除了创建容器后通过start命令来启动也可以执行新建并且创建所需命令主要为docker run 等价于先docker create再docker start docker run ubuntu /bin/echo ‘hello world’ 重点所执行的操作
检查本地是否存在指定的镜像不存在就从公有镜像中下载利用镜像创建一个容器并且启动分配一个文件系统给容器并在只读的镜像层外面挂在一个可读写层从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中从网桥的地址池配置一个IP地址给容器执行用户特定的程序应用执行完毕后容器被自动终止。
执行docker run -it ubuntu /bin/bash 其中-t表示Docker 分配一个伪终端并绑定到容器的标准输出上-i则表示容器的标准输入保持打开 运行容器时常见的错误
125Docker daemon 执行错误例如制定了不支持的Docker命令参数126所指定命令无法执行例如权限错误127容器内命令无法找到
守护态运行 docker run -d ubuntu /bin/sh -c “while true;do echo hello world;sleep 1;done” // 会在后台持续运行 docker ps docker logs [id] // 查看输出信息 2.2 终止容器
在Docker中可以使用docker stop来终止一个运行中的容器。 docker stop [id] 注意docker kill 命令会直接发送 SIGKILL信号来强行终止容器 docker restart // 重新启动 2.3 进入容器
2.3.1 attach命令 docker attach [–detach-keys[[]]] [–no-stdin] [–sig-proxy[true]] 容器名 描述选项
命令描述–detach-keys退出attach的快捷键默认是CTRL-p CTRL-q–no-stdin是否关闭标准输入默认true–sig-proxy是否代理收到的系统信号给进程默认true 使用attach命令有时候并不方便多个窗口同事attach连接到同一个容器的时候所有窗口都会显示同步所以当阻塞时便无法使用了
2.3.2 exec命令 docker exec [OPTIONS] 容器名 这里我们主要说几个重要的OPTIONS
命令描述-i–interative打开标准输入接受用户输入命令默认为false–privileged是否给执行命令最高权限默认false-t–tty分配伪终端默认false-u–user“”执行命令的用户名或者ID 注意通过指定-it参数来保持标准输入打开并且分配一个伪终端。通过exec命令对容器执行操作时最为推荐的方式
2.4 删除容器 docker rm [OPTIONS] 容器名|容器ID 这里我们主要说几个重要的OPTIONS
命令描述-f,–force是否强行终止并且删除一个容器-l,–link删除容器的链接但保留容器-v–volumes删除容器挂在数据卷 2.5 导出和导入
2.5.1. 导出容器 docker export [-o | --output[“”]] 容器名 // -o表示导出的tar文件名 2.5.2 导入容器 docker import [-c|–change[“”]] [-m|message[“”]] file|URL-[REPOSITORY[:TAG]] // -c 可以执行DOCKERFILE指令后面会说 **和load的区别**load来导入镜像存储文件到本地镜像库import导入一个容器快照到本地镜像库容器快照文件会丢弃所有的历史记录和元数据信息而镜像存储文件将保存完整记录体积因此更大。
3. 访问Docker 仓库
仓库是集中存放镜像的地方分公共仓库和私有仓库
3.1 Docker Hub公共镜像市场
使用步骤
登录docker login输入用户名密码可以完成注册或者登录docker search可以查找镜像docker pull拉取到本地 我们可以通过-s N参数可以指定仅显示评价为N星以上的镜像
自动创建
自动创建功能对于需要经常升级镜像内的程序来说十分方便。有时候用户创建了镜像安装了某个软件如果软件发布新版本则需要手动更新镜像。 而自动创建允许用户通过Docker Hub指定跟踪一个目标网站目前支持GitHub或者BitBucket上的项目一旦项目发生新的提交则自动执行创建。
操作步骤
创建并登录Docker Hub以及目标网站*在目标网站中连接帐户到Docker Hub在Docker Hub中配置一个“自动创建”选取一个目标网站中的项目需包含Dockerfile和分支指定Dockerfile位置并提交创建
3.2 搭建本地仓库
可以通过官方提供的docker run -d -p 5000:5000 register 来搭建 默认仓库创建在容器的/tmp/registry目录下可以通过-v来修改。
4. Docker 数据管理
容器管理数据的两种主要方式
数据卷容器内数据直接映射到本地主机数据卷容器使用特定容器维护数据卷
4.1 数据卷
4.1.1 在容器内创建 docker run -d -P --name web -v /webapp training/webapp python app.py -v标记可以创建多个数据卷。上述代码表示使用training/webapp镜像创建一个web容器并创建一个数据卷挂载到容器的/webapp目录 -P表示容器服务暴露的端口自动映射到本地的临时端口。
4.1.2 挂载一个主机目录作为数据卷 docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py 表示加载主机的/src/webapp目录到容器的/opt/webapp目录 docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py 默认的数据卷是读写模式可以增加:ro表示为只读
4.1.3 挂在一个本地主机文件作为数据卷
-v 可以从主机挂载单个文件到容器中作为数据卷**不推荐** docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash 4.2 数据卷容器 docker run -it -v /dbdata --name dbdata ubuntu // 创建一个dabata数据卷容器 并且创建一个数据卷挂载到/dbdata ls // 查看/dbdata 可以使用-v在其他容器中来挂载dbdata容器中的数据卷 docker run -it -v dbdata --name db1 ubuntu docker run -it -v dbdata --name db2 ubuntu 这样三个容器在任何一方在该目录下的写入其他容器都可以看到。
可以多次使用 --volumes-from|-v 参数来从多个容器挂载多个数据卷还可以从其他已经挂载了容器卷的容器来挂载数据卷。
最后注意如果要删除一个数据卷必须在删除最后一个还挂载着它的容器时显式使用docker rm -v 命令来指定删除关联的容器
总结
本章主要描述了Docker的基本命令包括镜像创建、删除、标签等并且如何从远程仓库拉取下来容器的运行如何进入容器等。