docker
1. docker 好处
-
应用更快速的交互和部署
传统模式,安装一堆应用程序,redis,mysql,php
docker,打包镜像发布测试,一键运行 -
快捷的升级和扩缩容
部署就像搭积木,项目整体打包成一个镜像,扩展A,B,C....服务器
-
更简单的运维系统
在容器化后,开发环境,测试环境和线上环境高度一致
-
更高效的计算利用资源
docker 是内核级别的虚拟化,可以运行很多容器实列
2. 名词概念
-
镜像(image)
docker 镜像可以看作是一个文件系统,里面有各个程序软件,可以通过模板创建容器服务或多个服务
-
容器(container)
独立运行一组或多个多组应用,通过镜像创建。可以理解为一个容器对应一个linux系统
启动,停止,删除等基本命令
-
仓库(repository)
存放镜像的地方,仓库可分为公有的和私有的
2. 安装 docker
参考官方安装文档地址:docker docs centos
参考官方命令地址:docker command
- 卸载旧版本
$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
- 需要安装的包,设置镜像仓库
$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo // 默认国外地址
$ sudo yum-config-manager --add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo // 阿里云镜像地址
- 安装 docker docker-ce 社区版 ee企业版本
// 安装最新版本
$ yum makecache fast // 更新yum
$ sudo yum install docker-ce docker-ce-cli containerd.io
// 或者安装指定版本
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
- 启动 docker
systemctl start docker
- 查看 docker 版本
docker version
- 创建 hello-world 镜像,如果没有就去下载 pull
docker run hello-world
- 查看 hello-world 镜像
docker images
3. 卸载 docker
// 卸载依赖
$ sudo yum remove docker-ce docker-ce-cli containerd.io
// 删除目录
$ sudo rm -rf /var/lib/docker
4. docker 镜像加速
使用加速器可以提升获取docker官方镜像的下载速度,阿里云地址
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xw5na8n9.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
5. 镜像命令
- docker images 查看所有本地主机上的镜像
[root@ /] docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 11 months ago 13.3kB
// 解释
REPOSITORY 镜像名,仓库源
TAG 标签,版本
IMAGE ID 镜像ID
CREATED 创建时间
SIZE 大小
// 可选项
-a,--all // 查看所有镜像
-q,--quiet // 查看镜像ID
- docker search 搜索镜像
[root@ /] docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10295 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3809 [OK]
// 可选项,通过搜藏来过滤
--filter=STARS=3000 // 搜索镜像STARS(关注数)大于3000的
- docker pull 下载镜像
[root@ /] docker pull mysql
Using default tag: latest // 默认值latest版本,可以指定版本
latest: Pulling from library/mysql
6ec7b7d162b2: Pull complete // 分层下载,docker images的核心联合文件系统
fedd960d3481: Pull complete
7ab947313861: Pull complete
64f92f19e638: Pull complete
3e80b17bff96: Pull complete
014e976799f9: Pull complete
59ae84fee1b3: Pull complete
ffe10de703ea: Pull complete
657af6d90c83: Pull complete
98bfb480322c: Pull complete
6aa3859c4789: Pull complete
1ed875d851ef: Pull complete
Digest: sha256:78800e6d3f1b230e35275145e657b82c3fb02a27b2d8e76aac2f5e90c1c30873 // 签名,防伪
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest // 真实地址
// 等同于
docker pull mysql
docker pull docker.io/library/mysql:latest
// 下载指定版本
docker pull mysql:5.7
- docker rmi 删除镜像
[root@ /] docker rmi -f IMAGE ID // 删除指定镜像
[root@ /] docker rmi -f IMAGE ID IMAGE ID IMAGE ID // 删除多个镜像
[root@ /] docker rmi -f $(docker images -aq) // 删除指定镜像
6. 容器命令
只有创建了镜像,才可以创建容器
[root@ /] docker pull centos // 安装 centos 镜像
- docker run [可选参数] image 新建容器并启动
[root@ /] docker run -it centos /bin/bash // 启动进入容器
[root@04f87e202399 /] ls // 查看容器内的centos基础版本,很多命令不完善
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@04f87e202399 /] exit // 从容器中退出,容器停止并退出。或者ctrl + p + q 容器不停止退出
exit
[root@ /]#
// 可选参数说明
--name="name" 容器名字
-d 后台运行方式
-it 使用交互方式运行,进入容器查看内容
-P 指定容器端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-p 随机指定端口
- docker ps列出所有运行的容器
[root@ /] docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a1400d2872a centos "/bin/bash" 25 seconds ago Up 25 seconds recursing_rubin
// 可选参数说明
默认 列出当前运行的容器
-a 列出当前运行的容器 + 历史运行过的容器
-n=? 最近创建的容器
-q 只显示容器编号
- docker rm image id 删除容器
docker rm 容器ID // 删除指定容器,正在运行中的不可删除,强制删除 rm -f
docker rm -f $(docker ps -aq) // 删除所有容器
docker ps -a -q | xargs docker rm // 删除所有容器
- 启动停止容器
docker start 容器ID // 启动容器
docker restart 容器ID // 重启容器
docker stop 容器ID // 停止容器
docker kill 容器ID // 强制停止容器
- docker run -d 后台启动容器
[root@ /] docker run -d centos
3f5f3e00ccedaf222e8bf7d83416f3d1f4f6e1755ffc32596bdee656a5169c2a
[root@ /] docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
// docker ps 发现centos停止了
// 常见的坑 docker 使用后台容器运行,就必须有个前台进程,docker 发现没有应用,就会自动停止
- docker logs 查看日志
[root@ /] docker logs -tf -n 10 容器id
// 可选参数说明
-f 跟踪日志输出
-n 显示行数
-t 显示时间
- docker top 查看容器进程命令
[root@ /] docker top f19285e56c53
- docker inspect 查看容器内的信息
[root@ /] docker inspect f19285e56c53
- docker exec -it 进入当前运行容器
[root@ /] docker exec -it f19285e56c53 /bin/bash
[root@f19285e56c53 /]#
// 扩展
docker exec 进入容器开启一个新的终端,
docker attach 进入容器正在执行的终端,不会启动新的程序
- docker cp 容器内容拷贝到主机上
// 在当前主机下目录
[root@ /] docker attach 172793b5fdbd // 进入容器
[root@172793b5fdbd /]# touch 1.php // 创建文件
control + p + q //退出容器
[root@ /] docker cp 172793b5fdbd:/1.php / // 拷贝文件
6. 命令图
7. 部署nginx
[root@ /] docker search nginx // 搜索nginx
[root@ /] docker pull nginx // 下载
[root@ /] docker images // 查看容器
[root@ /] docker run -d --name nginx001 -p 3344:80 nginx // 运行
// 参数意义
// -d 后台运行
// --name 重命名
// -p 设置端口 宿主机端口:容器内部端口
[root@ /] docker ps // 查看运行的容器
[root@ /] docker exec -it 894bdd008b3f /bin/bash // 进入
root@894bdd008b3f:/ exit // 退出
[root@ /]

浙公网安备 33010602011771号