docker介绍

Docker是一个开放源代码的开放平台软件,用于开发应用、交付(shipping)应用、运行应用。Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。

Docker容器虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。
Docker 利用Linux核心中的资源分离机制,例如cgroups,以及Linux核心名字空间(namespaces),来创建独立的容器(containers)。这可以在单一Linux实体下运作,避免启动一个虚拟机造成的额外负担[4]。Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括行程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPU、存储器、block I/O与网络。从0.9版本起,Dockers在使用抽象虚拟是经由libvirt的LXC与systemd - nspawn提供界面的基础上,开始包括libcontainer库做为以自己的方式开始直接使用由Linux核心提供的虚拟化的设施,

依据行业分析公司“451研究”:“Dockers是有能力打包应用程序及其虚拟容器,可以在任何Linux服务器上执行的依赖性工具,这有助于实现灵活性和便携性,应用程序在任何地方都可以执行,无论是公用云端服务器、私有云端服务器、单机等。”

初始操作

更新、安装必备软件

sudo apt update -y #更新软件源中的所有软件列表
sudo apt upgrade -y #更新软件
sudo apt install wget curl sudo vim git -y

docker安装配置

海外服务器

docker安装

wget -qO- get.docker.com | bash

docker卸载

sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Docker-compose安装

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

国内服务器

docker安装

curl -sSL https://get.daocloud.io/docker | sh

docker卸载

sudo apt-get remove docker docker-engine
sudo rm -fr /var/lib/docker/

Docker-compose安装

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.1.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

docker配置

修改Docker配置(可选)(来自烧饼博客

以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘(泪的教训):
cat > /etc/docker/daemon.json <<EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}
EOF

然后重启 Docker 服务:

sudo systemctl restart docker

docker其他操作

docker查看当前运行的容器

sudo docker ps

docker停止容器

sudo docker stop 容器id/名称

docker移除容器

sudo docker rm 容器id/名称

docker查看当前所有镜像

sudo docker images

docker移除指定镜像

sudo docker rmi 镜像id/名称

docker-compose容器迁移

#(压缩文件)tar -czvf 压缩文件名.tar.gz 压缩文件
sudo tar -czvf data.tar.gz data 

#(传输文件)scp -P 端口 -r 压缩文件名.tar.gz 你的用户名@你的ip:/root
sudo scp -P 22 -r data.tar.gz [email protected]:/root  

#(解压文件)tar -zxvf 压缩文件名.tar.gz
sudo tar -zxvf data.tar.gz

#(删除文件)rm -r 压缩文件名.tar.gz
sudo rm -r data.tar.gz

docker进入容器

sudo docker exec -i 容器id/名称 bash

docker-compose指令

#docker-compose 启动
sudo docker-compose up -d

#docker-compose 重启
sudo docker-compose restart

#docker-compose 停止
sudo docker-compose down