Docker介绍及安装
Docker官网:https://docs.docker.com/engine/install/centos/
Docker官方镜像仓库:https://hub.docker.com/
什么是docker
docker是一个能够将应用程序容器化的工具,具备打包,分发,部署等功能。容器与容器之间相互隔离,互不影响,也就是说可以在一台服务器上正常运行两个甚至多个不兼容的服务。每一个容器可以看作一个轻量的虚拟机,容器的目录和Linux相似。
docker安装
Docker一般安装在服务器上,以CentOS为例,在官网上的安装方式设置存储库命令如下(不建议):
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
但是在后续安装引擎命令的时候容易报 “网络不可达”的错误。所以建议使用另一条命令,使用阿里的仓库:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
设置存储仓后可以进行下载安装:
# 查看可用版本
yum list docker-ce --showduplicates | sort -r
# 运行结果
docker-ce.x86_64 3:26.1.3-1.el9 docker-ce-stable
docker-ce.x86_64 3:26.1.2-1.el9 docker-ce-stable
第二列是版本字符串,下载通过其完整限定软件包名称安装特定版本如:docker-ce-3:26.1.2-1.el9
下载指定版本docker命令:
yum -y install docker-ce-替换成版本字符串
# 查看docker版本,验证是否成功
docker -v
# 开机自启
sudo systemctl start docker
sudo systemctl enable docker
配置docker镜像加速
以阿里云镜像加速为例,登录阿里云,依次选择“产品 -> 容器 -> 容器镜像服务ACR ”
可以直接复制粘贴下面的命令在服务器运行配置
docker镜像
# 查看本地镜像列表
docker images
# 搜索远程镜像仓库
docker search 镜像名称
# pull拉取镜像,不写版本号默认为最新的版本
docker pull 镜像名称:版本号
# 删除指定镜像
docker rmi 镜像名称/id
以redis为例
[root@localhost]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
a2abf6c4d29d: Pull complete
c7a4e4382001: Pull complete
4044b9ba67c9: Pull complete
c8388a79482f: Pull complete
413c8bb60be2: Pull complete
1abfd3011519: Pull complete
Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
[root@localhost]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 7614ae9453d1 2 years ago 113MB
mysql latest 3218b38490ce 2 years ago 516MB
[root@localhost mysql]# docker rmi redis
Untagged: redis:latest
Untagged: redis@sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Deleted: sha256:7614ae9453d1d87e740a2056257a6de7135c84037c367e1fffa92ae922784631
Deleted: sha256:49c70179bc923a7d48583d58e2b6c21bde1787edf42ed1f8de9e9b96e2e88e65
Deleted: sha256:396e06df5d1120368a7a8a4fd1e5467cdc2dd4083660890df078c654596ddc1c
Deleted: sha256:434d118df2e9edb51238f6ba46e9efdfa21be68e88f54787531aa39a720a0740
Deleted: sha256:2047f09c412ff06f4e2ee8a25d105055e714d99000711e27a55072e640796294
Deleted: sha256:13d71c9ccb39b206211dd1900d06aa1984b0f5ab8abaa628c70b3eb733303a65
Deleted: sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f
[root@localhost]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 3218b38490ce 2 years ago 516MB
docker容器
# 查看当前正在运行的容器
docker ps
# 查看所有容器
docker ps -a
# 创建并运行容器(mysql)
docker run -d \
> -p 3306:3306 \
> --name=mysqltest \
> -v /root/mysql/conf:/etc/mysql/conf.d \
> -v /root/mysql/logs:/logs \
> -v /root/mysql/data:/var/lib/mysql \
> -e MYSQL_ROOT_PASSWORD=123 \
> mysql
参数说明:
-d: 后台运行
-p:端口映射,第一个端口为宿主机端口,第二个端口是容器的端口
–name:容器名称
-v:数据目录挂载,宿主机目录/文件:容器目录/文件
-e:环境配置,这里是设置的MySQL的root密码
mysql:最后的mysql是 镜像名称:版本号
不指定版本号则为默认的 latest
最新版本。
若本地不存在指定的mysql镜像则会从远程仓库拉取镜像并创建容器。
# 查看容器信息
docker inspect 容器名称
# 进入指定运行中的容器
docker exec -it 容器名称 /bin/bash
# 从容器退出
exit
# 启动容器
docker start 容器名称
# 停止容器
docker stop 容器名称
# 删除指定容器
docker rm 容器名称/ID