安装docker
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
添加 yum 软件源
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装开始
yum install -y docker-ce
查看版本
docker -v
[root@localhost ~]# docker -v
Docker version 19.03.8, build afacb8b
镜像加速器
请在 /etc/docker/daemon.json
中写入如下内容(如果文件不存在请新建该文件)
下面的https://hub-mirror.c.163.com
可使用其他镜像加速器地址
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://hub-mirror.c.163.com"]
}
EOF
镜像加速器 | 镜像加速器地址 | 其它 |
---|---|---|
Docker 中国官方镜像 | https://registry.docker-cn.com | |
DaoCloud 镜像站 | http://f1361db2.m.daocloud.io | 需登录,系统分配 |
科大镜像站 | https://docker.mirrors.ustc.edu.cn | |
Azure 中国镜像 | https://dockerhub.azk8s.cn | |
阿里云 | https://<your_code>.mirror.aliyuncs.com | 需登录,系统分配 |
网易云 | https://hub-mirror.c.163.com | |
腾讯云 | https://mirror.ccs.tencentyun.com | |
七牛云 | https://reg-mirror.qiniu.com |
重载daemon,重启docker服务
systemctl daemon-reload
systemctl restart docker
docker 服务相关命令
启动docker服务
systemctl start docker
关闭docker服务
systemctl stop docker
重启docker 服务
systemctl restart docker
查看docker服务状态
systemctl status docker
docker 镜像相关命令
查看本地所有的镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest 927899a31456 3 days ago 647MB
mysql 5.7 5d9483f9a7b2 4 days ago 455MB
mysql latest 0c27e8e5fcfa 4 days ago 546MB
tomcat 8.5.16 b226d7ee3462 2 years ago 292MB
查看镜像的id
[root@localhost ~]# docker images -q
927899a31456
5d9483f9a7b2
0c27e8e5fcfa
b226d7ee3462
查找镜像
docker search 镜像名
拉取镜像
docker pull 镜像名
删除镜像
docker rmi 镜像名
docker 容器相关命令
查看正在运行的docker容器
docker ps
查看所有的docker容器
docker ps -a
docker run 参数
-it(交互式容器)
容器创建后自动进入容器,退出自动关闭容器
-id(守护式容器)
创建容器需使用docker exec进入容器,容器在后台运行,退出后不会关闭容器
docker run -it --name 容器名 centos:7 /bin/bash
docker run -id name=容器名 centos:7
#注:'空格'和'='效果是一样的
#在交互式容器中,退出容器且保留后台
ctrl + p + q
#退出容器后自动删除容器,用于测试
docker run -it --name test --rm 镜像id /bin/bash
#端口映射,访问本地8080端口即容器nignx的80端口
docker run -id -p 8080:80 --name test nginx:1.14 /bin/bash
进入容器
docker attach 容器名
docker exec -it 容器名 /bin/bash
关闭容器
docker stop 容器名
docker kill 容器名
启动容器
docker start 容器名
删除容器 (正在运行的容器不可删除)
docker rm 容器名
查看容器信息
docker inspect 容器名
docker容器数据卷
数据卷:宿主机上的一个目录或文件
- docker 容器删除后,在容器产生的数据还在吗?
不在 - docker 可以和外部机器直接交换数据吗?
不能 - docker 容器之间能进行数据交互吗?
不能
但可以通过挂载 宿主机目录和容器内目录
来实现这些功能
数据卷作用
- 容器数据持久化
- 外部机器和容器间通信
- 容器之间数据交换
docker run -it --name=容器名 -v 宿主机目录:容器内目录 centos:7 /bin/bash
注:
目录必须是绝对路径
如果目录不存在,会自动创建
可以挂载多个数据卷
多容器进行数据交换
多个容器挂载同一个数据卷
# 数据卷容器
# 容器2、3挂载在容器1的数据卷
docker run -it --name=容器名1 -v /volumes centos:7 /bin/bash # /volumes 是数据卷名可修改
docker run -it --name=容器名2 --volumes-from 容器名1 centos:7 /bin/bash
docker run -it --name=容器名3 --volumes-from 容器名1 centos:7 /bin/bash
docker应用部署-部署mysql
需求
在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQL Server。
搜索mysql镜像
docker search mysql
拉取mysql镜像
docker pull mysql
创建容器
cd ~/mysqldocker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
参数说明:
-p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
-v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
操作容器中的mysql
进入容器,操作mysql
docker exec –it c_mysql /bin/bash