安装docker:
wget -qO- https://get.docker.com/ | sh
每次使用docker命令时都需要在前面加上sudo并输入密码,我们可以用下面的方法免sudo使用Docker:
如果还没有 docker group 就添加一个:
sudo groupadd docker
ubuntu下,通过一下命令来看有没有group
cat /ect/group
将用户加入该 group 内。然后退出并重新登录就生效啦。
sudo gpasswd -a ${USER} docker
重启 docker 服务
sudo service docker restart
group 或者重启 X 会话
newgrp - docker
或者
pkill X
注意,最后一步是必须的,否则因为 groups 命令获取到的是缓存的组信息,刚添加的组信息未能生效,所以 docker images 执行时同样有错。
使用docker create [image-name] 创建一个容器
创建一个nginx镜像的容器,由于没有指定各项参数,容器实用默认参数,创建后并不会启动,并将容器的ID输出到终端,如果本地没有镜像,将从网络下载镜像。
docker create nginx
使用docker run [image-name] 创建一个容器并运行该容器
创建一个nginx镜像的容器,由于没有指定各项参数,容器实用默认参数,创建并启动运行,并将容器的ID输出到终端,如果本地没有镜像,将从网络下载镜像。但是请使用-d 参数,让容器运行在后台,不然该终端将会被占用无法使用
docker run -d nginx
实用docker ps -a 命令查看当前docker创建的容器,并显示运行状态
docker ps -a
获取Docker容器名称
docker ps --format "{{.Names}}"
启动一个创建好的或者被停止的容器
启动容器 docker start
[container id]
停止、启动、杀死、重启一个容器
docker stop [container id]
docker start [container id]
docker kill [container id]
docker restart [container id]
删除容器
docker rm [container id]
删除全部容器:docker rm $(docker ps -a -q)
删除镜像
docker rmi [image id]
删除全部镜像 :docker rmi $(docker images -q)
创建容器的参数
OPTIONS | 说明 |
---|---|
-a stdin | 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项 |
-d | 后台运行容器,并返回容器ID |
-i | 以交互模式运行容器,通常与 -t 同时使用 |
-t | 为容器重新分配一个伪输入终端,通常与 -i 同时使用 |
--name="nginx-lb" | 为容器指定一个名称 |
--dns 8.8.8.8 | 指定容器使用的DNS服务器,默认和宿主一致 |
--dns-search example.com | 指定容器DNS搜索域名,默认和宿主一致 |
-h "mars" | 指定容器的hostname |
-e username="ritchie" | 设置环境变量 |
--env-file=[] | 从指定文件读入环境变量 |
--cpuset="0-2" or --cpuset="0,1,2" | 绑定容器到指定CPU运行 |
-m | 设置容器使用内存最大值 |
--net="bridge" | 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型 |
--link=[] | 添加链接到另一个容器 |
--expose=[] | 开放一个端口或一组端口 |
-it
-it 参数一般连用,在docker run 启动一个容器后提供一个容器的终端,如果容器中没开启shell进程,也无法对容器进行交互
docker run -it centos
退出容器请使用CTRL + D ;CTRL + C 只会发送给容器的shell,不会退出容器
--name="container name"
--name 将会为容器指定一个名称,没有这个参数,容器的名称将由系统分配
docker create --name="centos-1" centos
-p
-p 参数将一个docker主机的端口映射到容器中
-v 挂载数据卷
将本地文件/root/pan1/pan.txt 挂载到容器/etc/resolv.conf
docker run -d --name web-1 -v /root/pan1/pan.txt:/etc/resolv.conf nginx
将本地目录/root/pan1挂载到容器/etc/pan1 下
docker run -d --name web-2 -v /root/pan1:/etc/pan1 nginx
创建一个数据卷,数据卷不会随着容器被删除而被删除
docker create -v /shiyanloudata --name shiyan -it centos
数据卷可以被多个容器共享,容器挂载其他容器的数据卷
docker run --volumes-from shiyan --name web12345 -d nginx
查看容器的信息
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
查看指定的信息使用-f参数:
-
[root@docker ~]# docker inspect -f {{.LogPath}} web12345