常用DOCKER功能
1 安装docker
- 官网下载桌面版本
- homebrew安装(brew版本为4.2.3)
brew install docker
通过这种方式安装docker在应用里是看不到对应docker软件的,当使用docker命令时会出现下面的提示
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
我是在网上搜了一个帖子传送门,然后运行了一下就好用了,具体什么原理不太清楚,如果有大佬知道还请指点一二!!非常感谢!!
运行内容如下
launchctl list | grep docker
运行后显示如下内容,有点不对劲,但是能用!
0 com.docker.helper
然后就可以拉取镜像等操作了。
后续可以通过orbstack软件启动软件。
2 拉取镜像并启动
可参考视频传送门
- 首先查看软件版本,显示的都是对应最新版本,如果想要旧版本,可以去docker官网找版本号下载;地址:以node为例
docker search mysql
如果是M1芯片的建议选择arm64v8/v8/mysql
- 选好版本后进行下载
docker pull arm64v8/mysql
- 下载成功后查看下载好的软件
docker images
- 启动容器(mysql和redis)
docker run -d -i -t [容器ID] /bin/bash
- mysql配置文件
创建两个数据卷
docker volume create mysql_conf;
docker volume create mysql_data;
将配置文件通过orbstack软件复制到mysql_conf文件中
文件内容如下
[mysqld]
character-set-server=utf8
max_connections=1000
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
- 配置完成后,启动mysql
docker run -p 3306:3306 \
--name mysql \
-v mysql_data:/var/lib/mysql \
-v mysql_conf:/etc/mysql/conf.d \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
-d arm64v8/mysql
- 安装并配置成功后进入软件
docker exec -it mysql /bin/bash
- 登陆mysql
mysql -uroot -p123456
redis
- 下载redis
docker pull arm64v8/redis
- 启动redis
docker run -p 6379:6379 \
--name redis \
-v redis_data:/data \
-v redis_conf:/etc/redis/redis.conf \
-d arm64v8/redis \
redis-server /etc/redis/redis.conf
nginx
- 启动nginx
docker run -p 80:80 \
--name nginx \
-v /nginx/conf/nginx.conf:/var/lib/docker/volumes/nginx_conf \
-d nginx
访问127.0.0.1:80看是否能访问nginx,如果成功证明已经正常启动
- 配置文件挂载:在本地创建nginx配置文件的路径,然后将nginx的文件复制到此路径下
docker cp nginx:/etc/nginx/nginx.conf /Users/lx/settings/nginx
- nginx.conf 配置文件内容:
worker_processes 1;
events {
worker_connections 1024;
}
http {
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 9001;
server_name localhost;
location ~ /hosp/ {
proxy_pass http://localhost:8201;
}
location ~ /cmn/ {
proxy_pass http://localhost:8202;
}
}
}
3 删除镜像(卸载软件)
在要删除的镜像中有容器存在,要删除镜像,首先删除容器
- 停止容器
docker ps // 查看所有正在运行容器
docker stop containerId // containerId 是容器的ID
docker ps -a // 查看所有容器
docker ps -a -q // 查看所有容器ID
docker start $(docker ps -a -q) // start启动所有停止的容器
docker stop $(docker ps -a -q) // stop停止所有容器
docker rm $(docker ps -a -q) // remove删除所有容器
- 删除容器和删除所有容器
# 删除一个
docker rm 容器ID
docker rm $(docker ps -aq)
- 删除镜像
其中,-f可以不加,加-f强制删除
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
4 停止/重启容器
- 启动一个或多个已经被停止的容器
docker start [container id]
- 停止一个运行中的容器
docker stop [container id]
- 重启容器
docker restart [container id]
5 进入容器
docker ps -a
## 例如启动redis
docker exec -it 2be1bf55c462 redis-cli
## 例如进入nginx
docker exec -it a46321437e24(nginx的CONTAINERID) /bin/bash