文章目录
- 另外两篇Docker笔记
- Docker整体架构介绍
- Docker环境搭建
- docker的容器生命周期管理
- docker的基本命令(Docker Container之CRUD)
- 下载镜像 docker pull
- 创建容器 docker create
- 查看容器 docker ps ( docekr ps -a 查看所有)
- 启动容器 docker run
- 进入交互状态 docker exec -it [id] /bin/bash (exit 退出来)
- 暂停/停止/杀死 [启动]容器 docker pause [启动 docker unpause] / docker stop [启动 docker start]/ docker kill [启动 docker start]
- 删除容器 docker rm (-f 强制删除)
- 查看日志 docker logs (-f :持久刷新查看) [id]
- 限制资源启动
- Dockerfile实战
- Docker 网络通信
- Docker 生态圈
- 微服务部署
另外两篇Docker笔记
Docker构建笔记
docker学习笔记(安装 卸载 基本命令)
Docker整体架构介绍
Docker环境搭建
安装方法一
- 安装方法
yum install docker
- 启动docker
systemctl start docker
卸载
- 卸载docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装方法二 (建议):
-
下载docker安装脚本:curl -fsSL get.docker.com -o get-docker.sh
curl -fsSL get.docker.com -o get-docker.sh
-
运行脚本(执行阿里云源):sh get-docker.sh --mirror Aliyun
sh get-docker.sh --mirror Aliyun
-
重新加载配置:systemctl daemon-reload
systemctl daemon-reload
-
启动docker:systemctl restart docker
systemctl restart docker
-
查看docker版本:docker version
docker version
docker的容器生命周期管理
docker的基本命令(Docker Container之CRUD)
下载镜像 docker pull
例如:
docker pull nginx
创建容器 docker create
例如:
docker create nginx
查看容器 docker ps ( docekr ps -a 查看所有)
docker ps -a
启动容器 docker run
例如:
docker run 1e86100fbcff
进入交互状态 docker exec -it [id] /bin/bash (exit 退出来)
例如
docker exec -it 1e86 /bin/bash
暂停/停止/杀死 [启动]容器 docker pause [启动 docker unpause] / docker stop [启动 docker start]/ docker kill [启动 docker start]
例子:
docker pause 1e86100fbcff
docker stop 1e86100fbcff
docker unpause 1e86100fbcff
docker start1e86100fbcff
删除容器 docker rm (-f 强制删除)
docker rm -f 1e86
查看日志 docker logs (-f :持久刷新查看) [id]
docker logs 4feg
限制资源启动
-c (-c 4000是cpu资源量)
docker run -d -c 4000 nginx
-m 抢占流量 --memory-swap (内存资源)
例如:
docker run -d -m 200M --memory-swap=400M nginx
–blkio-weight (io资源)
docker run -d --blkio-weight 300 nginx
Dockerfile实战
创建Dockerfile(vi dockerfile)
vi Dockerfile
解析Dockerfile 文件
-
MAINTAINER aoteman (维护人员)
-
RUN mkdir test1 (容器启动后执行的命令)
-
RUN touch test2 (可多个命令执行)
-
COPY test3 . (复制test3到本目录)
-
ADD test4.tar.gz . (add可以进行解压)
-
—分割线—
-
EXPOSE 80 (暴露80端口)
-
VOLUME /data (指定目录)
-
ENTRYPOINT (始终执行)
-
CMD 命令 如果有外部传cmd命令,则文件内的不执行
Dockerfile文件内容
#Owned by Lin Shuzheng
FROM debian
MAINTAINER shuzheng
RUN mkdir test1
RUN touch test2
COPY test3 .
ADD test4.tar.gz .
ENTRYPOINT ["/bin/sh"]
CMD ["-c","ls -l"]
执行dockerfile命令 - docker build -t
执行命令生成一个mysh镜像
```
docker build -t mysh .
```
执行 docker run mysh
执行docker run mysh -c date (利用CMD修改执行结束后的方法 从ls -L 改成为 date)
/bin/sh -c date (利用ENTRYPOINT 来修改结尾的命令 从ls -L 改成为 date)
系统卷 -v
[root@training1 ~]# pwd
/root
[root@training1 ~]# ls
apache Dockerfile emacs get-docker.sh
[root@training1 ~]# docker run -v $PWD/data:/data -d redis:3.2 redis-server
aa964b1b61fd2a8c503bb3cd63ee87235f85bead022b504f48f20eff575e5b05
[root@training1 ~]# ls
apache data Dockerfile emacs get-docker.sh
[root@training1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa964b1b61fd redis:3.2 "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp tender_franklin
[root@training1 ~]# docker exec -it aa964b1b61fd /bin/bash
root@aa964b1b61fd:/data# touch update
root@aa964b1b61fd:/data# exit
exit
[root@training1 ~]# ls data/
update
Docker 网络通信
Docker 生态圈
微服务部署
安装平台服务 rabbitMQ , Redis , Mysql
安装 RabbitMQ
docker run -d --name myrebbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
安装redis
docker run -d -p 6379:6379 --name myredis redis redis-server
- 挂载 配置redis.conf
docker run -d --privileged=true -p 6379:6379 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --name reidsLinBookz redis redis-server /etc/redis/redis.conf --appendonly yes
- 设置reds 密码
docker exec -it myredis redis-cli
CONFIG SET requirepass 123456
docker restart myredis
参数说明:
–privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf:映射配置文件
-v /docker/redis/data:/data:映射数据目录
redis-server /etc/redis/redis.conf:指定配置文件启动redis-server进程
–appendonly yes:开启数据持久化
mkdir /docker
mkdir /docker/redis
mkdir /docker/redis/conf
mkdir /docker/redis/data
创建redis.conf配置文件
touch /docker/redis/conf/redis.conf
redis.conf文件内容自行添加:
切记注释掉:#daemonize yes 否则无法启动容器
重要话说三遍:注释掉#daemonize yes,注释掉#daemonize yes,注释掉#daemonize yes
#任何ip可以访问
bind 0.0.0.0
#守护进程
#daemonize yes
#密码
requirepass 123456
#持久化⽂件名称
dbfilename xdclass.rdb
#持久化⽂件存储路径
dir /data/
#持久化策略, 10秒内有个1个key改动,执⾏快照
save 10 1
######之前配置######
#导出rdb数据库⽂件压缩字符串和对象,默认是yes,会浪费CPU但是节省空间
rdbcompression yes
# 导⼊时是否检查
rdbchecksum yes
#aof持久化配置
#appendonly yes
#appendfilename "appendonly.aof"
#appendfsync everysec
# aof重写期间是否同步
no-appendfsync-on-rewrite no
# 重写触发配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 加载aof时如果有错如何处理
# yes表示如果aof尾部⽂件出问题,写log记录并继续执⾏。
no表示提示写⼊等待修复后写⼊
aof-load-truncated yes
安装mysql
docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 mysql
配置java 8 的dockerfile 启动jar
Dockerfile
FROM java:8
ADD registry.jar registry.jar
ENTRYPOINT ["java","-jar","registry.jar"]