docker基础
Posted Henrik-Yao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker基础相关的知识,希望对你有一定的参考价值。
文章目录
一.docker简介
1.存在的问题
在写代码的过程中我们会接触到开发环境,测试环境以及生产环境,若各个环境所需依赖项版本不同,则会造成冲突,而docker完美的解决了这个问题。
2.docker特性
- docker 是一个开源的应用容器引擎
- 基于go语言开发
- docker让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器
- 容器是完全使用沙箱机制,相互之间不会有任何接口
3.docker架构
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像
二.docker下载
1.docker下载安装
可以参考官网:https://www.docker.com
此处以CentOS安装docker为例
# 1、yum 包更新到最新
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
# 5、 查看docker版本,验证是否验证成功
docker -v
2.配置镜像加速器
默认情况下,将来从docker hub(https://hub.docker.com/)上下载docker镜像,太慢。一般都会配置镜像加速器,可以使用以下镜像加速器,阿里云网易云腾讯云需要登录云服务器控制台获取专属镜像加速器
- USTC:中科大镜像加速器(https://docker.mirrors.ustc.edu.cn)
- 阿里云
- 网易云
- 腾讯云
针对Docker客户端版本大于 1.10.0 的用户
可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
查看镜像加速器配置信息
cat /etc/docker/daemon.json
三.docker命令
1.linux命令补充
创建文件
touch 文件名
echo写文件
echo “想要的内容”> 文件名
将想要的内容覆盖到对应的文件当中去,文件当中之前的内容不复存在
echo “想要的内容”>> 文件名
将想要的内容追加到文件后,对文件之前的内容不修改,只进行增添
cat查看命令
cat 文件名
查看当前路径
pwd
Linux编辑文件退出
:w 保存文件但不退出
:w! 强制保存不退出
:wq 保存文件并退出
:wq! 强制保存文件,退出
:q 不保存文件,退出
:q! 不保存文件,强制退出
2.docker进程相关命令
启动docker服务
systemctl start docker
停止docker服务
systemctl stop docker
重启docker服务
systemctl restart docker
查看docker服务状态
systemctl status docker
设置开机启动docker服务
systemctl enable docker
3.docker镜像相关命令
查看docker镜像
docker images
搜索redis镜像
docker search redis
下载最新版本redis镜像
docker pull redis
根据镜像id删除镜像
docker rmi 7faaec683238
查看所有镜像id
docker images -q
删除所有镜像
docker rmi $(docker images -q)
4.docker容器相关命令
创建容器
-i 持续运行
-t 分配终端
–name 命名
/bin/bash 启动shell
-it == -i + -t
-it:创建容器即进入,退出即关闭容器,即交互式容器
id:创建容器没有进入,后台运行容器,即守护式容器
docker run -i -t --name=c1 centos:7 /bin/bash
退出容器
exit
查看正在运行中的容器
docker ps
查看历史容器
docker ps -a
进入容器
-t分配终端
docker exec -it c2 /bin/bash
关闭容器
docker stop c2
启动容器
docker start c2
删除容器
正在启动中的容器不能被删除
docker rm c1
查看所有容器id
docker ps -aq
删除所有容器
docker rm $(docker ps -aq)
查看容器信息
docker inspect c2
四.docker数据卷
1.数据卷引入
- docker容器删除后,在容器中的数据也会随之销毁,那么应该如何保存docker容器中的数据?
- docker容器如何与外部机器直接交换文件?
- 容器之间应该如何进行数据交换?
2.数据卷定义
-
数据卷是宿主机中的一个目录或文件
-
当容器目录和数据卷目录绑定后,对方的修改会立即同步
-
一个数据卷可以被多个容器同时挂载
-
一个容器也可以被挂载多个数据卷
3.数据卷作用
- 容器数据持久化
- 外部机器和容器间接通信
- 容器之间数据交换
4.配置数据卷
docker run .. -v 宿主机目录:容器内目录
docker run -it --name=c1 -v /root/data:/root/data_container centos:7
docker run -it --name=c2 \\
-v ~/data2:/root/data2 \\
-v ~/data3:/root/data3 \\
centos:7
- 宿主机目录即数据卷
- 目录必须是绝对路径,如果目录不存在会自动创建
- ~ = /root 此省略只能用于数据卷,不能用于容器
- \\ 表示换行输入,看起来比较美观
5.配置专用的数据卷容器
创建数据卷
docker run -it --name=c3 -v /volume centos:7
挂载数据卷
docker run -it --name=c1 --volumes-from c3 centos:7
docker run -it --name=c2 --volumes-from c3 centos:7
五.docker安装mysql
拉取最新版镜像
docker pull mysql:latest
创建mysql容器
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
参数说明
- -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
- MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码
通过root和密码123456访问mysql服务
mysql -h localhost -u root -p
以上是关于docker基础的主要内容,如果未能解决你的问题,请参考以下文章