docker-使用笔记大全①
Micah Two

#系统部署 #环境搭建

这里使用了 [[linux 从购买服务器到搭建ElasticSearch docker服务]]

首先连接服务器

输入uname -r查看内核版本
3.10.0-1062.18.1.el7.x86_64

在输入 cat /etc/os-release 查看系统版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

安装 docker

我这里是在阿里云买的服务器

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
43
44
45
46
47
48
49
50
51
52
53
54
55
# 卸载老版本的docker 具体命令看文档
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine


# 安装工具包
yum install -y yum-utils

#部署镜像下载地址

# 国外
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo


### 阿里云地址
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#更新yum软件包索引
yum makecache fast

#最新版本安装命令 ce版本为社区版 ee为企业版
yum install -y docker-ce docker-ce-cli containerd.io

#可以看官方文档安装指定的docker版本

#启动docker
systemctl start docker

#开机自启动
systemctl enable docker

#容器自启动
docker update --restart=on-failure:3 redis

#使用 命令判断是否运行成功
docker version

docker run hello-world

##查看镜像
[root@micah-first ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 6 months ago 13.3kB


^d90db2

卸载 docker

  1. Uninstall the Docker Engine, CLI, and Containerd packages:
1
2
3
$ sudo yum remove docker-ce docker-ce-cli containerd.io
$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd

配置镜像加速器

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://你的阿里云加速域名.mirror.aliyuncs.com"]
}

sudo systemctl daemon-reload

sudo systemctl restart docker

镜像基本命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
docker info #查看镜像信息
docker --help #查看命令
docker version #查看版本
docker images #查看镜像
docker images --help #查看镜像命令的相关指令

-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don t truncate output
-q, --quiet Only show image IDs


[root@micah-first ~]# docker search mysql #搜索相关镜像,这里搜索mysql
[root@micah-first ~]# docker search mysql -f=stars=3000
#管理为收藏大于3000的mysql搜索

docker pull 项目名字:版本 #项目下载到本地,可指定版本
docker rmi -f id #删除镜像 后面可指定多个id
docker rmi -f $(docker images -aq) 删除所有可删除镜像

容器使用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
docker ps #查看正在运行的容器 -a查看历史使用记录 q只查看id n=x显示几个
docker ps -an=1 #查看最近运行的一个容器

docker run #通过镜像运行一个容器
-it 镜像名字 /bin/bash # 进入容器
-d #后台方式运行
-p #设置端口号 一般使用 主机端口:容器端口
-P 随机端口
--name 设置名字

exit#退出容器
ctrl+Q+P 不关闭容器退出

docker rm -f id#根据id强制删除某个容器
docker rm -f $(docker ps -aq) 一键强制删除
#下面命令都需要id
docker start#开启
docker stop#停止
docker restart#重启
docker kill #强制关闭容器



进阶操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 以后台的模式运行centos 容器 同时写入shell脚本 循环输出Micah -d后台 -c写入脚本 不为docker run的参数 为linux的参数
docker run -d centos /bin/bash -c "while true;do echo Micah;sleep 1;done"

# 这里我们先复制了容器id 以时间戳 跟随 只显示10个的模式查看ea20cf7ac220容器的日志 -f 跟随 -t时间戳 -n显示数量
docker logs -ft -n 10 ea20cf7ac220

docker top 容器 # 查看容器内部的进程

docker inspect 容器 # 查看容器的参数(重要)

docker exec -it 容器id /bin/bash #进入正在运行的容器

docker attach 容器id # 进入正在运行的容器(不新建控制台)

docker cp 容器id:文件路径 宿主机路径 #拷贝容器里面的文件到宿主机上


图形化管理页面

1
2
3
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

提交生成镜像

1
2
3
4
# 当你操作好当前容器时,想要保存里面的配置,将它打包成一个镜像,你可以使用下面的指令
docker commit -a="作者名字" -m="声明" 容器名字 要生成的镜像名字:版本号
# 比如
docker commit -a="micah" -m="add many web app" tomcat03 tomcat02:1.0

数据卷的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 解析 -v 宿主机地址:容器内地址 挂在之后可以将文件夹映射 类似于虚拟机的共享文件夹
# -e 系统应用变量的使用 后面可插入一些系统变量
# MYSQL_ROOT_PASSWORD=root就为设置mysql密码
docker run --name mysql01 -p 3306:3306 -v /home/share/mysql/conf:/etc/mysql/conf.d -v /home/share/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxx -d mysql:5.7

# 部署mysql并设置密码

docker run --name mysql01 -p 3306:3306 -v /home/share/mysql/conf:/etc/mysql/conf.d -v /home/share/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxx -d mysql:5.7

# 部署nginx

docker run \
-p 81:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-e LANG=C.UTF-8 \
-e LC_ALL=C.UTF-8 \
-d nginx:1.19

匿名卷和具名卷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
通过-v 指令添加出来的卷分为匿名卷和具名卷
# 这里上面为匿名,下面为具名
[root@micah-first ~]# docker volume ls
DRIVER VOLUME NAME
local bbad98c0703f130333d509c29c95b2ff750d17f430436b20f6966da8d1d6e7a8
local mysql01

#创建方法
#具名
-v 名称:容器内路径 #名称不能带有/开头
# 匿名
-v 容器内路径
#映射匿名
-v 宿主机地址:容器内地址

拓展

1
2
3
4
5
6
# docker run -v 容器内路径:ro/rw 镜像名字 可创建权限不同的容器内环境
#rw 为读写 readwrite
#ro 为只读 readonly

docker run --name mysql01 -p 3310:3306 -v /home/share/mysql/conf:/etc/mysql/conf.d:ro -v /home/share/mysql/data:/var/lib/mysql:ro -e MYSQL_ROOT_PASSWORD=xxx -d mysql:5.7

[[docker 使用笔记②]]

由 Hexo 驱动 & 主题 Keep
总字数 15.9k 访客数 访问量