Docker
记录 Docker, 记录生活
Docker优势
Docker作为虚拟容器化技术,将项目代码带上环境配置打包成镜像,别人拉取镜像即可运行。作为现在最火热的容器技术,学习docker已经刻不容缓!
Docker介绍
明白三个术语
镜像:Docker镜像包含程序和配置环境,一个整体打包
容器:一个精简的linux系统,镜像启动后的实例,镜像运行起来就是容器,容器是我们真正跑起来的程序,我们可以把容器改动提交成一个新的镜像
仓库:相当于githup仓库,镜像保存在仓库中,方便其他人直接拉取镜像部署
Docker安装
需要的安装包
yum install -y yum-utils
指定镜像的仓库
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
yum makecache fast
安装docker, 社区版docker-ce
yum install docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker
查看是否启动成功
docker version
测试运行docker仓库镜像hello-word
docker run hello-word
第一次会出现下图信息, 证明docker拉取运行成功
先pull拉取镜像,再运行
docker中run命令的运行原理:
执行后,现在本地查找是否有镜像,如果有,则直接运行。如果没有,则去
Docker Hup上下载镜像,下载到本地再运行。
查看docker下载的镜像信息
docker images
Docker常用命令
帮助指令
docker version
docker info #查看docker整体信息
docker --help
镜像指令
docker images #查看本地镜像
docker search #搜索镜像
docker pull #下载镜像
docker rmi #删除镜像
下载镜像
docker pull mysql
指定版本下载,不指定版本则使用最新版本latest
docker pull mysql:5.7
删除镜像
docker rmi -f 镜像id
dokcer rmi -f 镜像A 镜像B #批量删除
docker rmi -f $(docker images -aq) #删除全部镜像 $()内传参数,当前时获取所有镜像id
例如根据参数删除hello-world镜像
docker rmi -f $(docker images hello-world -q)
容器指令
docker ps #查看已运行的镜像
docker run 镜像 #新建容器并运行
docker ps -a #列出所有的容器(包含历史已运行过的)
docker rm 容器id #删除指定容器
docker start 容器id #启动容器,不会新建容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
启动mysql,-p指定映射端口,指定名字,-e指定root密码,-d指定后台启动
docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.5
启动带编码的mysql
docker run -p 3307:3306 --name mysql03 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.5 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
也可以使用另一种方式,启动mysql镜像并进入容器
docker run -it mysql /bin/bash
ls
mysql -uroot -p #进入mysql操作
进入mysql容器
docker exec -it mysql5.7 /bin/bash
docker日志查看
docker logs 容器id
其他常用的查看日志的方式,通过help指令查看,-f 跟随日志输出, -t 展示时间戳
[root@localhost /]# docker logs --help
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
--details Show extra details provided to logs
-f, --follow Follow log output
--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
-n, --tail string Number of lines to show from the end of the logs (default "all")
-t, --timestamps Show timestamps
--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
常用查看日志方式
docker logs -ft 容器id #跟随日志输出
docker logs -t --tail n 容器id #查找某行日志
查看容器中进程信息
docker top 容器id
查看容器的详细信息
docker inspect 容器id
进入容器内部,可以修改配置
方式一 #进入当前容器后开启一个新的终端
docker exec -it 容器id bashshell
方式二 # 进入容器正在执行的终端
docker attach 容器id
文件拷贝
docker cp 容器id:容器内路径 宿主机目标路径
测试文件拷贝
[root@localhost ~]# docker exec -it fba22a62c505 /bin/bash
root@fba22a62c505:/# ls
bin dev entrypoint.sh home lib64 mnt proc run srv tmp var
boot docker-entrypoint-initdb.d etc lib media opt root sbin sys usr
root@fba22a62c505:/# touch abc.txt
root@fba22a62c505:/# ls
abc.txt boot docker-entrypoint-initdb.d etc lib media opt root sbin sys usr
bin dev entrypoint.sh home lib64 mnt proc run srv tmp var
root@fba22a62c505:/# exit
exit
[root@localhost ~]# docker cp fba22a62c505:/abc.txt /
[root@localhost ~]# cd /
[root@localhost /]# ll
总用量 20
-rw-r--r--. 1 root root 0 8月 17 10:44 abc.txt
lrwxrwxrwx. 1 root root 7 8月 14 16:08 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 8月 14 16:12 boot
drwxr-xr-x. 20 root root 3200 8月 17 10:33 dev
drwxr-xr-x. 76 root root 8192 8月 17 10:33 etc
drwxr-xr-x. 2 root root 6 4月 11 2018 home
本文根据原文学习做的整理
原文地址:http://mp.weixin.qq.com/s?subscene=88&__biz=MzA5NDIzNzY1OQ==&mid=2735619488&idx=1&sn=a412eeb3ba566408632cae3001992a65&chksm=b6ab3b1481dcb202393e9fcc763191f3769799e5c30518a18b09c77d5f51d316868756196f9a&scene=7#rd
Docker挂载目录部署nginx
创建nginx本地存放路径
mkdir -p ~/nginx/html ~/nginx/conf ~/nginx/logs
将react前端静态页面拷贝到宿主机的~/nginx/html下
挂载启动nginx,-v 指将docker中的目录挂载到宿主机目录下
docker run -d --name nginx-react -p 81:80 -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/html:/usr/share/nginx/html/ -v ~/nginx/logs:/var/log/nginx nginx
访问81端口前端应用
查看访问日志
docker logs -f 容器id
或者
tail -f ~/nginx/logs/access.log 启动挂载本地的日志