docker常用命令

-------------------------------------------------------------------
		---------------------启动Docker---------------
-------------------------------------------------------------------
使docker开机启动,启动docker
$ sudo systemctl enable docker
$ sudo systemctl start docker

启动docker,并使docker开机启动
$ sudo service docker start 
$ sudo chkconfig docker on 
停止docker服务
$ sudo service docker stop


重新加载服务,重启docker
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker


建立 docker 组:
$ sudo groupadd docker
将当前用户加入 docker 组:
$ sudo usermod -aG docker $USER

从 Docker Registry 获取镜像
docker pull [选项] [Docker Registry地址]<仓库名>:<标签>

-----列出镜像--------
搜索镜像centos
$ sudo docker search centos

列出已经下载下来的镜像 docker images 
$ docker images
根据仓库名列出镜像
$ docker images ubuntu
列出特定的某个镜像,也就是说指定仓库名和标签
$ docker images ubuntu:16.04

显示虚悬镜像(dangling image)
$ docker images -f dangling=true

使用过滤器来列出虚悬镜像,看到在 mongo:3.2 之后建立的镜像
$ docker images -f since=mongo:3.2
使用过滤器来列出虚悬镜像,看到在 mongo:3.2 之前建立的镜像
$ docker images -f before=mongo:3.2
通过 LABEL 来过滤
$ docker images -f label=com.example.version=0.1

以指定格式列出镜像ID和仓库名:
$ docker images --format "{{.ID}}: {{.Repository}}"

-------------------------------------------------------------------
		----------------Docker 镜像-----------------------
-------------------------------------------------------------------
-----构建镜像--------
镜像构建docker build
docker build [选项] <上下文路径/URL/->

将容器保存为镜像
docker commit --author "Tao Wang <twang2218@gmail.com>" --message "修改了默认网页" webserver nginx:v2

-----搜索nginx镜像--------
$ docker search nginx

-s N 参数可以指定仅显示评价为 N 星以上的镜像
通过 docker push 命令来将镜像推送到 Docker Hub

-----拉取nginx镜像--------
$ docker pull nginx

-----删除本地镜像--------
$ docker rmi [选项] <镜像1> [<镜像2> ...]
$ docker rmi 501
$ docker rmi centos

用 docker images 命令来配合
删除所有仓库名为 redis 的镜像:
$ docker rmi $(docker images -q redis)
删除所有在 mongo:3.2 之前的镜像:
$ docker rmi $(docker images -q -f before=mongo:3.2)

-----查看镜像情况--------
查看具体的改动
$ docker diff webserver

比较nginx:latest 的历史记录
$ docker history nginx:v2

-------标记镜像-------------
将ba58这个镜像标记为192.168.7.26:5000/test
$ sudo docker tag ba58 192.168.7.26:5000/test
上传镜像
$ sudo docker push 192.168.7.26:5000/test

用 curl 查看仓库中的镜像
$ curl http://192.168.7.26:5000/v1/search

到另外一台机器去下载这个镜像
$ sudo docker pull 192.168.7.26:5000/test

---------------------------制作镜像---------------------------
从 rootfs 压缩包导入,这条命令自动下载了 ubuntu-14.04-x86_64-minimal.tar.gz 文件,并且作为根文件系统展开导入,并保存为镜像 openvz/ubuntu:14.04 
docker import [选项] <文件>|<URL>|- [<仓库名>[:<标签>]]
$ docker import http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz openvz/ubuntu:14.04

在一台机器上将镜像保存为归档文件
$ docker save alpine | gzip > alpine-latest.tar.gz
在另一台机器上加载镜像
$ docker load -i alpine-latest.tar.gz

写一个命令完成从一个机器将镜像迁移到另一个机器:使用Linux的管道
docker save <镜像名> | bzip2 | pv | ssh <用户名>@<主机名> 'cat | docker load

-------------------------------------------------------------------
		----------------Docker 容器-----------------------
-------------------------------------------------------------------
-----启动容器--------
docker启动一个ubuntu容器并在守护态运行
$ sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

ocker run 的时候如果添加 --rm 标记,则容器在终止后会立刻删除,--rm 和 -d 参数不能同时使用
$ docker run --name webserver --rm -p 80:80 nginx

docker启动一个nginx容器
$ docker run --name webserver -d -p 80:80 nginx

我们以交互式终端方式进入 webserver 容器,并执行了 bash 命令
$ docker exec -it webserver bash

将容器保存为镜像:docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
$ docker commit --author "Tao Wang <twang2218@gmail.com>" --message "修改了默认网页" webserver nginx:v2

查看容器的存储层的改动
docker diff <容器ID或容器名>

查看镜像内的历史记录
$ docker history nginx:v2


查看容器信息
$ docker ps
查看容器信息,包括终止的容器
$ docker ps -a
获取容器的输出信息
$ docker logs

------容器启动、终止、重启-------
启动一个终止态的容器
docker start <容器ID或容器名>
终止一个运行中的容器
docker stop <容器ID或容器名>
重启一个容器nginx
docker restart nginx


-----导出容器--------
导出容器为容器快照,docker export
$ sudo docker export 7691a814370e > ubuntu.ta

-----导入容器--------
从容器快照文件中再导入为镜像
$ cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
指定 URL 或者某个目录,从容器快照文件中再导入为镜像
$sudo docker import http://example.com/exampleimage.tgz example/imagerepo


-----删除容器--------
删除一个处于终止状态的容器 docker rm
$sudo docker rm trusting_newton
清理全部终止状态的容器
docker rm $(docker ps -a -q)

查看docker daemon的运行状况
ps aux | grep docker
docker -d
-------------------------------------------------------------------
		----------------仓库-----------------------
-------------------------------------------------------------------
命令来输入用户名、密码和邮箱来完成注册和登录
$ docker login


-------------------------------------------------------------------
		----------------数据卷-----------------------
-------------------------------------------------------------------
挂载一个主机目录作为数据卷:加载主机的 /src/webapp 目录到容器的 /opt/webapp 目录,目录不存在 Docker
会自动为你创建它
$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py

查看数据卷的具体信息
$ docker inspect web


-------------------------------------------------------------------
		-----------------------容器网络----------------------
-------------------------------------------------------------------
当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口
$ sudo docker run -d -P training/webapp python app.py

-p(小写的) 则可以指定要映射的端口,另外-p可以使用多次
$ sudo docker run -d -p 5000:5000 training/webapp python app.py
$ sudo docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py
使用 ip::containerPort 绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口
$ sudo docker run -d -p 127.0.0.1::5000 training/webapp python app.py

查看映射端口配置
$ docker port nostalgic_morse 5000

创建一个新的 web 容器,并将它连接到 db 容器
$ sudo docker run -d -P --name web --link db:db training/webapp python app.py


-------------------------------------------------------------------
		----------------容器访问控制-----------------------
-------------------------------------------------------------------
检查转发是否打开
$sysctl net.ipv4.ip_forward
手动开启转发
$sysctl -w net.ipv4.ip_forward=1
查看网桥和端口连接信息
$ sudo brctl show

查看 IP 地址配置
$ ip addr
查看路由信息
$ ip route


注意:
1.容器是以镜像为基础,再加一层容器存储层,组成这样的多层存储结构去运行的。

-------------------------------------------------------------------
		----------------swarm-----------------------
-------------------------------------------------------------------
下载镜像
$ docker pull swarm
查看 Swarm 版本,验证是否成功下载 Swarm 镜像
$ docker run --rm swarm -v

配置节点,添加 Dockerdaemon 的网络监听
$ sudo docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

启动集群,Docker 集群管理需要使用服务发现(Service Discover) 功能,启动 consul 服务容器,映射到主机的 8500 端口
$ docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap

启动管理节点,启动一个主管理节点,映射到主机的 4000 端口
$ docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise <manager0_ip>:4000 consul://<consul_ip>:8500

启动工作节点,需要在每个工作节点上启动 agent 服务,获取节点的主机地址为 <node_ip> ,并指定前面获取到的 consel 服务地址。
$ docker run -d swarm join --advertise=<node_ip>:2375 consul://<consul_ip>:8500


创建集群 id,在任意一台安装了 Swarm 的机器上执行 swarm create 命令来在 DockerHub 服务上进行注册。
$ docker run --rm swarm create

配置集群节点,在所有要加入集群的普通节点上面执行 swarm join 命令,表示把这台机器加入指定集群当中。
$ docker run --rm swarm join --addr=192.168.0.2:2375 token://946d65606f7c2f49766e4dddac5b4365 

配置管理节点,启动 manager 服务,默认监听到 2375 端口【本地的 2375 端口已经被 Docker Daemon 占用,将manager 服务监听端口映射到本地一个空闲的 12375 端口】
$ docker run -d -p 12375:2375 swarm manage token://946d65606f7c2f49766e4dddac5b4365

查看集群节点列表
$ docker run --rm swarm list token://946d65606f7c2f49766e4dddac5b4365

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值