Docker构建笔记
docker学习笔记(安装 卸载 基本命令)
yum install docker
systemctl start 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 pull nginx
例如:
docker create nginx
docker ps -a
例如:
docker run 1e86100fbcff
例如
docker exec -it 1e86 /bin/bash
例子:
docker pause 1e86100fbcff
docker stop 1e86100fbcff
docker unpause 1e86100fbcff
docker start1e86100fbcff
docker rm -f 1e86
docker logs 4feg
docker run -d -c 4000 nginx
例如:
docker run -d -m 200M --memory-swap=400M nginx
docker run -d --blkio-weight 300 nginx
vi 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"]
```
docker build -t mysh .
```
[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 run -d --name myrebbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
docker run -d -p 6379:6379 --name myredis redis redis-server
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
参数说明:
–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
docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 mysql
Dockerfile
FROM java:8
ADD registry.jar registry.jar
ENTRYPOINT ["java","-jar","registry.jar"]