Docker命令大全
#查看Docker版本信息
docker version
#查看当前运行的Docker容器
docker ps
#运行一个Docker容器
docker run [选项] 镜像名称:tag
#停止一个正在运行的Docker容器
docker stop <容器ID>
#启动一个已停止的Docker容器
docker start <容器ID>
#删除一个Docker容器
docker rm <容器ID>
docker rm -f <容器ID> 强制
#拉取一个Docker镜像
docker pull <镜像名称:tag>
#列出所有本地的Docker镜像
docker images
#删除一个本地Docker镜像
docker rmi <镜像ID>
#进入正在运行的Docker容器的终端
docker exec -it <容器ID> /bin/bash
安装docker
# Docker 要求 CentOS 系统的内核版本高于 3.10
uname -r
# 卸载docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#安装依赖设置yum仓库
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装docker
yum install docker-ce docker-ce-cli containerd.io
启动
systemctl start docker
加入开机启动
systemctl enable docker
验证是否安装成功
docker version
docker run hello-world
docker基本命令
官方镜像查找地址:
https://hub-stage.docker.com/search?image_filter=official&q=
#拉取镜像
docker pull [options] NAME[:TAG]
name是拉取镜像的名称,:TAG表示是可选的,如果不选表明时latest,如果选择表明是指定版本的
#查看镜像
docker images [options] [REPOSITORY[:TAG]]
#运行
docker run [options] IMAGE[:TAG] [COMMAND] [ARG..]
docker run ubuntu:15.10 /bin/echo "Hello world"
#运行交互式的容器
docker run -i -t ubuntu:15.10 /bin/bash
#镜像的导入和导出
docker save -o ubuntuback.tar mynginx:v1
doker load -i ubuntuback.tar
docker images
#复制宿主机的文件和文件夹到容器
docker cp a.txt mycentos4:/usr/local/myfile/
#复制容器的文件和文件夹到宿主机
docker cp mycentos4:/usr/local/myfile/a.txt a.txt
#删除所有镜像
docker rmi `docker images -q`
#查看容器信息(包括ip)
docker inspect mycentos4
安装Ubuntu
#下载最新镜像
docker pull ubuntu
或
docker pull ubuntu:latest
docker pull ubuntu:20.04
#查看本地镜像
docker images
#运行容器,并且可以通过 exec 命令进入 ubuntu 容器
docker run -itd --name ubuntu-test ubuntu
docker exec -it ubuntu-test /bin/bash 退出后不会停止容器
docker attach ubuntu-test 退出后停止容器
#进入容器后查看ubuntu版本
uname -r 查看linux内核版本
cat /etc/lsb-release 查看ubuntu版本
#查看容器的运行信息
docker ps 运行中的容器
docker ps -a 所有的容器
安装Centos
#下载centos7镜像
docker pull centos:centos7
#查看本地镜像
docker images
#运行容器,并且可以通过 exec 命令进入 centos7-test 容器
docker run -itd --name centos7-test centos:centos7
docker exec -it centos7-test /bin/bash 退出后不会停止容器
docker attach centos7-test 退出后停止容器
#进入容器后查看centos版本
uname -r 查看linux内核版本
cat /etc/centos-release 查看centos版本
#查看容器的运行信息
docker ps 运行中的容器
docker ps -a 所有的容器
运行nginx镜像
#查看nginx的镜像有哪些
docker search nginx
#拉取官方的最新版本的镜像
docker pull nginx:latest
#查看本地镜像
docker images
#运行容器
docker run --name nginx-test -p 8080:80 -d nginx
#浏览器访问
http://192.168.145.128:8080/
- –name nginx-test:容器名称。
- -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
- -d nginx: 设置容器在在后台一直运行。
运行mysql镜像
#查看mysql的镜像有哪些
docker search mysql
#拉取官方的最新版本的镜像
docker pull mysql:latest
#查看本地镜像
docker images
#运行容器
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
#查看容器
docker ps 运行中的容器
docker ps -a 所有的容器
#进入容器
docker exec -it mysql-test /bin/bash
mysql -h localhost -u root -p
#数据库访问
192.168.145.128 3306
root/123456
- -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
- MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
运行redis镜像
#查看redis的镜像有哪些
docker search redis
#拉取官方的最新版本的镜像
docker pull redis:latest
#查看本地镜像
docker images
#运行容器
docker run -itd --name redis-test -p 6379:6379 redis
#查看容器
docker ps 运行中的容器
docker ps -a 所有的容器
#进入容器
docker exec -it redis-test /bin/bash
redis-cli
#redis访问
192.168.145.128:6379
- -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
- MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
运行mongodb镜像
#查看mongo的镜像有哪些
docker search mongo
#拉取官方的最新版本的镜像
docker pull mongo:latest
#查看本地镜像
docker images
#运行容器
docker run -itd -p 27017:27017 --name mongo-test mongo
或者
docker run -d -p 27017:27017 --name mongo-test mongo:latest
#查看容器
docker ps 运行中的容器
docker ps -a 所有的容器
#进入容器
docker exec -it mongo-test /bin/bash
mongosh --host 127.0.0.1 --port 27017
#停止容器和删除容器
docker stop mongo-test
docker rm mongo-test
#redis访问
192.168.145.128:6379
-d
: 后台运行容器。-p 27017:27017
: 将主机的27017端口映射到容器的27017端口。--name mongo-test
: 为容器指定一个名字,这里是mongo-test,你可以根据需要更改。
创建自己的镜像
两种方法
- 1、从已经创建的容器中更新镜像,并且提交这个镜像
- 2、使用 Dockerfile 指令来创建一个新的镜像
通过提交镜像来创建新镜像
#使用官方镜像来创建一个容器
docker run -t -i --name ubuntu-test ubuntu:15.10 /bin/bash
#进入容器
docker exec -it ubuntu-test /bin/bash
apt-get update
exit
#提交这个镜像
docker commit -m="has update" -a="runoob" e218edb10161 xiewenyu/ubuntu:v2
使用新镜像创建一个容器
docker run -t -i -d xiewenyu/ubuntu:v2 /bin/bash
- -m: 提交的描述信息
- -a: 指定镜像作者
- **e218edb10161:**容器 ID
- runoob/ubuntu:v2: 指定要创建的目标镜像名
构建镜像
创建一个 Dockerfile 文件
FROM centos:6.7
MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
第一条FROM,指定使用哪个镜像源
RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。
docker build -t xiewenyu/mycentos:6.7 .
- -t :指定要创建的目标镜像名
- . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
docker run -t -i xiewenyu/mycentos:6.7 /bin/bash
id runoob
#设置镜像标签
docker tag 860c279d2fec xiewenyu/mycentos:dev
运行netcore6前后端分离项目【vol】
运行netcore后端api
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
#RUN apt-get update; apt-get install libfontconfig1 -y
WORKDIR /app
EXPOSE 9991
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["VOL.WebApi/VOL.WebApi.csproj", "VOL.WebApi/"]
COPY ["VOL.System/VOL.System.csproj", "VOL.System/"]
COPY ["VOL.Core/VOL.Core.csproj", "VOL.Core/"]
COPY ["VOL.Entity/VOL.Entity.csproj", "VOL.Entity/"]
COPY ["VOL.Demo/VOL.Demo.csproj", "VOL.Demo/"]
#COPY ["VOL.AppManager/VOL.AppManager.csproj", "VOL.AppManager/"]
COPY ["VOL.Builder/VOL.Builder.csproj", "VOL.Builder/"]
RUN dotnet restore "VOL.WebApi/VOL.WebApi.csproj"
COPY . .
WORKDIR "/src/VOL.WebApi"
RUN dotnet build "VOL.WebApi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "VOL.WebApi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "VOL.WebApi.dll"]
构建镜像
docker build -t xiewenyu/vol_webapi:v1 .
创建容器
docker run --name vol_webapi -v /etc/localtime:/etc/localtime -p 9526:9991 -d xiewenyu/vol_webapi:v1
浏览器访问
http://192.168.145.128:9526/index.html
运行vue3项目
#生成项目
npm run build
在dist目录下添加Dockerfile和default.conf
default.conf
server {
listen 80;
server_name 127.0.0.1;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
Dockerfile
FROM nginx
MAINTAINER publish vol
RUN rm /etc/nginx/conf.d/default.conf
ADD default.conf /etc/nginx/conf.d/
COPY . /usr/share/nginx/html/
构建镜像
docker build -t xiewenyu/vol_vue3:v1 .
创建容器
docker run --name vol_vue3 -v /etc/localtime:/etc/localtime -p 9527:80 -d xiewenyu/vol_vue3:v1
搭建docker私有仓库
docker run -itd --name=myregistry -p 4000:5000 registry
http://192.168.145.128:4000/v2/_catalog
在宿主机上
vi /etc/docker/daemon.json
添加
{"insecure-registries":["192.168.145.128:4000"]}
systemctl restart docker
标记此镜像为私有仓库的镜像
docker tag jdk1.8 192.168.145.128:4000/jdk1.8
上传标记的镜像
docker push 192.168.145.128:4000/jdk1.8
查看注册处的仓库有哪些
http://192.168.145.128:4000/v2/_catalog
另一台服务器上
在宿主机上
vi /etc/docker/daemon.json
添加
,"insecure-registries":["192.168.145.128:4000"]
docker pull 192.168.145.128:4000/jdk1.8