基本使用
https://labs.play-with-docker.com/
# 下载nginx镜像
$ docker pull nginx:latest
# 查看本地镜像
$ docker images
# 运行镜像成一个container
# --name 别名,不填则自动生成一个, -d 后台运行, -p 本机端口号与容器端口号映射
$ docker run --name myweb -d -p 8080:80 nginx:latest
# 查看正在运行的容器
$ docker ps
$ docker ps -a #查看所有容器,包括不在运行的
# 停止,开启,重启容器
$ docker stop [容器ID| 别名]
$ docker start [容器ID| 别名]
$ docker restart [容器ID| 别名]
# 删除容器
# -f 强制删除已运行中的容器
$ docker rm -f [容器ID| 别名]
# 删除所有已停止的容器, 运行中的不会删除
$ docker container prune
# 进入容器环境
# alpine 版本为最小内容版本,没有bash工具
$ docker exec -it [容器ID|别名] bash
root@b080e601f3d6:/#
# 操作容器系统,修改nginx默认index.html 文件内容
root@b080e601f3d6:/# cd /usr/share/nginx/html/
root@b080e601f3d6:/usr/share/nginx/html# echo hello nijia > index.html
root@b080e601f3d6:/usr/share/nginx/html# cat index.html
hello nijia
root@b080e601f3d6:/usr/share/nginx/html# exit
# 容器commit为一个镜像
$ docker commit [容器ID|别名] [镜像名:tag]
# Dockerfile 方式创建镜像
…
# 基于哪个镜像
FROM nginx
# 把当前目录下的文件添加到容器中
ADD ./ /usr/share/nginx/html/
…
$ docker build -t myweb:v2 .
# dockerhub云编译成镜像
# 需把代码上传github ,代码中必须带Dockerfile文件
# dockerhub上创建仓库,并绑定github仓库
# dockerhub 上操作云编译生成 dockerhub创建的仓库中的镜像
# 本地镜像上传到dockerhub
# 账号/仓库名 必须 dockerhub上已存在,且本地镜像也必须同样命名 , tag 为版本号,可以自取
$ docker push nirvana/myrepo:tag
# 将一个镜像变成一个本地打包文件,供私下交流使用
$ docker save -o myweb-v2.tar myweb:v2
$ docker load -i myweb-v2.tar
容器之间的互相访问 ip方式
########################################################
#第一个容器
# 创建一个nginx 容器
$ docker run --name=myweb -d -p 8080:80 nginx:latest
# 进入容器 查看ip
nijia@nijiadeMacBook-Pro tmp % docker exec -it myweb bash
root@faf73e35ccdf:/# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 faf73e35ccdf
root@faf73e35ccdf:/#
########################################################
#第二个容器
# 创建一个最小版本的lunix 系统
$ docker dun -dit alpine
# 进入这个系统 sh
$ docker exec -it XXX sh
# 安装 curl
/ # apk add curl
# 通过IP访问第一个容器
/ # curl 172.17.0.2
容器之间的互相访问 link方式
########################################################
#第一个容器
# 创建一个nginx 容器 指定名字
$ docker run --name=myweb -d -p 8080:80 nginx:latest
########################################################
#第二个容器
$ docker run -dit —name m2 —link myweb:myweb alpine
# 进入容器查看host
nijia@nijiadeMacBook-Pro tmp % docker exec -it m2 sh
/ # cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 myweb faf73e35ccdf
172.17.0.3 3bf1d26cb1a3
/ # curl myweb