一、Docker基本概念
1、简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
- DockerClient客户端
- Docker Daemon守护进程
- Docker Image镜像
- DockerContainer容器
2、作用及解决的问题
1、统一标准(容器化)
-
应用构建
-
- Java、C++、JavaScript
- 打成软件包
-
- .exe
- docker build … 镜像
-
应用分享
-
- 所有软件的镜像放到一个指定地方 docker hub
- 安卓,应用市场
-
应用运行
-
- 统一标准的 镜像
- docker run
2、资源隔离
-
cpu、memory资源隔离与限制
-
访问设备隔离与限制
-
网络隔离与限制
-
用户、用户组隔离限制
-
…
3、架构
-
Docker_Host:
-
- 安装Docker的主机
-
Docker Daemon:
-
- 运行在Docker主机上的Docker后台进程
-
Client:
-
- 操作Docker主机的客户端(命令行、UI等)
-
Registry:
-
- 镜像仓库
- Docker Hub
-
Images:
-
- 镜像,带环境打包好的程序,可以直接启动运行
-
Containers:
-
- 容器,由镜像启动起来正在运行中的程序
4、安装(Linux版)
1、移除以前docker相关包
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、配置阿里yum源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安装docker
sudo yum install -y docker-ce-20.10.9 docker-ce-cli-20.10.9 containerd.io-1.4.9
4、启动并设置开机自启
systemctl enable docker --now
5、配置加速源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://dmv9ukpn.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
二、Docker基础命令
1、登录和注销
docker login #登录 提示Login Succeeded表示登录成功
docker logout #注销
2、镜像管理
1、docker images 查看docker镜像列表
docker images
docker image ls
2、docker search 搜索镜像(docker hub)
docker search 镜像名[:TAG|@DIGEST]
docker search nginx
3、docker pull 拉取镜像
docker pull [设置项] 镜像名[:TAG]
docker pull nginx # 默认拉取nginx最新镜像
docker pull nginx:1.20.1 # 拉取指定版本
4、docker save 将镜像保存为文件(实现迁移镜像)
docker save -o 文件名 镜像名[:TAG]
docker save -o nginx.tar nginx:latest
5、docker load 导入保存的镜像文件(还原迁移镜像)
docker load -i 文件名
docker load -i nginx.tar
6、docker rmi 删除镜像
docker rmi [设置项] 镜像名[:TAG]
docker rmi nginx:latest
7、docker tag 标记镜像
docker tag 原镜像名[:TAG] 目录镜像名[:TAG]
docker tag nginx:latest meanvalue/nginx:1.0
8、docker push 将标记镜像推送到镜像仓库(需先登录)
docker push [设置项] 镜像名[:TAG]
docker push meanvalue/nginx:1.0
9、docker build 使用 Dockerfile 创建镜像
docker build [设置项] PATH | URL | - #可以通过 docker build --help 查看
docker build -t meanvalue/nginx:1.0 . #使用当前目录的 Dockerfile 创建镜像
3、容器管理
1、docker ps 查看容器
docker ps [OPTIONS]
docker ps #查看运行中的容器
docker ps -a #查看所有容器列表
2、docker create 创建一个容器但不启动它
docker create [设置项] 镜像名 [COMMAND] [ARG...]
docker create --name test meanvalue/nginx:1.0
3、docker run 创建并运行一个新的容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run --name test2 meanvalue/nginx:1.0
4、docker start 启动一个或多个已经停止的容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker start test #启动容器名为test的容器
docker start 90b406842089 #启动容器id为90b406842089的容器
5、docker stop 停止正在运行中的容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker stop test #停止容器名为test的容器
docker stop 90b406842089 #停止容器id为90b406842089的容器
6、docker restart 重启容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]
docker restart test #重启容器名为test的容器
docker restart 90b406842089 #重启容器id为90b406842089的容器
7、docker kill 杀死正在运行中的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]
docker kill test #杀死容器名为test的容器
docker kill 90b406842089 #杀死容器id为90b406842089的容器
8、docker rm 删除一个或多个容器,多个容器之间用空格隔开
docker rm [OPTIONS] CONTAINER [CONTAINER...]
docker rm test #删除容器名为test的容器
docker rm 90b406842089 #删除容器id为90b406842089的容器
9、docker pause/unpause 暂停/恢复容器中所有进程
docker pause CONTAINER [CONTAINER...]
docker pause test #暂停容器名为test的容器
docker unpause test #恢复容器名为test的容器
10、docker exec 在容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker exec -it test /bin/bash #进入容器名为test的容器
docker exec -it 90b406842089 /bin/bash #进入容器id为90b406842089的容器