Docker是什么
为什么用Docker
Docker的安装
Docker安装请参考菜鸟教程,这里使用Ubuntu作为案例。
使用脚本一键安装
sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun #官方脚本
sudo curl -sSL https://get.daocloud.io/docker | sh #国内 daocloud 脚本
手动安装
卸载旧版本
sudo apt remove docker docker-engine docker.io containerd runc
设置仓库
sudo apt update #更新 apt 包索引
sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common #安装 apt 依赖包,用于通过HTTPS来获取仓库
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add - #添加 Docker 的官方 GPG 密钥
sudo apt-key fingerprint 0EBFCD88 #9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。
sudo add-apt-repository "deb https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ $(lsb_release -cs) stable" #设置稳定版仓库
安装 Docker Engine-Community
sudo apt update #更新 apt 包索引
sudo apt install -y docker-ce docker-ce-cli containerd.io #安装最新版本的 Docker Engine-Community 和 containerd
安装指定版本的Docker
apt-cache madison docker-ce 列出仓库中可用的版本
sudo apt install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io #使用第二列中的版本字符串安装特定版本,例如 5:18.09.1~3-0~ubuntu-xenial。
验证是否安装成功
sudo docker run hello-world
非root用户免sudo权限
sudo usermod -aG docker <your-user> #将用户添加到docker组
Docker的卸载
sudo apt-get purge docker-ce #删除安装包
sudo rm -rf /var/lib/docker #删除镜像、容器、配置文件等内容
Docker的使用
docker的基础命令
docker pull <ubuntu>(image name) #获取镜像
docker run -i(interact)t(terminal) <ubuntu>(image name) /bin/bash(command) #启动容器
docker ps -a #查看所有的容器
docker start <container ID>/<container name> #启动一个已停止的容器
docker run -itd --name ubuntu-test <ubuntu> /bin/bash #在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。
docker restart <container ID>/<container name> #重启容器
docker attach <container ID>/<container name> #进入正在运行中的容器
docker exec <container ID>/<container name> #recommend,因为此命令退出容器终端,不会导致容器的停止。
docker export <container ID>/<container name> > <filename> #导出容器
cat docker/ubuntu.tar | docker import - test/ubuntu:v1 #导入容器快照
docker rm -f <container ID>/<container name> #删除容器
volume的使用
volumes是Docker管理宿主机文件系统的一部分,默认位于 /var/lib/docker/volumes 目录中。使用volume可以持久化存储docker的配置及内容。
# 创建volume
docker volume create gogs
# 使用volume
docker run -d -p 3000:3000 -p 3001:22 --name=gogs -v gogs:/data gogs/gogs
# 删除所有没有被使用的volume
docker volume prune
# 删除指定的volume
docker volume rm gogs
示例参考command:
# nginx
docker pull nginx:alpine
# docker volume create nginx-www
docker volume create nginx-config
# docker volume create nginx-logs
docker volume create nginx-html
# docker run -p 80:80 --name=nginx -v nginx-www:/www -v nginx-config:/etc/nginx -v nginx-logs:/wwwlogs -v nginx-html:/usr/share/nginx/html -d nginx
docker run -p 80:80 --name=nginx -v nginx-config:/etc/nginx -v nginx-html:/usr/share/nginx/html -d nginx:alpine
不使用volume情况下的command:
docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx
# -v $PWD/www:/www:将主机中当前目录下的www挂载到容器的/www
# gogs
docker pull gogs/gogs
docker volume create gogs
docker run -d -p 3000:3000 -p 3001:22 --name=gogs -v gogs:/data gogs/gogs
# gitea
docker pull gitea/gitea
docker volume create gitea
docker run -d -p 3000:3000 -p 3001:22 --name=gogs -v gitea:/data gitea/gitea