导图社区 Docker
Docker详细的总结了基本操作,问题,Dockerfile,MySQL部署,redis集群,MongoDB
编辑于2023-01-03 12:13:53 宁夏回族自治区Docker
I. 基本操作
1. 拉取镜像
docker pull mysql
2. 查看镜像
docker images
3. 查看进程
docker ps
4. 查看容器列表
docker container ls
5. 查看日志
docker logs CONTAINER_ID
docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
6. 删除容器
docker rm 容器
docker rm `docker ps -a | grep jdk8 | awk '{print $1}'`
7. 删除镜像
docker rmi 镜像id
8. 构建Dockerfile
docker build -f Dockerfile文件路径 -t 标题名 .
-f: --file 可无 默认文件 Dockerfile -t: --tag 可无 自动生成标题名 .: 必输 Docker守护进程
9. 重命名镜像
docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
10. 容器生成镜像
docker commit test-centos1 centos_sshd:7.0
11. 拷贝文件
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
II. 问题
bind:Address already in use
处于TIME_WAIT的状态
netstat -an|grep TIME_WAIT
查看端口是否被占用
netstat -nap | grep 15672
查看进程端口
ps -ef | grep 15672
关闭进程
kill -9 pid
III. Dockerfile
FROM:指定基础镜像,必须为第一个命令
示例: FROM mysql:5.6
MAINTAINER: 维护者信息
示例: MAINTAINER lanlingxueyu
RUN:构建镜像时执行的命令
示例: RUN ["/etc/execfile", "arg1", "arg1"]
ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
示例: ADD hom* /mydir/ # 添加所有以"hom"开头的文件
COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
CMD:构建容器后调用,也就是在容器启动时才进行调用
示例: CMD ["/usr/bin/wc","--help"]
ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数
示例: ENTRYPOINT ["top", "-b"]
LABEL:用于为镜像添加元数据
示例:LABEL version="1.0" description="这是一个Web服务器" by="IT笔录"
ENV:设置环境变量
示例:ENV myName John Doe
EXPOSE:指定于外界交互的端口
示例:EXPOSE 80 443
VOLUME:用于指定持久化目录
示例:VOLUME ["/data"]
WORKDIR:工作目录,类似于cd命令
示例: WORKDIR /a (这时工作目录为/a)
USER:指定运行容器时的用户名或 UID
示例:USER www
ARG:用于指定传递给构建运行时的变量
示例: ARG build_user=www
ONBUILD:用于设置镜像触发器
示例:ONBUILD ADD . /app/src
Dockerfile
IV. MySQL部署
1. 创建MySQL容器
docker run -dit --name mysql001 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-p 代表端口映射,格式为 宿主机映射端口:容器运行端口 -e 代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码
2. 进入MySQL容器
docker exec -it mysql001 /bin/bash
登陆mysql
mysql -u root -p
查看mysql的版本
mysql> status;
进行授权远程连接(注意mysql 8.0跟之前的授权方式不同)
GRANT ALL ON *.* TO 'root'@'%';
更改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
更新root用户密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新权限
flush privileges;
V. redis集群
1. redis问题
(error) MOVED 2085 172.17.0.2:6379
登录没有启动集群模式(即缺少了那个"-c"):redis-cli -c -a 123456
2. 方案1
下载镜像
docker pull redis
准备配置文件
redis.conf
启动redis容器
3. 方案2自动化脚本
VI. MongoDB
1.自动化脚本