内容概览

我这里使用了vagrantVirtual Box作为实验环境,其使用方法参照了博客文章路径(七):用 Vagrant 管理虚拟机,另外安装完毕后,需要启用计算机Bios的intel virtual technology,并在windows控制面板中卸载hyper-v,box文件资源可以网上下载,这样安装会比较快。

一、修改生成的vagrantfile,配置其vmbox名称和虚拟机启动后执行的脚本(安装docker)


config.vm.box = "centos-7"  #=>名字需要与之前定义的vagrant box名称一致

--------------------------黄金分割线-------------------------

 config.vm.provision "shell", inline: <<-SHELL
     sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
       sudo yum install -y yum-utils device-mapper-persistent-data lvm2
       sudo yum-config-manager -y --add-repo https://download.docker.com/linux/centos/docker-ce.repo
       sudo yum install -y docker-ce
       sudo systemctl start docker
   SHELL
end

1.将vagrant用户添加到docker用户组

sudo groupadd docker
sudo gpasswd -a vagrant docker

2.退出登录,重启docker服务

exit
sudo service docker restart

3.查看docker镜像

docker image ls

4.查看docker容器

docker container ls

5.参考Docker pull 出现的TLS handshake timeout执行以下命令加速docker镜像下载

echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://f2d6cb40.m.daocloud.io\"" | sudo tee -a /etc/default/docker

6.获取docker镜像,如nginx

docker pull nginx #Default the latest version
docker pull -a nginx #Pull all versions of nginx

当然我们也可以获取指定版本或tag的镜像

docker pull ubuntu:14.04

7.Fork一个镜像,可执行push操作

docker tag ubuntu:14.04 zuohd/ubuntu:14.04
docker login
docker push zuohd/ubuntu:14.04

二、 构建一个简单的docker image

1.参照创建一个c文件,命名为hello.c并编译

2.创建dockfile

FROM scratch
ADD hello /
CMD ["/hello"]

3.编译

docker build -t zuohd/hello-world .

4.运行container

docker run zuohd/hello-world

5.查看docker镜像的层

docker history 928b474fce0f #=>928b474fce0f 对应的是IMAGE ID

查看执行结果

[vagrant@localhost hello-world]$ docker history 928b474fce0f
IMAGE               CREATED              CREATED BY                                      SIZE                COMMENT
928b474fce0f        About a minute ago   /bin/sh -c #(nop)  CMD ["/hello"]               0B
63f27a030eb2        About a minute ago   /bin/sh -c #(nop) ADD file:589e7a47dcdc1f1bd…   861kB

三、 docker container 的操作

1.守护方式启动container

docker run -d zuohd/flask-demo

2.进入容器执行命令

docker exec -it ebfa510c1e0b /bin/bash

3.列出运行的容器IP地址

docker exec -it ebfa510c1e0b ip a

查看执行结果

[root@localhost flask-hello-world]# docker exec -it ebfa510c1e0b ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
38: eth0@if39: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

4.停止容器

docker stop ebfa510c1e0b

5.启动容器

docker start ebfa510c1e0b

6.移除所有容器实例

docker rm $(docker ps -aq)

7.给docker容器实例命名

docker run -d --name=appserver zuohd/flask-demo

8.查看容器详细信息

docker inspect a51b112c4f60

9.查看容器日志信息

docker logs -f a51b112c4f60