docker run -itd --name mysql-test -p 13306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
-p 13306:3306 将容器的 3306 端口映射到主机的 13306 端口
--name my-mysql 启动后容器名为 my-mysql
-v $PWD/conf:/etc/mysql 将主机当前目录下的 conf/ 挂载到容器的 /etc/mysql (conf目录为mysql的配置文件,不挂载也没问题)
-v $PWD/logs:/logs 将主机当前目录下的 logs 目录挂载到容器的 /logs (logs目录为mysql的日志目录,不挂载也没影响)
-v $PWD/data:/var/lib/mysql 将主机当前目录下的data目录挂载到容器的 /var/lib/mysql (data目录为mysql配置的数据文件存放路径,这个还是建议挂载,是存储数据的,容器down掉,还能再次挂载数据。)
-e MYSQL_ROOT_PASSWORD=Dl123456 初始化 root 用户的密码
docker run -p <宿主机端口>:<容器端口> --name <创建的容器名> -v <宿主机本地目录1>:<容器目录1> -v <宿主机本地目录2>:<容器目录2> -e MYSQL_ROOT_PASSWORD= -d <mysql镜像名或者镜像 ID>
1. 拉取 Docker Hub 官方提供的mysql镜像
docker pull mysql:5.7
如果拉取很慢 可以换源
一般建议使用这个命令创建mysql容器
docker run -p 33060:3306 --name demo_mysql -v /data/mysql/conf:/etc/mysql -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
Docker命令
查看docker已经启动的容器
docker ps
查看docker所有容器
docker -a
启动容器命令
docker run 镜像名称:状态
docker run id名
后台启动最常用 docker run -d id名
进入容器命令
docker exec -it (containID) bash
容器管理
创建容器 docker run
管理容器
docker start:启动一个或多个已经被停止的容器
docker stop:停止一个或多个运行中的容器
docker restart:重启一个或多个容器
语法格式
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
docker ps列表
docker start/stop 启动/停止
docker rm +containerID 删除容器
docker rename 改名
docker cp 复制
docker container prune 删除停止的容器,所有停止的容器。
docker exec 运行命令 运行完就会退出。
如果想运行不完就不退出
docker commit 从容器创建新镜像
镜像管理
docker images 镜像列表
docker rmi 镜像删除
docker image prune 将所有不用的镜像删除
docker save/load 把镜像保存为一个压缩文件模式用于提取出来。
镜像传输
docker pull centos
docker push 推送到docker hub
docker tag 打标签
信息和状态
日志
docker logs
状态
docker stats
版本
docker version
进程
docker top
元数据
docker inspect
端口
docker port
docker container ls -a
导出容器
docker export id
导入容器
docker import 加URL
数据卷
docker volume create ...创建
列表 docker volume ls
元信息 docker volume inspect ...
删除 docker volume rm ...
docker run --rm --name sss python
运行完就删除
Dockfile
COPY/ADD添加文件
ADD支持URL,支持从压缩文件中添加优先使用COPY,因为更透明
ENV/LABEL/ARG添加信息
RUN/SHELL执行命令
ocker run -p 8080:80 -v
/root/Playground/demosite:/usr/share/nginx/html:ro nginx
```
docker run -d -P \
--name web \
# -v my-vol:/usr/share/nginx/html \
--mount source=my-vol,target=/usr/share/nginx/html \
nginx:alpine
```
####
Docker 允许通过外部访问容器或容器互联的方式来提供网络服务。
```
$ docker run -d -p 127.0.0.1:80:80/udp nginx:alpine
使用 udp 标记来指定udp 端口
使用 ip::containerPort 绑定 localhost 的任意端口到容器的 80 端口,本地主机会自动分配一个端口。
$ docker run -d -p 127.0.0.1::80 nginx:alpine
-p 标记可以多次使用来绑定多个端口
$ docker run -d \
-p 80:80 \
-p 443:443 \
nginx:alpine
新建网络
$ docker network create -d bridge my-net
运行一个容器并连接到新建的 my-net 网络
$ docker run -it --rm --name busybox1 --network my-net busybox sh
本文由自己在不同的文章上整理为自己的自己的学习笔记。