一、Docker 安装
1、镜像源配置
- 由于 centos 系统源自带的 docker 版本比较老不建议使用,这里安装新版 docker
- docker 依赖环境:
1、内核版本:3.10+ (由于 namespace 中 user 需运行在内核 3.10 版本上)
2、64bit cpu
1.1:下载 docker-ce 镜像
进入清华大学镜像网站首页,找到 docke-ce 镜像
1.2:选择 Linux 版本
1.3:选择 CentOS
1.4:复制链接地址
1.5:下载镜像源
登入 Linux 系统使用 wget 进行下载到系统中
[root@docker ~]# cd /etc/yum.repos.d/
[root@docker yum.repos.d]# wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
注意:下载下来的yum源中默认的地址为docker官方站点,可以手动更改yum源指定成国内的docker镜像网站
1.6:更改镜像源地址
可将下面的清华镜像网站 docker 的下载路径复制更改 docker.repo 镜像源的默认官方源
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/
[root@docker yum.repos.d]# vim docker-ce.repo
- 替换后为下图:
2、安装 Dokcer
#检查yum源
[root@docker ~]# yum repolist
#安装docker
[root@docker ~]# yum -y install docker-ce
- 报错:
如果之前安装了旧版本的 docker 则安装新版的时候会出现以下报错
- 解决方法:
卸载掉旧版的软件,然后安装新版 docke
[root@docker ~]# yum erase docker-common-2:1.13.1-102.git7f2769b.el7.centos.x86_64
3、镜像加速配置
#启动 docker 之前,配置镜像加速;镜像加速器(推荐阿里云)
[root@docker ~]# mkdir /etc/docker/
[root@docker ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://xxxxxxxxx.aliyuncs.com"]
}
4、启动 Docker
[root@docker ~]# systemctl enable docker.service;systemctl start docker.service
[root@docker ~]# docker version
#查看Docker详细信息
[root@docker ~]# docker info
Containers: 0 #当前系统中的容器数量
Running: 0 #其中运行状态的容器数量
Paused: 0 #其中暂停状态的容器数量
Stopped: 0 #其中停止状态的容器数量
Images: 0 #镜像数量
Server Version: 18.09.2 #服务器版本
Storage Driver: overlay2 #存储驱动后端,专用的文件驱动
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: #插件
Volume: local #存储插件
Network: bridge host macvlan null overlay #网络插件
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog #日志插件
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9754871865f7fe2f4e74d43e2fc7ccd237edcbce
runc version: 09c8266bf2fcf9519a651b04ae54c967b9ab86ec
init version: fec3683
Security Options:
seccomp #安全
Profile: default
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 3.84GiB
Name: docker
ID: 35ZE:Y2HG:DYNW:4ZPK:OIZS:BDF6:6E5B:YOEL:7ZC2:LT5G:EE4D:FC2W
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://registry.docker-cn.com/ #刚才手动配置的加速镜像,表明加速正常
Live Restore Enabled: false
Product License: Community Engine
-
以上就表明 docker 安装完成并且可以正常启动,正常加速镜像
-
解决以下问题:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
[root@docker ~]# vim /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[root@docker ~]# sysctl -p
5、使用 DaoCloud 监控容器
官方地址:https://dashboard.daocloud.io
5.1:执行脚本
[root@docker ~]# curl -sSL https://get.daocloud.io/daomonit/install.sh | sh -s 46d6b11a819f1119cdda1242a672b1003340e468
5.2:查看主机
-
访问其中一个容器
-
打开控制台,进入容器
5.3:删除主机
[root@docker ~]# rpm -e daomonit
二、Docker 使用
1、搜索镜像
[root@docker ~]# docker search tomcat #search后面跟镜像名
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
仓库名称 镜像名称 描述信息 镜像状态
2、拉取镜像
#默认拉取的是 docker hub 上的镜像
- 方式 1:
[root@docker ~]# docker pull tomcat
- 方式 2:
[root@docker ~]# docker image pull 镜像名
#拉取私有仓库镜像
[root@docker ~]# docker pull 私有地址:port/[namespace] 镜像名:tag
- 例如:下载第三方镜像 https://quay.io/
[root@docker ~]# docker pull quay.io/coreos/flannel:v0.10.0-amd64
3、查看本地镜像
[root@docker ~]# docker image list
[root@docker ~]# docker images
4、删除镜像
[root@docker ~]# docker rmi name:[tag]
注意:删除之前需要先删除正在使用该镜像的容器;不加tag则默认删除最后一个
删除一个或多个镜像之间用空格隔开
4.1:强制删除
[root@docker ~]# docker rmi tomcat:9.0 --force
强制删除之后使用该镜像的容器也随之无法使用
4.2:只查看镜像 ID
[root@docker ~]# docker images -q
96c4e536d0eb
62a9f311b99c
5、查看容器状态
5.1:查看正在运行的容器
[root@docker ~]# docker ps
5.2:查看所有容器
[root@docker ~]# docker ps --all
6、停止容器
[root@docker ~]# docker container stop id(或名称)
7、重启容器
[root@docker ~]# docker container restart id(或名称)
8、删除容器
[root@docker ~]# docker container rm id(或名称)
- 强制删除
[root@docker ~]# docker container rm -f id(或名称)
9、只查看容器 ID
- 查看所有
[root@docker ~]# docker ps -a -q
10、运行一个容器
docker run -it -d -p 8070:8080 --name web -v /root/software:/software --privileged=true 镜像名 /bin/bash
-it 创建一个交互式的容器
-d 作为一个守护进程在后台运行
-p 映射端口8070 本机的端口 映射的容器的端口
--name 自定义容器名称
-v 挂载目录/root/software(本地目录)到/software(容器目录),在创建前容器是没有software目录的,docker 容器会自己创建
--privileged=true 关闭安全权限,否则你容器操作文件夹没有权限
11、查看容器 IP
- 方式 1:登入容器中查看
root@3842ef70fd14:/# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.3 3842ef70fd14
- 方式 2:外部使用命令
[root@docker ~]# docker inspect <container id> #容器ID或容器名
- 方式 3:获取所有容器 IP 和名称
[root@docker ~]# docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
[root@docker ~]# docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
- 方式 4:显示所有容器 IP 地址
[root@docker ~]# docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
12:登入容器
docker exec -it <容器名或ID> /bin/bash
[root@docker ~]# docker exec -it web /bin/bash
root@55b8603a6e54:/usr/local/tomcat#
13:文件拷贝
[root@docker ~]# docker cp 拷贝的文件名称 文件在宿主机路径:拷贝至容器中的路径 容器名称或ID
14:安装 vim
root@55b8603a6e54:~# apt-get update
root@55b8603a6e54:~# apt-get install vim
- 命令说明:
命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
15:重命名容器名
[root@docker ~]# docker container <原容器名> <新容器名>
#查看是否修改成功
[root@docker ~]# docker container ps
16:查看容器占用空间大小
[root@docker ~]# docker container ps -as
#配置grep、awk进行过滤也可以
三、镜像制作
1、基于 dockerfile
使用 docker build 命令制作
2、基于容器
-
进入到容器中修改配置,使其符合当前业务,然后再基于此运行的容器制作为镜像
-
例如在 tomcat 中添加一个索引文件,然后基于该更改后的容器进行制作镜像
注意:制作镜像时,添加-p 选项暂停容器,防止制作镜像时文件不完整
[root@docker ~]# docker commit -h
Flag shorthand -h has been deprecated, please use --help
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Create a new image from a container's changes
Options:
-a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Commit message
-p, --pause Pause container during commit (default true)
- 制作镜像
[root@docker ~]# docker commit -p web #web为修改后的容器名
- 添加 tag
[root@docker ~]# docker tag b7f471970842 dqzboy/tomcat:v0.1
[root@docker ~]# docker images
- 添加新 tag
一个镜像可以有多个tag,但是一个tag只能在一个镜像上
[root@docker ~]# docker tag dqzboy/tomcat:v0.1 dqzboy/tomcat:latest
[root@docker ~]# docker images
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于