一. Docker的安装-基于Centos7
1.1.1 使用官方安装脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
1.1.2 手动安装
- 卸载旧版本
$sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安装Docker Engine-Community
- 使用 Docker 仓库进行安装
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。
- 设置仓库
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2
国内的稳定仓库:
$ sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装 Docker Engine-Community
$
sudo yum install docker-ce docker-ce-cli containerd.io
- 启动Docker
sudo systemctl start docker
- 通过运行 hello-world 镜像来验证是否正确安装了 Docker Engine-Community 。
$
sudo docker run hello-world
1.1.3 卸载dokcer
- 删除安装包
yum remove docker-ce
- 删除镜像、容器、配置文件等内容:
rm -rf /var/lib/docker
二 Docker的简单命令使用
- **docker run ** 在容器内运行一个应用程序。
各个参数解析:
- docker: Docker 的二进制执行文件。
- run: 与前面的 docker 组合来运行一个容器。
- centos: 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
- **/bin/echo "Hello world": **在启动的容器里执行的命令
以上命令完整的意思可以解释为:Docker 以centos 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
运行交互式的容器 我们通过 docker 的两个参数 -i -t,让 docker 运行的容器实现**"对话"**的能力:
Docker 镜像指令
- Docker 中当前拥有哪些镜像:
docker images或者docker image ls
newzhong@newzhong-PC:~/Desktop$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rabbitmq management 799381c528ac 6 months ago 254MB
mongo latest 5285cb69ea55 6 months ago 698MB
mariadb 10.3 0e8d01679c3b 6 months ago 387MB
mariadb latest 45a5a43e143a 6 months ago 410MB
mysql latest d1dc36cf8d9e 6 months ago 519MB
redis latest f1b6973564e9 6 months ago 113MB
mysql 5.7 42f82e150ec2 6 months ago 448MB
nginx latest 605c77e624dd 7 months ago 141MB
redis 6.0 5e9f874f2d50 7 months ago 112MB
hello-world latest feb5d9fea6a5 10 months ago 13.3kB
centos latest 5d0da3dc9764 10 months ago 231MB
其中REPOSITORY为镜像名,TAG为版本标志,IMAGE ID为镜像 id(唯一的),CREATED为镜像创建者创建的时间,SIZE为镜像大小。
该指令能够查询指定镜像名:docker images rabbitmq,这样会列出所有的在Docker中的rabbitmq的镜像。
该指令还能够携带-q参数:docker images -q , -q表示仅显示镜像的 id:
- 下载镜像
docker pull--- docker pull redis:6.0
docker pull是固定的,后面写上需要下载的镜像名及版本标志;若是不写版本标志,而是直接执行docker pull MySQL,则会下载镜像的最新版本。
- 搜索镜像
docker search - 搜索镜像 指定版本
docker search Mysql:5.7 - 删除镜像
- 通过镜像id docker image rm 00
b. 删除指定版本 : docker image rm mariadb:10.3 若不指定版本就删除最新的
如果要删除的镜像正在运行,就无法删除 -f 强制删除
2.1 Docerk的容器指令
- 通过镜像运行容器
docker run mysql:5.7 - 创建并启动rabbitmq
docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_VHOST=/ -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest --hostname myRabbit --name rabbitmq rabbitmq
参数说明 -d:表示在后台运行容器; -p:将容器的端口 5672(应用访问端口)和 15672 (控制台Web端口号)映射到主机中; -e:指定环境变量: RABBITMQ_DEFAULT_VHOST:默认虚拟机名; RABBITMQ_DEFAULT_USER:默认的用户名; RABBITMQ_DEFAULT_PASS:默认的用户密码; --hostname:指定主机名(RabbitMQ 的一个重要注意事项是它根据所谓的 节点名称 存储数据,默认为主机名); --name rabbitmq:设置容器名称; rabbitmq:容器使用的镜像名称;
- 设置docker启动的时候自动启动rabbitmq
docker update rabbitmq --restart=always
- 启动rabbit_management
- 先进入rabbitmq容器
docker exec -it rabbitmq /bin/bash- 在执行
rabbitmq-plugins enable rabbitmq_management
- 先进入rabbitmq容器
b. 直接执行 docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management
2.2 docker启用和停用相关命令
- 列出容器
docker ps
-a :显示所有的容器,包括未运行的。-f :根据条件过滤显示的内容。--format :指定返回值的模板文件。-l:显示最近创建的容器。-n :列出最近创建的n个容器。--no-trunc:不截断输出。-q :静默模式,只显示容器编号。-s :显示总的文件大小。
- 通过容器的 id 启动
docker start [id] - 通过容器的 id 重启
docker restart [id] - 通过容器的 id 停止
docker stop [id] - 通过容器的 id 直接杀死容器
docker kill [id]
2.3 日志
- 容器运行日志容器id:
docker logs [id] - 要想Linux一样实时的刷新日志使用-f参数:
docker logs -f [id] - 加-t 显示日志的时间戳
2.4 进程交互命令
- 运行 的那些进程: docker top [id]
- 进入容器:
docker exec -it 463e3e91f709 bash- 退出
exit或者ctrl+ D
- 退出
- 文件从外部复制到docker的容器里面
docker cp /usr/local/1.jar [id]:/usr/local/jar - 也可以将容器里面的文件复制到外部:
docker cp 463e3e91f709:/home/1.log /usr/local/