docker基本操作

编辑于 2023-12-27 11:03 阅读 859

镜像

docker search nginx ⬅️来查看可用镜像
docker pull redis:latest ⬅️下载镜像
docker images ⬅️查看本地镜像
docker rmi {IMAGE_ID} ⬅️删除一个或多个镜像
docker rmi `docker images -q` ⬅️删除全部镜像
docker build -f ./Dockerfile -t php:v1-swoole . 

docker rm -f $(docker ps -aq) && docker rmi -f $(docker images -q) ⬅️删除全部镜像和容器

容器

docker ps -a ⬅️查看全部容器
docker start {CONTAINER_ID} ⬅️启动容器
docker stop {CONTAINER_ID} ⬅️停止一个容器
docker restart {CONTAINER_ID} ⬅️重启一个容器
docker stop $(docker ps -q) ⬅️停止全部容器
docker rm {CONTAINER_ID} ⬅️删除一个或多个容器
docker rm $(docker ps -aq) ⬅️删除全部容器

docker stop $(docker ps -q) & docker rm $(docker ps -aq)  ⬅️停用并删除全部容器

docker attach {CONTAINER_ID} ⬅️登录容器
docker exec -it {CONTAINER_ID} /bin/bash ⬅️登录容器

//将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
docker cp /www/runoob 96f7f14e99ab:/www/

//将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。
docker cp  96f7f14e99ab:/www /tmp/

//本机使用容器内的命令
vi ~/.bashrc
alias phpunit='docker exec -it aaa vendor/bin/phpunit'
alias phpcomposer='docker exec -it aaa composer'

docker network

docker network ls ⬅️显示所有 bridge
docker network create --driver bridge web-network ⬅️创建一个叫做 web-network 的网桥,使用的连接方式是 bridge
docker inspect web-network ⬅️查看 web-network 网络里面的容器
docker network connect web-network {CONTAINER} ⬅️手动将某个容器加入网桥

docker run

基于一个镜像启动一个容器,如果此镜像不存在则自动下载

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷

docker run --name php-fpm -v C:\Users\work\nginx/www:/www -d php:fpm /bin/sh -c "while true; do echo hello world; sleep 1; done"
docker run --name php-fpm7.4 -v C:\Users\work\nginx/www:/www -d php:7.4-fpm /bin/sh -c "while true; do echo hello world; sleep 1; done"

docker run -v C:\Users\work\nginx/www:/usr/share/nginx/html:ro -v C:\Users\work\nginx/conf:/etc/nginx:ro --link php-fpm7.4 --name nginx -p 8080:80 -d nginx
docker run --name mysqld -e MYSQL_ROOT_PASSWORD=123456 -d mysql

docker run -di --name docker-php -v "C:\codebase\docker-php\app":/var/www --network web-network docker-php-image
docker run -di --name docker-nginx -p 8080:80 -v "C:\codebase\docker-php\nginx\conf.d":/etc/nginx/conf.d/ -v "C:\codebase\docker-php\app":/var/www  --network web-network docker-nginx-image
docker run -di --name docker-php-fpm -v "C:\codebase\docker-php\app":/var/www --network web-network docker-php-fpm-image

docker-compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具

docker-compose up -d ⬅️后台运行
docker-compose down ⬅️停止并删除`docker-compose.yml`中的所以容器,及network
docker-compose -f ./docker-compose.yml restart docker-php-fpm ⬅️重启某个服务(比如:docker-php-fpm)
docker-compose -f ./docker-compose.yml up -d docker-php-fpm ⬅️删除某个容器及镜像后需要重新构建时执行(比如:docker-php-fpm)

其他

docker 从容器创建新镜像,及镜像的备份和恢复

广而告之,我的新作品《语音助手》上架Google Play了,欢迎下载体验