vagrant 启动 linux VM
新建一个 docker 文件夹,在文件夹下创建一个名为 Vagrantfile 的文本文件:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.define "node0" do |node0|
node0.vm.network "private_network", ip: "192.168.1.110"
node0.vm.hostname = "node0"
end
config.vm.define "node1" do |node1|
node1.vm.network "private_network", ip: "192.168.1.111"
node1.vm.hostname = "node1"
end
end
在docker文件夹下利用git bash启动虚拟机:
$ vagrant up docker0 docker1
$ vagrant ssh docker0
安装 docker
使用 ubuntu 默认源安装:
$ apt-get install docker.io
$ docker -v (查看docker引擎版本)
$ apt-get remove docker.io (卸载docker)
这种方式方便,但安装的docker版本略旧。
使用 docker 官方源安装:
$ sudo apt-get install -y --no-install-recommends \
apt-transport-https ca-certificates \
curl software-properties-common
$ curl -fsSL https://apt.dockerproject.org/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb https://apt.dockerproject.org/repo/ \
ubuntu-$(lsb_release -cs) main"
$ sudo apt-get update
$ sudo apt-get -y install docker-engine
$ docker -v (查看docker引擎版本)
$ systemctl status docker 或 service docker status
这种方式安装的docker版本是最新的,甚至可以选装测试版。docker官方文档地址:docs.docker.com(有时不翻墙很慢)。
运行 docker 容器
两种容器:短任务和长任务。
短任务
$ docker run hello-world (也可先执行docker pull hello-world)
$ docker ps -a (-a表示全部容器,包括停止的)
$ docker logs <容器id>
$ docker run -d -e HAHA='wbwang' busybox echo $HAHA (-d 表示后台执行, 镜像id+空格之后是容器启动后执行的命令和参数)
$ docker run -it busybox /bin/sh (-it表示开启标准输入输出)
$ docker stop <容器id> && docker rm <容器id>
长任务
长任务往往执行网络服务:
$ docker run -d -p 9000:9000 -v "/var/run/docker.sock:/var/run/docker.sock" portainer/portainer
$ docker run -d -p 8080:8080 swaggerapi/swagger-ui
$ docker exec -it <container id> /bin/sh
查看容器日志文件路径:
docker inspect --format='{ { .LogPath } }' containername
docker 构建
可以本地构建,也可以使用Docker Hub的自动构建。本地构建,可以使用命令行构建,更多的使用Dockerfile构建。
利用命令行构建镜像
$ docker run -d -p 80:80 nginx
$ curl localhost:80
$ docker exec -it <nginx的容器id> /bin/sh
# apt-get update && apt-get install vim (然后用vim修改一下/usr/share/nginx/html/index.html)
# exit
$ docker commit <nginx的容器id> nginx:test
$ docker run -d -p 81:80 nginx:test
$ curl localhost:81
利用 Dockerfile 构建镜像
新建一个目录,在目录下创建一个叫Dockerfile的文本文件:
FROM nginx
COPY index.html /usr/share/nginx/html/index.html
创建一个index.html:
<!DOCTYPE html>
<html>
<body>
<h1>======= Welcome to nginx! =======</h1>
<p>haha</p>
</body>
</html>
执行构建(命令最后有个点):
$ docker build -t nginx:2 .
$ docker run -d -p 82:80 nginx:2
镜像 push 到 docker hub
$ docker tag nginx:2 wbwang/nginx:2
$ docker images (查看镜像列表)
$ docker login -u wbwang (登录Docker Hub)
$ docker push wbwang/nginx:2
$ docker run -d -p 83:80 wbwang/nginx:2
利用 dockerhub 自动构建
- 在github上建个库,库的根目录下建个叫Dockerfile的文件
- 登录hub.docker.com,在create下拉菜单中选择Create Automated Build,弹出页点选github
- 选择刚创建的库,保存
- 在Build Settings选项卡中点击Trigger按钮
- 在Build Details选项卡中等待构建成功
docker 端口
1
Port 7946 TCP/UDP for container network discovery.
Port 4789 UDP for the container overlay network.
2
TCP port 2377 for cluster management communications
TCP and UDP port 7946 for communication among nodes
TCP and UDP port 4789 for overlay network traffic
3
Port 7946 TCP/UDP for container network discovery.
Port 4789 UDP for the container ingress network.
远程访问 docker 引擎
下面的配置方式仅针对 ubuntu 16,其他版本慎用。
处于安全的原因,docker引擎只能被本机访问。如果想远程访问docker引擎,需要修改服务的启动参数。首先查看一下当前的启动参数:
sudo systemctl cat docker | grep ExecStart
ExecStart=/usr/bin/docker daemon -H fd://
修改配置:
sudo systemctl edit docker
然后输入以下的内容:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd://
ctrl+O 是保存,然后按回车创建一个文件。
重启 docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
将 doker 日志写入 syslog
参考 docker 相关官方文档
ubuntu 16 内置了 rsyslog。在 ubuntu 下(其他linux貌似相同)要将 docker 日志写入 syslog,需要在目录/etc/docker
创建一个叫daemon.json
的文件:
{
"log-driver": "syslog"
}
重启docker服务后,去看syslog:
tail /var/log/syslog -n 100
docker 清理
参考 这个文档
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论