docker 入门

304 阅读3分钟

docker 菜鸟网站

www.runoob.com/docker/dock…

docker 官网地址

www.docker.com/

核心架构是什么?

docs.docker.com/get-started…

如何安装

docs.docker.com/get-docker/

离线安装依赖的rpm包

docs.docker.com/engine/inst…

详细参考:

文章1 blog.csdn.net/Charles2628…

文章2 blog.csdn.net/Charles2628…

docker 进程

ps -ef|grep docker
root       3907 242079  0 7月27 ?       00:20:56 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 53306 -container-ip 172.17.0.3 -container-port 3306
root       3914 242090  0 7月27 ?       00:04:42 docker-containerd-shim -namespace moby -workdir /mnt/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/88cad27a3449d1cef7d3ea3d9a7a5b7f07fe295b05b84d95feaf90c8ae5edf61 -address /var/run/docker/containerd/docker-containerd.sock -containerd-binary /usr/bin/docker-containerd -runtime-root /var/run/docker/runtime-runc
root     242079      1  0 7月13 ?       04:09:13 /usr/bin/dockerd
root     242090 242079  0 7月13 ?       13:37:11 docker-containerd --config /var/run/docker/containerd/containerd.toml

docker 基本命令学习

1 docker container 相关命令

docker ps   ##  列出当前正在运行的container

docker ps -a ## 列出所有的container包含停止的

docker rm -f containerName ###强制删除docker container,containerName 是名称, 也可以container的唯一编号

docker stop    containerName 
docker start   containerName 
docker restart containerName 

###特殊的清除命令
docker container prune ##删除所有停止运行的容器
[root@localhost nacos]# docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                            NAMES
6eec0d260f19        mysql:5.7.35                     "docker-entrypoint.s…"   5 weeks ago         Up 5 weeks          0.0.0.0:3306->3306/tcp, 33060/tcp                            mysql
88cad27a3449        mysql:5.7.35                     "docker-entrypoint.s…"   5 weeks ago         Up 5 weeks          33060/tcp, 0.0.0.0:53306->3306/tcp                            ccm-mysql
828313f68b9c        smc-nacos-server:latest          "bin/docker-startup.…"   7 weeks ago         Up 7 weeks          0.0.0.0:8848->8848/tcp                            nacos
41f02297e87c        smc-rabbitmq-management:latest   "docker-entrypoint.s…"   4 months ago        Up 7 weeks          4369/tcp, 0.0.0.0:5671->5671/tcp, 5672/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp   rabbitmq
a5dec025872c        smc-redis:5.0.5                  "docker-entrypoint.s…"   4 months ago        Up 7 weeks          0.0.0.0:6000->6000/tcp, 6379/tcp                            redis
ea8bf3c0c08c        fastdfs:latest                   "sh storage.sh"          4 months ago        Up 7 weeks                            storage
92d483d752c0        fastdfs:latest                   "sh tracker.sh"          4 months ago        Up 7 weeks                            tracker
[root@localhost nacos]#

2 docker image 相关命令

docker images ## 列出所有的image

docker tag ubuntu:15.10 runoob/ubuntu:v3 ##将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像。 可以理解为是copy一份
docker rm -f imagesName  ##强制删除镜像

docker save --output nacos.tar nacos ##导出busybox镜像

docker save myimage:latest | gzip > myimage_latest.tar.gz ##导出为gz格式

docker load --input nacos.tar ## 导入镜像
[root@localhost nacos]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
mysql                     5.7.35              8cf625070931        5 weeks ago         448MB
smc-rabbitmq-management   latest              7c275a273df8        12 months ago       156MB
smc-nacos-server          latest              8afb574f2220        15 months ago       756MB
smc-mysql                 5.7                 a4fdfd462add        15 months ago       448MB
smc-redis                 5.0.5               63130206b0fa        24 months ago       98.2MB
fastdfs                   latest              a729ac95698a        5 years ago         460MB
[root@localhost nacos]#

3.其他命令

docker exec -it containerName bash  ## 交互式进入docker容器内部

docker cp storage.sh storage:/  ##将storage.sh 文件复制到容器名称为storage内部的/ 路劲下

systemctl restart docker  ##重启docker服务, 如果容器配置了 --restart=always 那么容器将自动启动

4 dockerfile 相关

FROM  openjdk:8-jre-slim   #### FROM命令, 基于基础镜像
MAINTAINER xuxueli   ###维护者是谁

ENV PARAMS=""  ###申明环境变量

ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone  ###RUN 运行linux命令,可以是容器内部,也可以是与容器交互的方式

ADD target/xxl-job-admin-*.jar /app.jar ###ADD命令, 将文件copy到容器内部的目录下, 如果是tar.gz格式的文件,将会自动解压
ADD  XXX.tar.gz   /

ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS" ]  ### ENTRYPOINT、CMD 表示容器启动之后,第一条执行的脚步命令,由docker 容器自身触发



项目中使用 docker run 启动镜像命令

#!/bin/sh
name=nacos
docker rm ${name} -f
docker run -d \   ###表示后台运行
           --restart=always \  ###只要docker 服务存在,容器意外退出的情况下,自动启动
           -p 8848:8848 \    ### 通过iptables的nat表,转发端口8848
           -e TZ="Asia/Shanghai" \  ####-e 等同--env表示设置环境变量
           --env MODE=standalone \
           --env SPRING_DATASOURCE_PLATFORM=mysql \
           --env MYSQL_SERVICE_DB_NAME=nacos \
           --env MYSQL_SERVICE_PORT=53306 \
           --env MYSQL_DATABASE_NUM=1 \
           --env MYSQL_SERVICE_USER=nacos \
           --env MYSQL_SERVICE_HOST=10.35.39.195 \
           --env MYSQL_SERVICE_PASSWORD=nacos123 \
           -v /mnt/nacos/logs:/home/nacos/logs \   ###挂载卷, 将宿主机的/mnt/nacos/logs目录挂载到容器的/home/nacos/logs, 这个比较重要,用于数据持久化,容器重启之后,数据不丢失
           -v /mnt/nacos/data:/home/nacos/data \
           --name ${name}  smc-nacos-server:latest