@记录docker学习过程
镜像、容器、Dockerfile的关系请参考:https://www.cnblogs.com/light-train-union/p/11934309.html
镜像
<!-- --查找mysql镜像(official为官方的镜像) -->
docker search mysql
<!-- --下载nginx镜像 -->
docker pull nginx
<!-- --查看本地镜像 -->
docker images
<!-- --删除mysql镜像 -->
docker rmi mysql
容器
<!-- --启动nginx-my的容器,用的镜像为nginx -->
docker run -itd --name=nginx-my nginx
<!-- --查看运行中的容器 -->
docker ps
<!-- --停止容器 -->
docker stop container_name/container_id
<!-- --重启容器 -->
docker restart container_name/container_id
<!-- --删除容器 -->
docker rm container_name/container_id
容器相关操作
<!-- --进入容器 -->
docker exec -it container_name/container_id /bin/bash
PS:容器内停止和重启不会影响容器内的修改,容器删除之后容器内的修改就被删除了
保存容器内的修改重新生成镜像
<!-- --生成新的镜像 -->
docker commit -a "author" -m "message" container_name/container_id new_image_name:tag_name
new_image_name :新镜像的名字
tage_name :新镜像的标签,可以不写默认为latest
<!-- --端口映射(启动镜像为nginx的镜像,命名容器的名称为nginx-my,把宿主机的的8888端口映射到容器的80端口) -->
docker run -itd --name=nginx-my -p 8888:80 nginx
<!-- --文件挂载,把宿主机的index.html和容器的index.html关联 -->
docker run -itd --name=nginx-my -p 8888:80 -v /Users/user/index.html:/usr/share/nginx/html/index.html nginx
<!-- --启动mysql容器,要传参数到容器 -e表示传递参数 -->
docker run -itd --name=mysql -p 33066:3306 -v /Users/user/docker/mysql/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password By '123456';
<!-- --宿主机和容器文件直接的复制 -->
docker cp nginx-my:/usr/share/nginx/html/50x.html /Users/user
docker cp /Users/user/50x.html nginx-my:/usr/share/nginx/html/
<!-- --容器互联 mysql为容器名,mysql-my为容器别名(host里面会用)-->
docker run -itd --name=php --link mysql:mysql-my php
Dockerfile操作
Dockerfile分为4个部分:
基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令
<!-- --Dockerfile使用 -->
<!-- tag_name不写的话默认为latest,.为当前目录的意思;-f 可以指定目录,例子:/User/user . -->
docker build -t image_name:tag_name .