Docker安装(CentOS)

下载yum源:
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo
查看下载内容:
cat !$
yum list |grep docker
  • 官方安装手册(CE版)
  • https://docs.docker.com/install/linux/docker-ce/centos/
sudo yum install docker-ce   #安装docker-ce
sudo systemctl start docker   #启动docker
sudo docker version #查看docker版本
sudo docker run hello-world  #下载hello-world容器并运行测试

若docker下载慢

yum install -y docker-ce
速度慢比较慢,可以直接下载rpm包
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
下载完,上传到Linux上
也需要用yum安装,可以自动解决依赖关系
yum install -y docker-ce-xxx.rpm
systemctl start docker 启动docker

Docker Image

  • Docker Hub官网
  • https://hub.docker.com/explore/
docker pull centos  #下载镜像
docker image ls  = docker images#查看镜像
docker images rm XXX =docker rmi XXX #删除镜像

Docker Container

docker run XXX #创建容器
docker container ls -a =docker ps -a #查看容器
docker container ls -aq = docker container ls -a | awk {'print$1'}  #查看容器ID
docker container rm XXX = docker rm XXX #删除容器
docker rm $(docker container ls -aq)   #删除所有容器
docker rm $(docker container ls -f "status=exited" -q)   #删除已退出的容器

构建自己的Docker镜像

docker container commit =docker commit  #封装新的image
docker image build =docker build #Bulid an image from a Dockfile
docker history 15b3b077c2a4 #查看image分层
docker commit keen_allen yard/centos-vim  #封装新的镜像

mkdir docker-centos-vim
cd docker-centos-vim
vim Dockerfile

FROM centos
RUM yum install -y vim

more Dockerfile
docker build -t yard/centos-vim-new . #以后只用给别人一个Dockerfile文件就可以搭建和自己一模一样的环境

Dockerfile

  • https://docs.docker.com/engine/reference/builder/#usage

压力测试

docker run -it ubuntu
apt-get undate && apt-get install -y stress
which stress  #查看路径
stress --help
stress --vm 1 #启动一个worker
stress --vm 1 --verbose  #dbug输出
stress --vm-bytes 50000M --vebose  #会超出内存限制
exit
top  #查看宿主机内存
vim Dockerfile
---
FROM ubuntu
RUN apt-get update && apt-get install -y stress
ENTRYPOINT ["/usr/bin/stress"]   #可执行程序+可选的参数
CMD []
---
docker run yard/ubuntu-stress --vm 1 --verbose
more Dockerfile   

docker run --help

容器操作

docker ps #查看docker进程
docker run -d yard/flask-hello-world  #在后台执行
docker exec -it  ID  /bin/bash   #交互式执行进入(运行中容器)
ps -ef | grep python #查看python进程
docker exec -it ID python   #进入到python shell里
docker exec -it ID ip a  #打印出运行中容器IP地址
docker stop ID   #停止运行中的容器
docker ps -a    #列出所有的容器,包括未运行的
docker rm $(docker ps -aq) #删除退出的容器
docker run -d --name=demo yard/hello-world   #创建一个名字为demo的容器
docker stop demo #删除demo容器
docker strat demo  #启动demo容器
docker inspect ID   #查看容器详细信息
docker logs ID  #查看容器运行的信息

官方文档Docker container
https://docs.docker.com/engine/reference/commandline/container/

容器的资源限制

docker run --help #查看参数
docker run --memory=200M yard/ubuntu-stress --vm 1 --verbose --vm-bytes 500M
docker run --cpu-shares=10 --name=test1 yard/ubuntu-stress --cpu 1
docker run --cpu-shares=5 --name=test2 yard/ubuntu-stress --cpu 1
top

LInux网络命名空间(实现容器间网络互通)

sudo docker run -d --name busybox /bin/sh -c "while true;do sleep 3600;done"
sudo docker ps
sudo docker exec -it ID /bin/sh  #进入到容器
ip a   #显示当前网络接口
sudo ip netns delete test1   #删除
sudo ip netns list  #查看
sudo ip netns add test1 #添加
sudo ip netns exec test1 ip a #查看地址
ip link  
sudo ip netns exec test1 ip link
sudo ip netns exec test1 ip link set dev lo up
sudo ip link add veth-test1 type veth peer name veth-test2
sudo ip link set veth-test1 netns test1
sudo ip netns exec test1 iplink  #查看test1的IP