docker 使用小记

image 镜像。不可修改。
container 容器 运行实例
repository 仓库 保存镜像的地方

 

centos中安装docker
-------------------------------------------------------------------------
linux3.0内核无需安装 查看命令 uname -r 或者 cat /etc/os-release

如果有旧版本卸载
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest-logrotate \
docker-logrotate \
docker-egine \

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

sudo yum-config-manager \
--add-repo \
http://mirrors.aliyum.com/docker-ce/linux/centos/docker-ce.repo

 

//ce 社区版本 ee 企业版
yum install -y docker( docker-ce docker-ce-cli containerd.io)


修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值
{
"registry-mirrors": ["https://nz5uykfk.mirror.aliyuncs.com"]
}

 

提速,可以配置下镜像代理:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 

 

系统部分
-------------------------------------------------------------------------
启动docker
systemctl start docker
查看版本
docker version
开机启动
systemctl enable docker
重启
systemctl restart docker
加载
systemctl daemon-reload
系统信息
docker info

 

镜像部分
-------------------------------------------------------------------------
查看已有镜像
docker images
-a 所有镜像
-q 只显示id

查看云端仓库镜像
docker search

拉取镜像
docker pull 镜像名称:版本号
docker pull mongo:4.4.6
删除镜像
docker rmi <镜像名称> $(docker images -qa)
删除数据卷
docker volume rm <数据卷名称>

 


容器部分
-------------------------------------------------------------------------
查看容器
docker ps
-a 显示所有容器(无则显示正在运行的容器)

创建一个新容器,运行容器
docker run -itd --name 容器名称 镜像名称 /bin/bash
-d 后台方式运行
--name 容器名称
-it 交互方式运行
-p 端口
docker run [参数] 镜像名称

删除容器
docker rm <容器名称或ID>

进入容器
docker exec -it 容器名称或ID /bin/bash

关闭容器
docker stop <容器名称或ID>

容器元数据
docker inspect <容器名称或ID>

容器和宿主主机直接文件复制
docker cp 容器ID:容器内路径 目的主机路径
docker cp e24f6eb69101694683630560de9be299c6e917754511688daf37976d80dc8401:/usr/share/nginx/html/ E:\docker\images\nginx
docker cp 目的主机路径 容器ID:容器内路径

查看容器运行进程

docker top 容器id
查看日志
docker logs -tf 容器id
docker logs --tail number 容器id // number 是要查看的条数


网络部分
-------------------------------------------------------------------------
默认宿主主机和容器网络不通
创建容器时,可以通过映射连通
-p 宿主主机ip:宿主端口号:容器主机端口
-p 随机端口和容器端口映射

 

 


空间映射
-------------------------------------------------------------------------
docker run -itd -p 0.0.0.0:8099:80 -v E:\docker\images\nginx\html:/usr/share/nginx/html/ --name newngix nginx /bin/bash

docker run -itd -p 0.0.0.0:9090:80 --name feng nginx /bin/bash

 

 


定制镜像
-------------------------------------------------------------------------
docker commit -m='' -a='' 容器id 目标名称:[版本TAG]

docker commit -a="feng" -m ="新建一个镜像" ce9924eab777 the_mqtt:1.0

方法2
Dockerfile

mkdir docketest
cd dockertest
touch Dockerfile //创建文件
vi
FROM centos:7
MAINTAINER libowen<autho>
ADD jdk /usr/local
ADD tomcat /usr/local
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH


docker build -f Dockerfile -t nginx:1.5 . //注意最后的点代表当前文件夹


指令详解
Dockerfile 指令 说明
FROM 指定基础镜像,用于后续的指令构建。
MAINTAINER 指定Dockerfile的作者/维护者。(已弃用,推荐使用LABEL指令)
LABEL 添加镜像的元数据,使用键值对的形式。
RUN 在构建过程中在镜像中执行命令。
CMD 指定容器创建时的默认命令。(可以被覆盖)
ENTRYPOINT 设置容器创建时的主要命令。(不可被覆盖)
EXPOSE 声明容器运行时监听的特定网络端口。
ENV 在容器内部设置环境变量。
ADD 将文件、目录或远程URL复制到镜像中。
COPY 将文件或目录复制到镜像中。
VOLUME 为容器创建挂载点或声明卷。
WORKDIR 设置后续指令的工作目录。
USER 指定后续指令的用户上下文。
ARG 定义在构建过程中传递给构建器的变量,可使用 "docker build" 命令设置。
ONBUILD 当该镜像被用作另一个构建过程的基础时,添加触发器。
STOPSIGNAL 设置发送给容器以退出的系统调用信号。
HEALTHCHECK 定义周期性检查容器健康状态的命令。
SHELL 覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令。

 

 


上传镜像
-------------------------------------------------------------------------
docker login -u username
docker tag 镜像名称:tag 用户id/上传后的镜像名称:tag
docker push 用户id/上传后的镜像名称:tag


镜像导入导出
-------------------------------------------------------------------------
docker save id或名字 >镜像名称.tar
docker save -o 镜像名称.tar id或名字
docker load -i 镜像名称.tar
docker load <镜像名称.tar


容器的导入导出
-------------------------------------------------------------------------
docker export id或名称 -o 容器名称.tar
docker import 容器名称.tar 名称:tag

容器互联(同宿主内容器互联)
-------------------------------------------------------------------------
默认加入docker0虚拟网络
Gateway 字段
IPAddress 字段

 

 


mysql镜像示例
-------------------------------------------------------------------------
docker run \
-p 3306:3306 \
--name mysql57 \
-v ~/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--privileged=true \
docker.io/mysql:5.7

 


安装mysql

 

//安装指定版本
docker pull mysql:5.7
docker run --name my_sun -p3306:3306 -d -e MYSQL_ROOT_PASSWORD=123456 -e LANG="C.UTF-8" mysql:5.7
#说明
--name my_mysql :为容器指定一个名称,不写的话会随机生成名称;
-p 3306:3306 :指定端口映射,格式为:主机(宿主)端口:容器端口;
-d 后台运行容器,这个参数一般都加上;
-e MYSQL_ROOT_PASSWORD=123456 设定root用户密码,mysql必须得有这个,不然起不来;
-e LANG="C.UTF-8" 设定UTF-8格式

posted @   fsl  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示