docker--docker基本命令使用及发布镜像
docker镜像可以完全看作一台全新的电脑使用,无论什么镜像都是对某一东西进行了配置,然后打包后可以快速移植到需要的地方直接使用
省去复杂的配置工作
比如java web项目部署,如果是新部署,需要装系统,配置jdk,maven,sql,redis等各类环境,费时费力还容易出错,
而docker就可以省去配置环境的麻烦,直接让你把war包丢进去,实现分分钟部署一个项目
从头开始简单的说下docker的使用
本次讲解环境为ubuntu 16.04
首先给ubuntu安装docker,我安装的是docker ee, 安装方法:https://docs.docker.com/engine/installation/linux/docker-ee/ubuntu/
安装好之后,便是启动docker
sudo service docker start
与之对应的停止dokcer服务命令就是stop了
sudo service docker stop
然后通过--version可以查看运行的docker版本
sudo docker --version
启动后,是没有任何镜像的,不过可以通过pull命令获取相关镜像

xiaochangwei@ubuntu:~/test$
xiaochangwei@ubuntu:~/test$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest 17eb1d58bf8c About an hour ago 505MB
ubuntu 16.04 00fd29ccc6f1 weeks ago 111MB
xiaochangwei@ubuntu:~/test$
xiaochangwei@ubuntu:~/test$
xiaochangwei@ubuntu:~/test$ sudo docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
e7bb522d92ff: Pull complete
6edc05228666: Pull complete
cd866a17e81f: Pull complete
Digest: sha256:cf8d5726fc897486a4f628d3b93483e3f391a76ea4897de0500ef1f9abcd69a1
Status: Downloaded newer image for nginx:latest
xiaochangwei@ubuntu:~/test$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest 17eb1d58bf8c About an hour ago 505MB
nginx latest 3f8a4339aadd days ago 108MB
ubuntu 16.04 00fd29ccc6f1 weeks ago 111MB
xiaochangwei@ubuntu:~/test$
xiaochangwei@ubuntu:~/test$

sudo docker pull nginx 默认获取最新版本,即TAG为latest的,如果要获取其他版本,则需要使用 sudo docker pull nginx:xxxx
获取镜像后,通过docker run使其运行起来
sudo docker ps -a 列出所有容器, 不加 -a 仅列出正在运行的,像退出了的或者仅仅只是创建了的就不列出来
sudo docker run -d -p 8800:80 --name nginx_xiao nginx #运行指定的镜像
dudo docker run -d --privileged=true -p 83:80 --name nginx83 nginx #提升权限
#宿主主机端口:容器内部端口
-d 后台运行
-p 8800:80 是指定对外暴露的端口 容器内部用80 对应外部宿主主机的的8800 代理一样
--name指定容器的名字 最后的nginx 代码要运行的镜像名字 有tag的加上tag 如 nginx:xxx 默认为latest
然后访问宿主主机地址+8800端口
表明nginx已经成功运行
pull到的镜像肯定有很多需要修改的地方,比如配置文件等或者要自己增加些什么玩意儿进去
sudo docker exec -it 54d26bbce3d6 /bin/bash
通过exec命令进入到容器内部进行操作, 其中红色部分可以是容器id或容器名字
进入之后就和操作新的系统一样,操作完成之后输入exit退出
某些时候需要获取镜像信息详情,比如安装了mysql后需要获取镜像内部的IP,端口等
sudo docker inspect nginx_xiao
这样会出来很多信息,可以通过grep检索需要的项目
xiaochangwei@ubuntu:~/test$ sudo docker inspect nginx_xiao |grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
xiaochangwei@ubuntu:~/test$
那么问题又来了, 进入容器内部并修改了东西后,怎么生成新的镜像供下次直接使用

xiaochangwei@ubuntu:~/test$ sudo docker commit nginx_xiao xiaochangwei/nginx:v1.
sha256:9f2c1a649a75fc72af4c2d6972290d9bc5f97c62ac52d6705b902fcdefeceea1
xiaochangwei@ubuntu:~/test$
xiaochangwei@ubuntu:~/test$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xiaochangwei/nginx v1.0 9f2c1a649a75 seconds ago 108MB
tomcat latest 17eb1d58bf8c hours ago 505MB
nginx latest 3f8a4339aadd days ago 108MB
ubuntu 16.04 00fd29ccc6f1 weeks ago 111MB
xiaochangwei@ubuntu:~/test$

sudo docker commit nginx_xiao xiaochangwei/nginx:v1.0
nginx_xiao 表示我们刚修改的容器名字或者id
xiaochangwei/nginx:v1.0 为保存的镜像名字 :后面为tag
刚刚commit的镜像仅仅是保存在本地的,如果要提交到网络上供其他人pull 使用呢? 如 https://cloud.docker.com/
1.在https://cloud.docker.com/上注册一个账号
2.提交本地镜像到https://cloud.docker.com/上去
这样别人就可以通过docker pull xiaochangwei/nginx:v1.0 来获取并使用这个镜像了
需要注意的是: sudo docker commit nginx_xiao xiaochangwei/nginx:v1.0 镜像名里面包含了 我注册的账户名,这里需要一致,否则无法push
到这里镜像怎么获取,查看,启动,编辑,保存,提交 容器查看 都知道了,但是怎么停止、启动、删除容器呢
1.通过 sudo docker ps -a查看存在的容器信息
2.通过 sudo docker start/stop/restart xxx 来启动、停止、重启指定的容器
2.通过 sudo docker rm xxx 指定容器名或者容器id来删除,删除前请先停止容器,保证在非运行状态

xiaochangwei@ubuntu:~/test$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54d26bbce3d6 nginx "nginx -g 'daemon ..." minutes ago Up minutes 0.0.0.0:->/tcp nginx_xiao
xiaochangwei@ubuntu:~/test$ sudo docker restart nginx_xiao
nginx_xiao
xiaochangwei@ubuntu:~/test$ sudo docker stop nginx_xiao
nginx_xiao
xiaochangwei@ubuntu:~/test$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54d26bbce3d6 nginx "nginx -g 'daemon ..." minutes ago Exited () seconds ago nginx_xiao
xiaochangwei@ubuntu:~/test$ sudo docker rm nginx_xiao
nginx_xiao
xiaochangwei@ubuntu:~/test$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xiaochangwei@ubuntu:~/test$

同样镜像的删除按如下操作
1.通过sudo docker images 列出所有镜像
2.通过sudo docker rmi xxx 来删除指定的镜像,镜像存在依赖关系,先删除最下层,最后删除顶层,建议根据镜像名字来删除

xiaochangwei@ubuntu:~/test$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xiaochangwei/nginx v1. 9f2c1a649a75 minutes ago 108MB
tomcat latest 17eb1d58bf8c hours ago 505MB
nginx latest 3f8a4339aadd days ago 108MB
ubuntu 16.04 00fd29ccc6f1 weeks ago 111MB
xiaochangwei@ubuntu:~/test$ sudo docker rmi tomcat
Untagged: tomcat:latest
Deleted: sha256:17eb1d58bf8cf6809a26c9c47396a259d419d795070670d5a1bf0cbe63f9167c
Deleted: sha256:ba92fe7a45fb76c9842f81a978a3671d3229077811e18c892ec18ddf7a8f372e
Deleted: sha256:909e728190891a5bc59fd5f20cc741a9f8cf05531008de8bf6fcb86cbf9b92b3
Deleted: sha256:757a35964f233352b539f21545c83f7443f666457075e177d5b88ae2afbc70ec
Deleted: sha256:e9af3a1672101d2803af7a9af40b3442e6b2ac5236d27fb486ea34c2be773dcc
Deleted: sha256:32e70354b98514f5c68cf18f01880e355826d7cd633eb7b303af25915e574556
Deleted: sha256:01cd90dce70e314277a0d5550578d8db86efd7aa512fec4587f971a1e2474b1f
Deleted: sha256:49909967c97ee31e2f3f69bbb150807e18b290eb3ab7f39ba0db3cc426278420
Deleted: sha256:b0427413f858084dffd95e8b7c42968c12f8229925a0d4c15985722ccc3f90e9
Deleted: sha256:1af387e1b89f088f694f89d1bd03c91a4f28e7704c4cc151994d0a3bfae42abe
Deleted: sha256:e3c3b2640184c780efdcc2a02fa3e4fdb7f96dceccc1452527d1e9a1a879399b
Deleted: sha256:6fb895d7f122630fbb471eb29f6d5ee2db66425e885f2c22462525daa7d263c2
Deleted: sha256:e3a0c7535fa27c5bb3d91fa905d363bc6a572ea78aad4e5e17b47604c5d2289f
Deleted: sha256:532ea8d384305c2f5fbcd946e0c7ce71d547550c1fa2f6726d37d26688c9e6f8
Deleted: sha256:dfde2fab09732f8a2ae1a51362222e205fda934baccc8017b23867a2e4a1eb90
xiaochangwei@ubuntu:~/test$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xiaochangwei/nginx v1. 9f2c1a649a75 minutes ago 108MB
nginx latest 3f8a4339aadd days ago 108MB
ubuntu 16.04 00fd29ccc6f1 weeks ago 111MB
xiaochangwei@ubuntu:~/test$

以上就是docker的基本使用命令了,下一篇将讲解通过dockerfile来构建镜像
原文地址:https://www.cnblogs.com/xiaochangwei/p/8204511.html
docker--docker基本命令使用及发布镜像的更多相关文章
- docker学习笔记7:发布镜像到docker hub上
镜像创建好后,很重要的一个操作就是共享和发布.可以将自己创建的镜像发布到docker hub上,也可以发布到自己的私有docker hub上. 要想发布镜像到dokcer hub上,首先要在dokce ...
- docker:(1)docker基本命令使用及发布镜像
docker镜像可以完全看作一台全新的电脑使用,无论什么镜像都是对某一东西进行了配置,然后打包后可以快速移植到需要的地方直接使用 省去复杂的配置工作 比如java web项目部署,如果是新部署,需要装 ...
- Docker系列(26)- 发布镜像到阿里云容器服务
1.登录阿里云 2.找到容器镜像服务 3.创建命名空间 4.创建镜像仓库 5.上传镜像
- Docker & ASP.NET Core (3):发布镜像
第一篇:把代码连接到容器 第二篇:定制Docker镜像 上一篇文章最后有个问题,定制的镜像无法正常运行: 这可能是由于无法找到要运行的dll引起的问题. 之前的Dockerfile的文档我是按照微软的 ...
- Docker:发布镜像问题denied: requested access to the resource is denied的解决方法
问题: 发布镜像的时候,按照教程执行的,结果没有成功,搜了下,找到解决方法了,记录一下. denied: requested access to the resource is denied 解决方法 ...
- Ubuntu18.04安装Docker并部署(编译、发布、构建镜像)Asp.NetCore项目全过程笔记
环境准备:阿里云Ubuntu18.04 全新安装 一.安装Docker 1.删除旧版本并更新包索引: sudo apt-get remove docker docker-engine dock ...
- 『现学现忘』Docker基础 — 40、发布镜像到Docker Hub
目录 1.准备工作 2.Docker登陆命令 3.Docker提交命令 4.总结: 5.补充:docker tag命令 1.准备工作 Docker Hub地址:https://hub.docker.c ...
- Docker | 发布镜像到镜像仓库
本文记录发布镜像到 DockerHub 和 阿里云镜像仓库.工作中使用的是JFrog Artifactory 和 Harbor,没有太大差别. 发布镜像到DockerHub https://hub.d ...
- Docker发布镜像至Docker Hub
第一步:Docker生成镜像 docker@default:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE metal-workbench- ...
随机推荐
- 通过三个DEMO学会SignalR的三种实现方式 转载https://www.cnblogs.com/zuowj/p/5674615.html
一.理解SignalR ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信(即:客户端(Web页面)和服务器端可以互相实时的通知消息 ...
- request.getSession().getServletContext().getRealPath("upload/" ); 获取不到 tomcat 服务器目录
上传一个文件,找不到该文件的位置 设置上传的文件是在项目中的话 可以通过查找项目的路径锁定上传的文件路径 解决步骤: 可以通过jsp页面 打印获取项目的物理路径 控制台即可输出项目路径 这只是找了了上 ...
- Result结果类型详解
配置Result 在 struts.xml 文件中,<result> 元素用于配置 Result 逻辑视图与物理视图之间的映射关系,它有两个可选属性 name 和 type.其中,name ...
- AIX系统搭建NFS服务器
本文使用场景:aix6.1升级到aix7.1之后,需要打补丁aix7.1 TL4的补丁,补丁文件有将近10G,当多个系统都升级时,此时搭建nfs服务器,只需要一次上传,其余需升级系统作为客户端只需通过 ...
- 在scrapy中利用Selector来提取数据
1.创建对象 Selector类的实现位于scrapy.selector模块,创建Selector对象的时候,可以将页面的Html文档字符串传递给Selector构造器方法 2.选中数据 调用Sele ...
- 开发者说 | 分布式事务中间件 Seata 的设计原理
导读 微服务架构体系下,我们可以按照业务模块分层设计,单独部署,减轻了服务部署压力,也解耦了业务的耦合,避免了应用逐渐变成一个庞然怪物,从而可以轻松扩展,在某些服务出现故障时也不会影响其它服务的正常运 ...
- @import vs #import - iOS 7
It's a new feature called Modules or "semantic import". There's more info in the WWDC 2013 ...
- WebForm与MVC模式优缺点(转)
Asp.net Web开发方式,分为两种: 1. WebForm开发 2. Asp.Net MVC开发 MVC是微软对外公布的第一个开源的表示层框架,MVC目的不是取代WebForm开发,只是web开 ...
- Tomcat服务启动,项目链接没反应
该原因是因为tomcat的服务已启动,未停止又重新启动项目造成:只要停止服务,再次重新启动即可
- python基础--GIL全局解释器锁、Event事件、信号量、死锁、递归锁
ps:python解释器有很多种,最常见的就是C python解释器 GIL全局解释器锁: GIL本质上是一把互斥锁:将并发变成串行,牺牲效率保证了数据的安全 用来阻止同一个进程下的多个线程的同时执行 ...