Like a BIRDIE flies into your heart...

0%

Docker安装

Docker安装

  1. 卸载旧版本

    1
    2
    3
    4
    5
    6
    7
    8
    sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
  2. 需要的安装包

    1
    sudo yum install -y yum-utils
  3. 设置镜像的仓库

    1
    2
    3
    4
    5
    6
    7
    sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo #国外源

    sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #阿里云的
  4. 更新yum软件索引

    1
    yum makecache fast
  5. 安装docker docker-ce社区 ee 企业版

    1
    sudo yum install docker-ce docker-ce-cli containerd.io
  6. 启动docker

    1
    2
    3
    sudo systemctl start docker

    docker verison #测试安装成功
  7. 测试hello world

    1
    docker run hello-world
  8. 查看下载的hello-world镜像

    1
    2
    3
    (raincur) [root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    hello-world latest bf756fb1ae65 4 months ago 13.3kB
  9. 卸载docker

    1
    2
    3
    4
    5
    6
    #卸载docker 卸载依赖
    sudo yum remove docker-ce docker-ce-cli containerd.io
    #移除容器等 删除资源
    sudo rm -rf /var/lib/docker

    #/var/lib/docker docker的默认工作目录

阿里云镜像加速

  1. 登录阿里云找到镜像加速服务

  2. 找到镜像加速的地址

    image-20200526170158081

  3. 配置使用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sudo mkdir -p /etc/docker

    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://p1tg11h1.mirror.aliyuncs.com"]
    }
    EOF

    sudo systemctl daemon-reload

    sudo systemctl restart docker

run的流程

image-20200526193631304

底层原理

Docker是怎么工作的?

Docker是一个CS结构的系统

Docker常用命令

帮助命令

1
2
3
docker version 		#显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker --help #帮助命令

帮助文档https://docs.docker.com/reference/

镜像命令

docker images 查看所有本地主机上的镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
(raincur) [root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 4 months ago 13.3kB

# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像id
CREATED 镜像的创建日期
SIZE 镜像的大小

#可选项
-a, --all #列出所有的镜像
-q, --quiet #只显示镜像的id

docker search :搜索镜像

1
2
3
4
5
6
7
(raincur) [root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 9544 [OK]
mariadb MariaDB is a community-developed fork of MyS… 3466 [OK]

#可选项,通过收藏过滤
-f, --filter=STARS=3000 #搜索出来的镜像STAR大于3000

docker pull :下载镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
(raincur) [root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker pull mysql
Using default tag: latest #如果不写tag,默认为latest
latest: Pulling from library/mysql
afb6ec6fdc1c: Pull complete #分层下载,docker image的核心,联合文件系统
0bdc5971ba40: Pull complete
97ae94a2c729: Pull complete
f777521d340e: Pull complete
1393ff7fc871: Pull complete
a499b89994d9: Pull complete
7ebe8eefbafe: Pull complete
597069368ef1: Pull complete
ce39a5501878: Pull complete
7d545bca14bf: Pull complete
211e5bb2ae7b: Pull complete
5914e537c077: Pull complete
Digest: sha256:a31a277d8d39450220c722c1302a345c84206e7fd4cdb619e7face046e89031d #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址


# 等价于
docker pull docker.io/library/mysql:latest

# 指定版本下载
docker pull mysql:5.7

(raincur) [root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
afb6ec6fdc1c: Already exists # 已有的不会下载
0bdc5971ba40: Already exists
97ae94a2c729: Already exists
f777521d340e: Already exists
1393ff7fc871: Already exists
a499b89994d9: Already exists
7ebe8eefbafe: Already exists
4eec965ae405: Pull complete
a531a782d709: Pull complete
270aeddb45e3: Pull complete
b25569b61008: Pull complete
Digest: sha256:d16d9ef7a4ecb29efcd1ba46d5a82bda3c28bd18c0f1e3b86ba54816211e1ac4
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

docker rmi :删除镜像

1
2
3
[root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker rmi -f 镜像id				 #删除指定的容器id
[root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker rmi -f 镜像id 镜像id #删除多个容器
[root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker rmi -f $(docker images -aq) #删除所有容器

容器命令

说明:有了镜像才可以创建容器,利用centos镜像学习

1
docker pull centos

新建容器并启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
docker run [可选参数] image

# 参数说明
--name="Name" # 容器名字
-d # 后台方式运行
-it # 使用交互方式运行,进入容器查看内容
-p # 指定容器的端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-P # 随机指定端口


# 测试
# 启动并进入容器
(raincur) [root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker run -it centos /bin/bash
# 查看容器内的centos,基础版本,很多命令不能用
[root@9f5fbbedc072 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr

# 退出
[root@9f5fbbedc072 /]# exit

列出所有运行的容器

1
2
3
4
5
6
7
8
9
10
11
12
13
# docker ps 命令
# 列出当前正在进行的容器
-a # 列出当前正在运行的容器和历史运行过的容器
-n=? # 显示最近创建的n个容器
-q # 只显示容器的编号

[root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f5fbbedc072 centos "/bin/bash" 2 minutes ago Exited (127) 48 seconds ago intelligent_mclean
47bb3827b0d9 bf756fb1ae65 "/hello" 4 hours ago Exited (0) 4 hours ago beautiful_jang
81031195a064 bf756fb1ae65 "/hello" 8 days ago Exited (0) 8 days ago gracious_cohen

退出容器

1
2
exit			# 直接关闭容器并退出
Ctrl + P + Q # 容器不停止退出

删除容器

1
2
3
docker rm 容器id					#删除指定id的容器,不能删除正在运行的容器(使用-f强制删除)
docker rm -f $(docker ps - aq) #删除所有容器
docker ps -a -q|xargs docker rm #删除所有容器

启动和停止容器

1
2
3
4
docker start 容器id		# 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前的容器

常用其他命令

后台启动容器 :

1
2
3
4
5
6
# 命令 docker run -d 镜像名
[root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker run -d --name="rain" centos

# 问题docker ps:发现centos 停止了

#常见的坑:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,会自动停止

查看日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
docker logs -f -t --tail	#容器,没有日志

# 写一段shell脚本
while true;do echo raincurtain;sleep 1;done

[root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker run -d centos /bin/bash -c "while true;do echo raincurtain;sleep 1;done"

[root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker ps -q
43872217f9f2

# 显示日志
-t # 显示日志时间戳
-f # 跟随最新的日志
--tail number # 显示指定行数的日志
[root@iZ2zeb4w6gvcyumtazbl85Z ~]# docker logs -t -f --tail 10 43872217f9f2

  自高考完以来,在挣扎中,在体悟中,我越来越领悟到友情、亲情等除了爱情之外的美好。

阅读全文 »

  在搭建博客的过程中开始真正接触到git这一强大的工具,也就很快对其产生了好奇心。于是写一篇博客来记录自己学习git和github的过程。

阅读全文 »