安装docker
启用Hyper-V
打开控制面板 - 程序和功能 - 启用或关闭Windows功能,勾选Hyper-V,然后点击确定即可
安装docker
傻瓜安装
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/contai
如果出现这种错误估计是没有下载这个wsl_update_x64.msi
使用docker
docker运行Ubuntu
docker run -i -t ubuntu /bin/bash
-i:表示交互式运行容器,通常与-t一起使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d:后台运行,并返回容器ID
输入命令后,首先会检查本地是否有该镜像,没有的话会从仓库里下载。
exit//退出运行的容器
docker images//查看所有的镜像
输入上述命令就可以看到刚刚下载运行的Ubuntu镜像
docker ps://可以查看正在运行的容器
docker ps -a://可以查看最近运行的容器
容器命名
如果自己不指定名称,docker会随机生成一个名称
//--name后面给容器命名
docker run --name my_ubuntu -i -t ubuntu /bin/bash
合法的容器名称只能包含小写,大写,数字,下划线,圆点,横线
容器的命名必须是唯一的
重新启动停止的容器
上面创建了一个容器,并且指定了名称为my_ubuntu,并且已经用exit停止了,重新运行它
//通过名称来启动
docker start my_ubuntu
//通过ID来启动
docker start 427062a5ae9d
//重新启动
docker restart my_ubuntu
使用docker ps就可以看到已经运行的容器了
附着到容器上
上面启动后并没有进入交互式的页面,可以使用attach进入交互页面
//使用名称
docker attach my_ubuntu
//使用ID
docker attach 427062a5ae9d
运行完上述命令后,就会重新进入交互
创建后台运行的容器
//后台运行加-d,不用-i -t
docker run --name my_ubuntu -d ubuntu /bin/sh -C "while true:do echo hello world; sleep 1; done"
//查看容器运行的日志
docker logs my_ubuntu
//使用-f选项监控,类似与tail -f
docker logs -f ubuntu
//使用ctrl+c退出日志跟踪
查看容器内的进程
docker top my_ubuntu
在容器内运行程序
//后台创建一个文件
docker exec -d my_ubuntu touch /etc/new_config_file
//进入交互界面,即可看到刚创建的文件
docker exec -i -t my_ubuntu /bin/bash
//找到创建的文件
find ./ -name "new_config*"
停止容器
docker stop my_ubuntu
docker stop 90d5687bcae3
自动重启容器
如果因为某种错误而导致容器停止运行,–restart可以自动重启,always表示无论docker的退出代码是什么,docker都会重启该容器
//--restart=always
docker run --restart=always --name my_ubuntu /bin/bash
docker inspect
//docker inspect可以查看更多更详细的信息
docker inspect my_ubuntu
删除容器
docker rm my_ubuntu
docker rm 90d5687bcae3
//删除所有的容器
docker rm "docker ps -a -q"
tag标签
一般用于区别同一个仓库的不同镜像,加上:标签名即可
docker run --name my_ubuntu -i -t ubuntu:12.04 /bin/bash
仓库
docker hub有两种类型的仓库:用户仓库和顶层仓库
用户仓库:用户名/仓库名,例如:jam/ubuntu
顶层仓库只包含仓库名
拉取镜像
使用docker run启动一个镜像时,如果该镜像不在本地,docker会从docker hub下载该镜像,如果没有指定标签,就是:latest
使用docker pull拉去镜像
docker pull ubuntu;//默认标签是latest
docker pull ubuntu:16;//指定tag
查找镜像
docker search可以用来查找所有docker hub上公共的可用镜像
docker search puppet
search会返回很多信息,stars表示用户评价,Official表示是否是官方的,automated表示是否是自动构建的
构建镜像
构建镜像有两种方法:
- docker commit基于已有的容器生成新的镜像
- docker build和dockerfile
创建一个docker账号https://hub.docker.com/官网注册
//注册了账号之后就可以用docker login
docker login
docker commit
基于已有的容器修改后commit
//运行已有的容器
docker run --name my_ubuntu -i -t ubuntu /bin/bash
//安装apache
apt-get install apache2
//退出
exit
//生成镜像,可选参数-m="" --author=""
docker commit my_ubuntu my_ubuntu/apache2
Dockerfile
创建一个目录,编写dockerfile
docker build -t="仓库名/镜像名:标签名"
//查看容器的构建历史
docker history my_ubuntu
docker history 90d5687bcae3
绑定容器端口
//查看容器的端口
docker ps -l
docker port 90d5687bcae3 80
//往index文件里写一些内容
cd /usr/share/nginx/html
echo "Hi, I am your container" > index.html
//-p端口映射,将容器的80端口映射到主机的8080端口
//nginx -g "daemon off"将以前台的方式启动nginx,作为web服务器
docker run -d -p 127.0.0.1:8080:80 --name my_ubuntu my_ubuntu/apache2 nginx -g "daemon off;"
打开127.0.0.1:8080即可看到内容
镜像推送
//格式一定要是你的docker账号的账号名,不然传不上去
docker push 用户名/镜像名
进入到docker hub就可以查看到提交的容器
删除镜像
//删除一个镜像
docker rmi ubuntu
//删除一组镜像
docker rmi ubuntu1 ubuntu2...