Docker基础知识

mac2025-11-03  17

目录

安装Docker常用命令安装常用软件Docker-Compose

安装Docker

centos6.8安装docker 1.安装依赖包 yum install -y epel-release 2.安装Docker yum install -y docker-io 3.查看配置文件 cat /etc/sysconfig/docker 4.启动后台服务 service docker start 5.查看版本 docker version centos7安装docker 1.安装gcc yum -y install gcc gcc-c++ 2.卸载旧版本 yum -y remove docker docker-common docker-selinux docker-engine 3.安装需要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2 4.设置stable镜像仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 5.更新yum软件包索引 yum makecache fast 6.安装docker yum -y install docker-ce 7.启动docker systemctl start docker 8.查看版本 docker version 9.配置镜像加速 mkdir -p /etc/docker vim /etc/docker/daemon.json { "registry-mirrors": ["https://lw6hnysy.mirror.aliyuncs.com"] } systemctl daemon-reload systemctl restart docker 10.卸载docker systemctl stop docker yum -y remove docker-ce rm -rf /var/lib/docker

常用命令

docker version docker info docker --help docker images docker search 某个XXX镜像名字 docker pull 镜像名字[:TAG] docker rmi -f 镜像名1:TAG 镜像名2:TAG docker start 容器ID或者容器名 docker restart 容器ID或者容器名 docker stop 容器ID或者容器名 docker kill 容器ID或者容器名 docker rm 容器ID docker login -u username -p password server Docker Hub:docker login -u username -p password Aliyun:docker login -u username -p password registry.cn-beijing.aliyuncs.com docker push server/namespace/image:tag 启动交互式容器: docker run -it centos /bin/bash 启动守护式容器: docker run -d -p 3306:3306 --name mysql01 mysql:5.6 查看容器日志: docker logs -f -t --tail 容器ID 查看容器内运行的进程: docker top 容器ID 查看容器内部细节: docker inspect 容器ID 进入正在运行的容器并以命令行交互: docker exec -it 容器ID /bin/bash 重新进入: docker attach 容器ID 从容器内拷贝文件到主机上: docker cp 容器ID:容器内路径 目的主机路径 docker login -u username -p password address(192.168.29.100:80) docker run [OPTIONS] IMAGE [COMMAND] [ARG...] --name="容器新名字": 为容器指定一个名称; -d: 后台运行容器,并返回容器ID,也即启动守护式容器; -i:以交互模式运行容器,通常与 -t 同时使用; -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用; -P: 随机端口映射; -p: 指定端口映射,有以下四种格式 ip:hostPort:containerPort ip::containerPort docker ps [OPTIONS] -a :列出当前所有正在运行的容器+历史上运行过的 -l :显示最近创建的容器。 -n:显示最近n个创建的容器。 -q :静默模式,只显示容器编号。 --no-trunc :不截断输出。 退出容器: exit: 容器停止退出 ctrl+P+Q: 容器不停止退出 Docker镜像commit操作: docker commit提交容器副本使之成为一个新的镜像 docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名] docker search tomcat docker pull tomcat docker run -it -p 8080:8080 --name tomcat01 tomcat 故意删除上一步镜像生产tomcat容器的文档,以它为模板commit一个没有doc的tomcat新镜像gaoxiang/tomcat docker commit -m=“del tomcat docs” -a=“gaoxiang” d536a5c3 gaoxiang/tomcat:1.2 docker images:会出现创建的镜像 Docker容器数据卷: 容器内添加: docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名 查看数据卷是否挂载成功: docker inspect 容器ID 命令(带权限): docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名 DockerFile添加: 根目录下新建mydocker文件夹并进入 可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷 File构建:vim dockerfile2 # volume test FROM centos VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"] CMD echo "finished,--------success1" CMD /bin/bash build后生成镜像,获得一个新镜像gaoxiang/centos:docker build -f /mydocker/dockerfile2 -t gaoxiang/centos . 查看创建的镜像:docker images run容器: docker run -it gaoxiang/centos /bin/bash Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied 解决办法:在挂载目录后多加一个--privileged=true参数即可 DockerFile体系结构(保留字指令) FROM 基础镜像,当前新镜像是基于哪个镜像的 MAINTAINER 镜像维护者的姓名和邮箱地址 RUN 容器构建时需要运行的命令 EXPOSE 当前容器对外暴露出的端口 WORKDIR 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点 ENV 用来在构建镜像过程中设置环境变量 ADD: 拷贝加解压缩 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包 COPY 类似ADD,拷贝文件和目录到镜像中。 将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置 VOLUME 容器数据卷,用于数据保存和持久化工作 CMD 指定一个容器启动时要运行的命令 Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换 ENTRYPOINT 指定一个容器启动时要运行的命令 ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数 ONBUILD 当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发 DockerFile解析: 构建三步骤:编写Dockerfile文件->docker build->docker run 自定义镜像Tomcat9: mkdir -p /gx/mydockerfile/tomcat9 在上述目录下touch c.txt 将jdk和tomcat安装的压缩包拷贝进上一步目录 在/gx/mydockerfile/tomcat9目录下新建Dockerfile文件: FROM centos MAINTAINER gaoxiang<gaoxiangbs@126.com> #把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下 COPY c.txt /usr/local/cincontainer.txt #把java与tomcat添加到容器中 ADD jdk-8u171-linux-x64.tar.gz /usr/local/ ADD apache-tomcat-9.0.8.tar.gz /usr/local/ #安装vim编辑器 RUN yum -y install vim #设置工作访问时候的WORKDIR路径,登录落脚点 ENV MYPATH /usr/local WORKDIR $MYPATH #配置java与tomcat环境变量 ENV JAVA_HOME /usr/local/jdk1.8.0_171 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.8 ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.8 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin #容器运行时监听的端口 EXPOSE 8080 #启动时运行tomcat # ENTRYPOINT ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh" ] # CMD ["/usr/local/apache-tomcat-9.0.8/bin/catalina.sh","run"] CMD /usr/local/apache-tomcat-9.0.8/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.8/bin/logs/catalina.out 构建:docker build -t gxtomcat9 . run容器: docker run -d -p 9080:8080 --name myt9 -v /gx/mydockerfile/tomcat9/test:/usr/local/apache-tomcat-9.0.8/webapps/test -v /gx/mydockerfile/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.8/logs --privileged=true gxtomcat9

安装常用软件

Docker安装Tomcat: docker search tomcat docker pull tomcat docker run -p 8080:8080 --name tomcat8080 -d tomcat Docker安装Mysql docker search mysql docker pull mysql:5.6 docker run -p 12345:3306 --name mysql -v /gx/mysql/conf:/etc/mysql/conf.d -v /gx/mysql/logs:/logs -v /gx/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6 命令说明: -p 12345:3306:将主机的12345端口映射到docker容器的3306端口。 --name mysql:运行服务名字 -v /gx/mysql/conf:/etc/mysql/conf.d :将主机/gx/mysql录下的conf/my.cnf 挂载到容器的 /etc/mysql/conf.d -v /gx/mysql/logs:/logs:将主机/gx/mysql目录下的 logs 目录挂载到容器的 /logs。 -v /gx/mysql/data:/var/lib/mysql :将主机/gx/mysql目录下的data目录挂载到容器的 /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。 -d mysql:5.6 : 后台程序运行mysql5.6 数据备份小测试: docker exec myql服务容器ID sh -c ' exec mysqldump --all-databases -uroot -p"123456" ' > /gx/all-databases.sql Docker安装Redis: docker pull redis:3.2 docker run -p 6379:6379 -v /gx/myredis/data:/data -v /gx/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:3.2 redis-server /usr/local/etc/redis/redis.conf --appendonly yes 在主机/gx/myredis/conf/redis.conf目录下新建redis.conf文件 vim /gx/myredis/conf/redis.conf/redis.conf 测试redis-cli连接上来:docker exec -it 运行着Rediis服务的容器ID redis-cli Docker安装ES docker search elasticsearch docker pull elasticsearch docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name ES9200 elasticsearch Docker安装RabbitMq docker search rabbitmq:3-management docker pull rabbitmq:3-management docker run -d -p 5672:5672 -p 15672:15672 --name rabitmq15672 rabbitmq:3-management

Docker-Compose

安装docker-compose curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose 常用命令 docker-compose up # 前台运行 docker-compose up -d # 后台运行 docker-compose start # 启动 docker-compose stop # 停止 docker-compose down # 停止并移除容器 docker-compose-mysql.yml version: '3.1' services: db: image: mysql:8.0.20 restart: always container_name: mysql environment: MYSQL_ROOT_PASSWORD: 123456 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 ports: - 3306:3306 volumes: - ./data:/var/lib/mysql docker-compose-tomcat.yml version: '3.1' services: tomcat: restart: always image: tomcat container_name: tomcat ports: - 8080:8080 volumes: - /usr/local/docker/tomcat/webapps/test:/usr/local/tomcat/webapps/test environment: TZ: Asia/Shanghai docker-compose-nexus.yml version: '3.1' services: nexus: restart: always image: sonatype/nexus3 container_name: nexus ports: - 8081:8081 volumes: - nexus-data:/nexus-data volumes: nexus-data: docker-compose-gitlab.yml 用户名默认是root version: '3' services: web: image: 'twang2218/gitlab-ce-zh:11.1.4' restart: always hostname: '192.168.219.128' container_name: 'gitlab' environment: TZ: 'Asia/Shanghai' GITLAB_OMNIBUS_CONFIG: | external_url '192.168.219.128:8082' gitlab_rails['gitlab_shell_ssh_port'] = 2222 unicorn['port'] = 8888 nginx['listen_port'] = 80 ports: - 8082:80 - 443:443 - 2222:2222 volumes: - ./config:/etc/gitlab - ./data:/var/opt/gitlab - ./logs:/var/log/gitlab harbor: https://github.com/goharbor/harbor/releases/download/v2.0.0/harbor-offline-installer-v2.0.0.tgz tar -zxvf harbor-offline-installer-v2.0.0.tgz cd harbor vim harbor.yml hostname: 192.168.219.128 # 第 12 行,注释掉 HTTPS 的相关配置 # https related config # https: # https port for harbor, default is 443 # port: 443 # The path of cert and key files for nginx # certificate: /your/certificate/path # private_key: /your/private/key/path ./install.sh 账号:admin 密码:Harbor12345 # 配置客户端 vim /etc/docker/daemon.json { "registry-mirrors": [ "https://lw6hnysy.mirror.aliyuncs.com" ], "insecure-registries": [ "192.168.219.128" ] } # 构建项目(ip:port/image_name:tag) vim Dockerfile FROM java:8 ADD hello_world-0.0.1-SNAPSHOT.jar /hello.jar EXPOSE 8080 CMD ["java","-jar","/hello.jar"] docker build -t 192.168.219.128/hello:latest . # 运行项目 docker run -d -p 8080:8080 hello # 标记本地镜像并指向目标仓库(ip:port/image_name:tag,该格式为标记版本号) docker tag 192.168.219.128/hello:latest 192.168.219.128/library/hello:1.1.1 # 推送项目 docker push 192.168.219.128/library/hello:1.1.1
最新回复(0)