docker学习之路

环境 :

ubuntu 16.4


下载docker

首先使用命令行下载 docker

wget -qO- https://get.docker.com/ | sh

启动

下载完成之后进行一个启动,但是会出现错误 提示用户没有权限

ubuntu默认是非root用户,非root用户会提示错误信息所以最简单的办法是使用

sudo su

进入root用户模式执行以下命令

开启docker start

sudo service docker start

重启docker服务

service docker restart

关闭docker服务

versice docker stop

更换镜像源

访问国外镜像源太慢了 只能使用国内源 

Docker 官方中国区:https://registry.docker-cn.com
网易:http://hub-mirror.c.163.com
中国科技大学:https://docker.mirrors.ustc.edu.cn
阿里云:https://y0qd3iq.mirror.aliyuncs.com

进入宿主机的文件目录          /etc/docker/daemon.json            这是docker在宿主机上的镜像源配置,

一般情况是没有的 daemon.json 配置文件的,

      vim daemon.json   创建一个同名文件 在其中写入

{
  "registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"]
}

根据情况选择 上述四个源的url地址  我这里是阿里云  

退出保存 :wq  重启docker服务

service docker restart 

使用 如下命令查看是否生效

docker info|grep Mirrors -A 1

如果显示出如下信息这说明成功

WARNING: No swap limit support
 Registry Mirrors:
  https://y0qd3iq.mirror.aliyuncs.com/

上述操作博文地址


寻找docke镜像 并下载

docker 官方地址源  https://hub.docker.com/ 

(比方 例子)比如我需要下载java的依赖  去 docker 仓库寻找java的包 (实验性质  也可以使用其他搜索情况)

docker search java

 都是java搜索找到的,但是貌似是图中java停止更新了??? 所以下载openjdk  

docker pull openjdk

等待下载

 下载完成 查询下载来的镜像

docker images

能看到openjdk 已经下载了

REPOSITORY          是镜像的名字
TAG                 版本号  默认下载是latest 最新的
IMAGE_ID            镜像id   
CERATED             时间 不要在意...
SIZE                大小

启动docker 容器

当前没有可以使用的镜像  ,所以使用菜鸟教程中的镜像源   拉去源

docker pull training/webapp 

docker run 启动

docker run -it -p 33333:5000 training/webapp python app.py



// 上述表示 
// 使用docker run启动
// -it 启动之后进入命令行输出模式
// -p 33333:5000   将宿主机的33333端口和docker容器的端口5000(5000是菜鸟教程中flask程序,flask的默认端口是5000)  在外部对该程序进行访问时使用设置的宿主机端口
//  training/webapp   镜像
// python app.py  执行flask的程序

在另一台机器中访问宿主机ip加docker -p 33333:5000 设置的3333接口 得到该flask程序输出结果

 可以看到 是输出模式  并且持续输出flask程序的响应

但是注意 一旦退出就会停止 exit   这个容器,不会在次运行,外部也不能通过  ip:port   访问

docker ps 

// 可以查看运行中的docker容器

docker ps -a 

// 查看docker 所有的容器  不管停止的还是运行的  能看到上面运行的    

那么需要使用后台模式挂起 退出并不会stop docker中的容器          -d 后台挂起模式

docker run -d -p 12345:5000 training/webapp python app.py

 可以通过刚刚使用上述命令产生的容器id  也就是 d9b55.....   进行一些操作

// 比如 查看该容器产生的标准输出
docker logs d9b55
// 容器id是docker随机产生的  不需要全部写出  写出前面几位不和其他容器id重复就好了

这是访问一次之后的结果 

如果需要进行一个持续显示输出

docker logs -f d9b     

查看后台挂起容器状态

docker ps

可以多开几个容器 都是同一个镜像  只是宿主机端口不同,访问不同的端口 但都是同一个后台程序

 如果每个容器中的镜像程序都是链接同一个数据库,那么可以后续使用nginx 之类的软件负载均衡 不断轮询

将没有挂起后台的容器重新启动 

docker ps -a  
// 能看到所有运行的和没运行的容器 根据容器id 选择启动



docker start 容器id

菜鸟教程相关url


停止容器

docker stop 容器id

停止全部容器

docker stop $(docker ps -aq)
// docker ps -aq 显示所有容器id

删除容器

 需要先停止容器

// 停止运行容器
docker stop 容器id

// 删除
docker rm 容器id  

删除全部容器

// 默认为容器停止了
docker rm $(docker ps -aq)


// 找到所有容器暂停在删除
docker rm $(docker stop $(docker ps -aq))

删除镜像

docker rmi 镜像名称或者id

 同样和容器一样 如果运行中的容器是依赖于这个镜像的,那么删除也会出现错误,需要先停止依赖这个镜像的容器

原文地址:https://www.cnblogs.com/zengxm/p/11529879.html