Docker安装及常用命令
请点击 > 官方安装手册
学习请点击 > 理论知识
CentOS 7.6.1810 安装步骤如下:
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum-config-manager --enable docker-ce-nightly
$ sudo yum-config-manager --enable docker-ce-test
$ sudo yum install docker-ce docker-ce-cli containerd.io
$ sudo systemctl start docker
$ sudo systemctl status docker
$ sudo docker run hello-world
$ sudo docker images hello-world
$ sudo docker run hello-world
$ sudo systemctl enable docker
最常用的docker客户端:docker
也可通过REST API与服务器通信
systemctl status docker.service #查看docker状态
docker -H 192.168.1.2 info #-H参数可与远程服务器通信
/etc/systemd/system/multi-user.target.wants/docker.service #在环境变量 ExecStart 后面添加 -H tcp://0.0.0.0 #允许远程配置
docker run -d -p 80:80 httpd
docker images #查看下载到本地的镜像
docker images httpd #查看httpd镜像信息
docker ps 或者 docker container ls #显示当前运行的容器
systemctl daemon-reload #重启docker daemon
systemctl restart docker.service #重启docker服务
CLI或API启动、停止、移动或删除容器
docker pull #从Registry 下载镜像
docker pull hello-world #用来验证docker是否安装成功
docker pull centos #下载centos base镜像
docker images centos #查看镜像信息
docker run #下载镜像并启动容器
docker run hello-world #运行hello-world
docker run -it centos #启动并进入 CentOS 容器
docker run haproxy #可研究负载均衡软件HAProxy
docker run django #学习使用django开发python web应用
docker run -it ubuntu #运行容器。(-it以交互模式进入容器)
docker run -it 22d31cc52b3e #对镜像进行调试
docker commit names ubuntu-with-vi #创建为新镜像,官方不建议
docker build -t ubuntu-vi-dockerfile #创建为新镜像,官方推荐(-t命名)
docker history ubuntu-vi-dockerfile #显示镜像的构建历史
docker rmi debian:tag #删除host中的镜像,只有最后一个tag被删除才真被删除
docker search httpd #搜索hub中的镜像
docker tag myimage-v1.9.1 myimage:1.9.1 #给镜像打tag
docker login -u 133 #登录docker hub
docker tag httpd 133/httpd:v0.1 #修改镜像的registry
docker push 133/httpd:v0.1 #上传镜像至docker hub
docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
#运行自己的registry
docker tag 133/httpd:v0.1 registry.example.net:5000/133/httpd:v0.1
#重命名镜像使之与registry匹配
docker push registry.example.net:5000/133/httpd:v0.1
#上传镜像至本地registry
docker pull registry.example.net:5000/133/httpd:v0.1
#从本地registry下载镜像
docker images registry.example.net:5000/133/httpd:v0.1
#查看镜像
registry配置安全传输:https特性
docker run -d centos /bin/bash -c "while true; do sleep 1;done"
#后台长期运行容器
docker stop fe39cc2ccc8b #停止一个容器
docker run --name "my_http_server" -d httpd
#为容器指定名字
docker run -d centos /bin/bash -c "while true; do sleep 1; echo I_am_in_container;done"
#获取长ID
docker attach 长ID #进入容器命令终端,ctrl +p or +q退出
docker exec -it ID bash #进入容器命令终端
docker exec -it
docker logs -f ID #查看启动命令的输出
docker start stop kill restart pause
docker stop $(docker ps -a -q) #停止所有container
docker rm $(docker ps -a -q) #删除所有container
docker rm -v $(docker ps -aq -f status=exited)
#删除所有退出的container
docker rmi $(docker images -q) #删除所有images
docker run -d --restart=always httpd #重启容器,stop或kill的不重启
docker run -d --restart=failure:3 httpd #重启容器最多3次
docker pause names #暂停容器
docker unpause names #恢复运行
docker create #container处于created状态
docker start #后台启动容器
docker run #是create和start的组合
docker run -m 200M --memory-swap=300M centos
#设置内存+swap进行限额,默认没有限制
#只有内存没有内存+swap时,默认后者是两倍
docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 280M
#images对容器进行压力测试
docker run --name "container_A" -c 1024 centos
#设置CPU share
docker run --name container_A -it -c 1024 progrium/stress --cpu 1
docker run --name container_B -it -c 512 progrium/stress --cpu 1
#进行压力测试,使用top查看
docker run -it --name container_A --blkio-weight 600 centos
docker run -it --name container_B --blkio-weight 300 centos
#设置blkio-weight,默认500,磁盘的读写带宽
bps 是 byte per second,每秒读写的数据量。
iops 是 io per second,每秒 IO 的次数
docker run -it --device-write-bps /dev/sda:30M centos
#限制容器/dev/sda的速率为30M/s
time dd if=/dev/zero of=test.out bs=1M count=800 oflag=direct
#测试硬盘读写
cgroup 实现资源限额,
namespace 实现资源隔离(六种资源:Mount、UTS、IPC、PID、Network 和 User)
docker run -it --cpu-shares 512 progrium/stress -c 1
docker ps #查看短ID
ls /sys/fs/cgroup/cpu/docker/短ID Tab #查看cpu.shares设置
/sys/fs/cgroup/memory/docker/短ID Tab
/sys/fs/cgroup/blkio/docker/短ID Tab
docker run -h myhost -it centos #设置容器的主机名
docker network ls #查看docker网络
docker run -it --network=none centos #容器指定使用none网络(什么都没有的网络)
docker run -it --network=host centos #指定host网络,配置与主机完全一致,使用ip l
yum install bridge-utils #安装brctl
brctl show #查看网桥
docker network inspect bridge #查看网桥配置信息
user-defined 网络驱动:bridge, overlay 和 macvlan。overlay 和 macvlan
docker network create --driver bridge my_net
#创建默认的bridge网络
docker network inspect my_net #查看刚创建网桥
docker network create --driver bridge --subnet 10.113.0.0/24 --gateway 10.113.0.1 my_net
#为自己创建的网桥指定网段,只有使用 --subnet 创建的网络才能指定静态 IP
docker run -it --network=my_net centos
#使用新的网络
docker run -it --network=my_net --ip 10.113.0.2 centos
#配置静态ip地址
ip r #查看路由信息
sysctl net.ipv4.ip_forward #查看转发是否启用,1为启用
iptables-save #查看防火墙
docker network connect my_net centos短ID
#为centos添加一块my_net网卡
docker run -it --network=my_net2 --name=bbox1 busybox
docker run -it --network=my_net2 --name=bbox2 busybox
#为容器命名,并实现网络通
docker DNS 有个限制:只能在 user-defined 网络中使用
docker run -it --network=container:web1 centos
#通过--network=container:web1 指定 jointed 容器为 web1
dcoker exec -it web1 bash
ip a #查看web1的网络 35章