贴图一张
pull nginx 镜像:docker pull nginx(等效于nginx:latest)
docker pull alpine
docker pull mysql:8.0.30
docker pull openjdk:8-jdk-alpine
docker pull nginx:stable-perl
docker run -dit (-d 指定后台运行,-it指定阻塞运行,防止断掉)
docker run -d -p 100:80 <name>
docker run -v /lanren312/docker-workspace/nginx/html/:/lanren312/docker-workspace/nginx/html/ -it -m 512M -p 9001:9001--restart always -d --name=monkey monkey:latest
docker run --restart=always -d -it --name=nginx-lanren312 -p 8085:80 -v /home/admin/app:/usr/data nginx:stable-perl
[root@bigMonkey ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx stable-perl 6b284568a8ff 12 days ago 188MB
(注:nginx:stable-perl 是Nginx的版本根据自己的版本进行更改,如何输入错误可能会导致在次拉取镜像)
-v,将容器内的/usr/data挂载到宿主机的/home/admin/app。以后jar包有更新,丢到宿主机的/home/admin/app,然后重启容器即可。
--name给容器起一个别名,以后可以通过这个别名管理此容器
8085端口去映射内部的80端口,把宿主机的8085端口映射到nginx容器的80端口
## 本地安装过nginx端口用的80,所以这里用了8085代替
docker run --name lanren312-nginx -p 8085:80 -d nginx:stable-perl
docker run --name lanren312-nginx1.23.1 -p 8086:80 -d nginx:1.23.1
apt-get update #更新包管理
apt-get install vim -y #安装vim
[root@bigMonkey conf]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9090a4bfacd1 nginx:1.23.1 "/docker-entrypoint.…" 5 seconds ago Up 3 seconds 0.0.0.0:8086->80/tcp lanren312-nginx1.23.1
1d3de5c3e1ca nginx:stable-perl "/docker-entrypoint.…" 28 minutes ago Up 28 minutes 0.0.0.0:8085->80/tcp lanren312-nginx
1、常用命令
删除容器:docker rm -f <container id(不用打全,前缀区分)>
删除镜像:docker rmi <name>
查看日志:docker logs -f --tail=1000 <container id(不用打全,前缀区分)>
docker日志文件地址 /var/lib/docker/containers/{container_id}/
docker exec -it 3b9c /bin/bash # 通过容器 别名/id 进入容器
docker ps
docker ps -l ## 最后一个运行的容器(无论该容器目前处于什么状态)
docker ps -n ## 数量x:显示最后 x 个运行容器,当x为1时和 -l 含义相同。(无论该容器目前处于什么状态),用于快速查找最近运行的容器
docker ps -a ## 当前服务器中所有的容器,无论是否在运行..
## 配置nginx后,重启容器
docker stop 9090a4bfacd1
docker start 9090a4bfacd1
[root@bigMonkey ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
12effc08621d mysql "docker-entrypoint.s…" 36 hours ago Created mysql-test
a60d2b075681 alpine "/bin/sh" 2 days ago Up 2 days angry_goldstine
CONTAINER ID:每个容器的唯一标识符号,自动生成。类似于数据库中的主键
IMAGE :创建容器使用的镜像名称。
COMMAND:运行容器时的命令。
CREATED:容器创建的时间。
STATUS:容器的运行状态,Up 2 days 指容器已运行2天。
-created(已创建)
-restarting(重启中)
-running(运行中)
-removing(迁移中)
-paused(暂停)
-exited(停止)
-dead(死亡)
PORTS:容器开放的端口信息。
NAME:容器的别名,在运行容器执行docker run 时可使用 --name进行指定
2、Dockerfile常用命令
FROM ## 表示基础镜像,即运行环境
WORKDIR WORKDIR /app ### 运行在哪个路径下
COPY COPY src /app ### 将宿主机上的文件拷贝到镜像中
RUN RUN echo 321 >> 1.txt ### 运行shell语句
CMD ### 指定起来的脚本
ADD
ENRTYPOINT
ENTRYPOINT非json,则以ENTRYPOINT为准;
如果ENTRTYPOINT和CMD都是json,则ENTRYPOINT+CMD拼接
EXPOSE ### 指定当前镜像暴露的端口号
VOLUME /a/b ### 指定映射文件,把容器中的/a/b映射到宿主机的目录下
3、Dockerfile文件格式
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD heroes.jar docker-heroes.jar
ENTRYPOINT ["java","-Xms800m","-Xmx800m","-XX:MetaspaceSize=512m","-XX:MaxMetaspaceSize=800m","-Dlog4j2.formatMsgNoLookups = true", "-jar","/docker-heroes.jar"]
4、start.sh运行脚本
cd /lanren312/docker/heroes # 存放Dockerfile的文件夹
docker build -t heroes. # 指定镜像名称,(.)点表示dockerfile文件位于当前目录下
docker stop heroes | true # 停止容器
docker rm heroes | true # 删除容器
docker run -v /data/vue/heroes/:/data/vue/heroes/ -it -m 512M -p 9210:9210--restart always -d --name=heroes heroes:latest
5、删除为空的镜像
1、查询所有的none镜像
docker images | grep none
2、查询所有的none镜像的id
docker images | grep none | awk '{print $3}'
3、删除所有的none镜像
docker images | grep none | awk '{print $3}' | xargs docker rmi
6、docker cp命令
将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
docker cp /www/runoob 96f7f14e99ab:/www/
将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。
docker cp /www/runoob 96f7f14e99ab:/www
将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。
docker cp 96f7f14e99ab:/www /tmp/
## 将宿主机的 文件夹 拷贝到容器内 (ps: 容器id全称)
docker cp -a /data/vue/platform 9090a4bfacd1:/data/vue
7、docker日志存放目录
cd /var/lib/docker/containers,根据 CONTAINER ID 就能找到