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基础的主要内容,如果未能解决你的问题,请参考以下文章

markdown [Docker] Docker片段列表和命令#linux #docker #snippets

markdown docker-compose片段

sh Docker片段

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

《Docker 源码分析》全球首发啦!

201555332盛照宗—网络对抗实验1—逆向与bof基础