1. docker的进程架构
- docker服务进程:就是针对docker服务的命令,启动,重启
- 接口:通过参数指定容器的IP和端口,实现对容器的远程操作
- 客户端命令行:对docker的操作命令
- 最后学会管理容器的网络,进程,容器等
2. docker的命令
- 镜像的拉取
sudo docker search 镜像名称 # 搜索镜像文件
sudo docker pull 镜像名称 - 查看镜像
sudo docker images
- 运行容器
# 简单运行一下,通常会执行一下容器就会挂掉 docker run 镜像名称 # 交互式的运行一个的docker容器,-i:交互式命令, -t:开启一个终端 docker run -it 镜像名称 /bin/bash # 后台运行一个docker容器,并指定运行shell代码 -d:让容器后台运行, -c:运行的shell命令 docker run -d 镜像名称 /bin/sh -c "while true;do echo 辛苦了,学习linux; sleep 1;done" # 运行容器并指定名称 docker run --name xxx -it 镜像名称 /bin/bash
# 运行容器并指定端口映射 docker run --name xxx -it 镜像名称 -p 6000:5000
# 运行容器并制定端口映射,文件夹映射和环境PATH映射
docker run --name xxx -it 镜像名称 -p 6000:5000 -v 宿主机目录:容器目录 -e
# 运行容器指定容器的网络模式
docker run -d --name xxx --net=host# 进入一个存活的容器
docker exec -it 容器id /bin/bash
# 退出容器
exit - 停止容器
sudo docker stop 容器ID/容器名字
- 查看容器
sudo docker ps # 查看存活的容器 sudo docker ps -a # 查看所有的容器
- 启动容器
sudo docker start 容器名称/容器ID
- 查看容器的详情
sudo dockder inspect 容器名称/容器ID
sudo docker inspect e6b | grep -i ipaddr -
停止一个容器
sudo docker stop 容器ID/容器名字
-
重启一个容器
sudo docker restart 容器ID/容器名字
-
删除一个容器
sudo docker rm 容器ID/容器名称 # 必须是非正在运行的容器
-
删除一个镜像
sudo docker rmi image的名字/镜像ID # 确保没有容器使用该镜像(运行或者停止的容器)
-
查看一个运行容器的所有进程
sudo docker top 容器ID/容器名字
-
查看一个容器的端口映射
sudo docker port 容器ID
-
查看运行容器消耗的资源
sudo docker stats 容器ID
-
获取容器内的文件夹
sudo docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
-
放入容器内一个文件夹
sudo docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
3. 访问容器内的nginx
3.1 搜索并下载nginx
sudo docker search nginx
根据镜像的名字下载镜像
sudo docker pull nginx
查看本地的镜像文件
sudo docker images
3.2 运行并访问nginx
3.2.1 运行nginx镜像
返回该容器的一个ID值
sudo docker run -d -p 80:80 nginx # d:后台运行,p实现容器和宿主机端口的映射
查看存活的容器
sudo docker ps
在本地浏览器中输入宿主机IP即可访问nginx
网络流量走向
4. 下载常用的docker
4.1 下载redis
sudo docker search redis
sudo docker pull redis
4.2 下载ubutun
sudo docker search ubuntu
sudo docker pull ubuntu
5. docker 镜像分层原理
我们在下载一个镜像的时候,细心一点会发现,下载的时候会分层下载
原因就是镜像会分层保存,很多容器共用一些层次,分层储存就可以节省容器的内存空间
6. 批量操作容器
只查看容器的ID
sudo docker ps -q
6.1 停止所有正在运行的容器
sudo docker stop `sudo docker ps -q`
6.2 删除所有的容器
sudo docker rm `sudo docker ps -aq`
7. 查看某个镜像可用的所有版本
但是有一点,需要使用外网才可以,以centos为例
https://hub.docker.com/v2/repositories/library/centos/tags/
curl -s https://hub.docker.com/v2/repositories/library/centos/tags/ | jq
然后下载指定的版本
8. 操作dockerHub
以下操作必须使用外网才可以
8.1 注册一个docker hub
link:https://hub.docker.com/
8.2 登录个人账号
8.3 在宿主机登录个人docker账号
sudo docker login
8.4 生成本地镜像
以hello-word镜像为例,发送到自己的docker hub中,使用如下命令
sudo docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
8.5 推送本地镜像到自己账号中
sudo docker push IMAGE
此时自己的dockerhub中就有该镜像了
8.6 将自己账号的镜像拉下来
我需要将本地的删除,然后拉取
9 根据容器生成新的image
通常我们根据一个image,然后安装了很多的服务,我们希望以后基于该容器进行部署,我们就可以将该容器生成一个新的image
9.1 将容器生成image
sudo docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
9.2 推送image
10. 本地镜像的导出和导入
10.1.1 导出
sudo docker save 镜像ID/镜像名称 > 文件名.tar # 导出的文件时tar的格式
10.1.2 导入
sudo docker load -i 文件名.tar # 导出的文件时tar的格式