容器的基本操作
启动容器
$ docker run IMAGE [COMMAND] [ARG…]
docker run centos7 echo 'hello word'
启动交互式容器
$ docker run -i -y IMAGE /bin/bash
-i --interactive=true|falsh 默认false 启动守护式进程
-太–tty=true|false默认false
docker run -i -t ubuntu /bin/bash
查看容器
$ docker ps [-a] [-l]
docker ps -a -l
docker inspect 59761b775530(容器ID/容器名)
自定义容器名
$ docker run --name=容器名称 -i -t centos7 /bin/bash
重新启动停止的容器
$ docker start -i 容器名/自定义容器名
删除停止的容器
$ docker rm 容器名
什么是守护式容器:
- 能够长期运行
- 没有交互式会话
- 适合运行应用程序和服务
以守护形式运行容器:
$ docker run -i -t IMAGE /bin/bash
ctrl+p ctrl+q
附加到运行中的容器【再次进入以守护形式运行的容器中】:
$ docker attach 容器名【ID/NAME】
启动守护式容器
$ docker run -d 镜像名 [COMMAND] [ARG]
查看容器日志
$ docker logs [-f] [-t] [--tail] 容器名
-f --follows=true|false 默认false[一直跟踪并返回变化]
-t --timestamps=true|false 默认false【在结果加上时间戳】
--tail="all"【返回数量日志】
$ docker -ft --tail10 text1
查看运行中容器内进程:
$ docker top 容器名
在 运行中的容器内启动新进程
$ docker exec [-d] [-i] [-t] 容器名 【COMMAND】【ARG...】
停止守护式容器
$ docker stop 容器名
$ docker kill 容器名
在容器中部署静态网站
设置容器的端口映射
run [-P] [-p]
-P ,--publish-all=true|false 默认为false
docker run -P -i -t ubuntu /bin/bash
-p , --publish=[]
containerPort
docker run -p 80 -i -t ubuntu /bin/bash
hostPost:containerPort
docker run -p 8080:80 -i -t ubuntu /bin/bash
ip::containerPort
docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash
ip:hostPort:containerPort
docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash
Nginx部署流程
- 创建映射80端口的交互式容器
- 安装Nginx
- 安装文本编辑器VIM
- 创建静态页面
- 修改Nginx配置文件
- 运行Nginx
- 验证网站访问
//创建映射80端口交互式容器
docker run -p 80 --name=web -i -t ubuntu /bin/bash
//安装Nginx
apt -get install -y nginx
//安装VIM
apt -get install -y vim
//创建静态页面
mkdir -p /var/www/html
cd /var/www/html
vim index.html
//修改Nginx配置文件
whereis nginx
ls /etc/nginx
ls /etc/nginx/sites-enabled
vim /etc/nginx/sites-enabled/default
修改root的值修改为静态网站的位置 保存退出
//回根目录
cd /
//启动nginx
nginx
//查看当前进程
ps -ef
ctrl+p ctrl+q退出容器
//查看当前运行的容器
docker ps
//查看端口映射状态
docker port web
//验证是否可以正常访问[用宿主机查看]
curl http://127.0.0.1:4906
//验证是否可以正常访问[用docker机查看]
docker inspect web
找到Networksettings->IpAddress 就是地址不用指定端口号
如果停止了容器再重启容器,nginx会不启动,则需要使用 docker exec web nginx 启动进程,但是会改变映射的端口号及IP地址
Docker镜像与仓库
查看和删除镜像
- 列出镜像
- 镜像标签和仓库
- 查看镜像
- 删除镜像
列出镜像
$ docker images [OPTONS] [REPOSITORY]
-a ,--all=false 显示所有镜像
-f , --fikter=[] 显示时过滤条件
--no-trunc=false
-q ,--quiet =false 只显示唯一ID
镜像的仓库
REPOSITORY 仓库 镜像的集合
REGISYTRY 仓库 docker提供的存储镜像的服务
镜像的标签
TAG 标签
查看镜像
$ docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]
-f ,--fomat=""
删除镜像
$ docker rmi [OPTIONS] IMAGE [IMAGE..]
-f ,--force=false Force removal of the image
--no-prune=false Do not delete untagged parents
获取和推送镜像
- 查找镜像
- 拉取镜像
- 推送镜像
查找镜像
1.Docker Hub
[Docker Hub](https://registry.hub.docker.com)
$ docker search [OPTIONS] TERM
--automated=false Only show automated builds
--no-trunc=false Don't truncate output
-s,--stars=0 Only displays with at least xstars //限制星级
最多返回25个结果
拉取镜像
$ docker pull [OPTIONS] NAME [:TAG]
-a,-all-tags=false Download all tagged images in the repository
docker pull ubuntu:14.04
使用 --registry-mirror选项
1、修改:/etc/default/docker
2、添加:DOCKER_OPTS="--registry-mirror=http://MIRROR-ADDR"
https://www.daocloud.io
推送镜像
$ docker push NAME[:TAG]
构建镜像
- 保存对容器的修改,并再次使用
- 自定义镜像的能力
- 以软件的形式打包并分发服务及其运行环境
$ docker commit 通过容器构建
$ docker build 通过Dockerfile文件构建
使用commit构建镜像
$ docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a,--author="" Author
-m,--message="" Commit message //镜像构建信息
-p,--pause=true Pause container during commit //指示不暂停运行中的命令
使用Dockerfile构建镜像
- 创建Dockerfile
- 使用$ docker build命令
创建第一个Dockerfile
#First Dockerfile
From ubuntu:14.o4
MAINTAINER dormancypress "dormancypress@outlook.com"
RUN apt-get install -y nginx
EXPOSE 80
$ docker build [OPTIONS] PATH | URL | -
--force-rm=false
--no-cache=false
--pull=false
-q,quiet=false
--rm=true
-t,--tag=""
docker的C/S模式
Remote API
- RESTful 风格API
- STDIN\STDOUT\STDERR
Docker官方的Remote API Reference:
https://docs.docker.com/reference/api/docker_remote_api/
连接方式
- unix:///var/run/docker.sock
- tcp://hos:port
- fd://socketfd
Docker守护进程的配置和操作
查看守护进程
$ ps -ef | grep docker
$ sudo status docker
使用service命令管理
$ sudo service docker start
$ sudo service docker stop
$ sudo service docker restart
Docker的启动选项
docker -d [OPTIONS]
运行相关:
-D,--debug=false
-e,--exec-driver="native"
-g,--graph="/var/lib/docker"
--icc=true
-l,--log-level=“info”
--label=[]
-p,--pidfile="/var/run/docker.pid"
Docker服务器连接相关
-G,--group="docker"
-H,--hos=[]
--tls=false
--tlscacert="/home/sven/.docker/ca.pem"
--tlscert="/home/sven/.docker/cert.pem"
--tlskey="home/sven/.docker/key.pem"
--tlsverify=false
RemotAPI相关
--api-enable-cors=false
储存相关
-s,--storage-driver=""
--selinux-enabled=false
--storage-opt=[]
Registry相关
--insecure-registry=[]
--registry-mirror=[]
网络设置相关
-b,--bridge=""
--big=""
--fixed0cidr=""
--fixed-cidr-v6=""
--dns=[]
--dns-search=[]
--ip=0.0.0.0
--ip-forward=true
--ip-masq=true
--iptables=true
--ipv6=false
--mtu=0
启动配置文件
/etc/default/docker
Docker的远程访问
环境准备
1.第二台安装docker的服务器
2修改docker守护进程启动选项,区别服务器
3.保证ClientAPI与Server API版本一致
修改服务器端配置
1.修改Docker守护进程启动选项
-H tcp://host:port
unix:///path/to/socket
fd://* or fd://socketfd
守护进程默认配置
-H unix:///var/run/docker.sock
修改客户端配置
1.试用Docker客户端命令选项
-H tcp://host:port
unix:///path/to/socket
fd://* or fd://socketfd
守护进程默认配置
-H unix:///var/run/docker.sock
或者使用环境变量Docker_HOST
export DOCKER_HOST ="tcp://10.211.5.2375"