yaolei
yaolei
Published on 2024-12-03 / 30 Visits
0

Docker install and usages

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