Linux 基础 - Docker 技术
大约 5 分钟学习笔记Linux基础
提示
镜像:相当于 python 里面类的概念,是静态的,不能直接使用容器:是通过镜像创建的,相当于实例的概念,是动态的,可以访问的仓库:存放镜像的地方 docker宿主机:你的 docker 安装在哪一个机器,那个机器就是宿主机
一、 CentOS 下安装 Docker
1. 卸载老版本
yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common docker-latest \
    docker-latest-logrotate \
    docker-logrotate docker-engine2. 安装 Docker 插件
yum install -y yum-utils device-mapper-persistent-data lvm23. 添加 yum 国内源
# 阿里云镜像仓库
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 官网源镜像仓库(不推荐)
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo4. 安装 Docker
yum install -y docker-ce docker-ce-cli containerd.io5. 设置开机启动、开始运行
systemctl enable docker
systemctl start docker6. 查看 docker 运行状态
systemctl status docker7. 关闭防火墙
systemctl stop disable二、创建容器
1. 设置镜像加速
1. 在指定目录创建文件(如已存在请忽略此步)
touch /etc/docker/daemon.json
vi /etc/docker/daemon.json2. 修改文件内容
{
	"registry-mirrors": ["https://elk58vq5.mirror.aliyuncs.com"]
}2. 重启 Docker 服务
systemctl restart docker3. 拉取 最新 镜像
docker pull tomcat- 拉取最新镜像 : docker pull tomcat
- 拉取指定镜像 : docker pull tomcat:7
- 删除镜像 : docker rmi 镜像id

# 查看 拉取的 镜像
docker images
4. 创建并运行容器
创建容器语法格式: docker run -id --name=容器名称 -p 宿主机端口:容器端口 -v 宿主机目录:容器目录 镜像名称
docker run -id --name=myTomcat \
    -p 8080:8080 \
    -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps \
    tomcatdocker run 后面的参数:
- -i:运行容器
- -t: 容器启动后,进入命令行
- -d: 守护进程 --- 后台运行
- -p: 端口映射- -p 宿主机端口:容器端口
 
- -v: 目录映射 --- 挂载- -v 宿主机目录:容器目录
 
5. 创建容器关联其他容器
docker run -id --name=tomcat2 -p 8080:8080 --link mysql --link redis --link rabbitmq三、容器 图形化管理工具( Portainer )
1.官方网站
2.选择喜欢的 portainer 风格镜像,下载
docker pull hub-mirror.c.163.com/6053537/portainer-ce3.启动 dockerui 容器
docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data 6053537/portainer-ce4.访问
浏览器访问 http://你虚拟机的 ip:9000, 设置一个密码即可,点击创建用户 密码要 8 位以上
注意
如果无法访问,需要查看端口是否开放(云服务器需要去官网开放)
四、其他操作命令
| 命令 | 说明 | 
|---|---|
| systemctl restart docker | 重启 docker | 
| systemctl stop docker | 停止 docker | 
| docker exec -it 容器名称 /bin/bash | 进入容器 | 
|  exit | 退出容器 | 
| docker images | 查看本地镜像 | 
| docker ps | 查看运行的容器 | 
| docker ps -a | 查看所有容器 | 
| docker start 容器名/容器 id | 运行容器 | 
| docker stop 容器名/容器 id | 停止容器 | 
| docker stop $(docker ps -a -q} | 停止所有运行的容器 | 
| docker rm 容器名/容器 id | 删除没有运行的容器 | 
| docker rm -f 容器名/容器 id | 删除运行的运行容器 | 
| docker start 容器名/容器 id | 运行容器 | 
| docker rm $(docker ps -a -q} | 删除所有未运行的容器 | 
| docker cp 文件名 容器名:/ | 向容器中拷贝文件 | 
| docker cp 容器名:/文件名 /root | 向宿主机拷贝文件 | 
| docker images | 查看本地镜像 | 
| docker images | 查看本地镜像 | 
| docker images | 查看本地镜像 | 
五、 查看日志 ( docker logs 命令)
docker logs [options] 容器名称或ID 获取容器日志
| 名字 | 默 认 值 | 描述 | 
|---|---|---|
| –details | 显示提供给日志的额外细节 | |
| –follow 或-f | 按日志输出 | |
| –since | 从某个时间开始显示,例如 2013- 01-02T13:23:37 | |
| –tail | all | 从日志末尾多少行开始显示 | 
| – timestamps 或-t | 显示时间戳 | |
| –until | 打印某个时间以前的日志,例如 2013-01-02T13:23:37 | 
# 通过docker logs命令可以查看容器的日志。
docker logs -f --tail 10 a4dac74d48f7# 查看指定时间后的日志,只显示最后100行:
docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID# 查看某时间段日志
docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID六、docker 旧版卸载
1. 卸载它们以及相关的依赖项
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2. 安装 Docker Engine-Community
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。
之后,您可以从仓库安装和更新 Docker。
1. 设置仓库
安装所需的软件包。
sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2使用以下命令来设置稳定的仓库。阿里云
sudo yum-config-manager \--add-repo \ http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo2. 安装 Docker Engine-Community
sudo yum install docker-ce docker-ce-clicontainerd.io一直输入 y 回车即可
3. 启动 docker
sudo systemctl start docker七 p、 修改 容器的 映射端口及挂载目录
1. 停止容器
docker stop 容器id或名称2. 停止 docker 服务
systemctl stop docker3. 修改 hostconfig.json 文件
config,v2.json中如果也记录了端口,需要一并修改
文件目录:
cd /var/lib/docker/containers/容器id
vi hostconfig.json
1. 修改 映射端口
没有端口映射时:“PortBindings”:{} 
增加一个端口映射:
前面的 “3306” 为 容器端口, 后面的 “3307” 为宿主机端口
如果修改现有端口映射,则可以直接修改
“PortBindings”:{“3306/tcp”:[{“HostIp”:"",“HostPort”:“3307”}]}2. 修改 挂载目录
前面的地址为 宿主机挂载目录,后面的地址为 容器目录地址
"Binds":["/var/run/docker.sock:/var/run/docker.sock"4. 启动 docker 服务
systemstl start docker5. 启动 容器
docker start 容器id6. 查看修改后的结果
docker ps -a7. 查看修改后的挂载目录
docker inspect container_id | grep Mounts -A 20九、 同步时间
1.查看宿主机时间
date2. 安装 ntp
yum install ntp3. 同步时间
docker cp /etc/localtime 容器id或名称:/etc/localtime报错:

docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID或名称:/etc/localtime4. 重启 容器
docker restart 容器id或名称注意事项:
- 可能网络会断开,请重新 reboot 下 linux
- 虚拟机的 ip 可能会改变