docker笔记
docker
docker search 搜索镜像
docker pull imagename 获取镜像
docker images 查看已获取镜像
docker ps | sed -n '2,$p' | awk '{print $1}' | xargs docker stop 停止所有正在运行的容器
docker ps -a| sed -n '2,$p' | awk '{print $1}' | xargs docker rm 删除所有容器
docker images | sed -n '2,$p' | awk '{print $3}' | xargs docker rmi 删除所有镜像
docker images --no-trunc 查看镜像详细信息
docker image inspect 镜像名:tag(镜像id) 查看某个镜像信息
docker image ls -q 只查看镜像id
docker image save 镜像名(或者镜像id) >/opt/image.tar.gz 导出镜像
docker image load -i /opt/image.tar.gz 导入镜像,可用于离线状态或网络差的情况下获得镜像
docker image tag 镜像id 新标签 修改镜像tag
docker image rm -f 镜像id 强制删除镜像
docker image rm -f `docker image ls -q` 删除所有镜像
docker container run -it --name="自定义容器名" 镜像id 启动容器并开启一个容器内终端并命名容器
docker container run -it --name="自定义容器名" --rm 镜像id ,关闭容器后自动删除,用于启动测试,交互类容器
docker run -d --name="nginx" 镜像id 启动守护式容器
docker run -d -p 8080:80 --name="自定义容器名" 镜像id 映射容器内80端口至宿主机8080端口
docker run -d -p 8080:80 --restart=always nginx 加上restart参数后容器随着docker重启自动重启
docker container ls -a -q 查看所有容器的id
docker container start -i 容器id 交互式启动容器,不加i则是后台启动
docker container stop 容器id 停止容器
docker container inspect 容器id 查看容器详细信息
docker container attach 容器名 连接正在运行的交互式容器中,但所有连接都是一个终端
docker container exec -it 容器id /bin/bash 以子进程方式登录,以这种方式连接容器使用exit退出不会影响容器正常运行
容器内按快捷键ctrl+p+q,退出容器并使其后台运行
端口映射:
-p hostIp:hostPort:containerPort/protocol [-p...] 可以指定多个端口映射
docker container top 容器id 查看容器内进程
docker container [-f] logs 容器id 查看容器内服务日志,加参数-f可动态追踪查看日志
docker container cp 源文件 容器id:容器内路径 拷贝文件至容器内
volume实现宿主机和容器的数据共享
docker run -d --name="c1" -p 8080:80 -v 宿主机指定目录:容器内指定目录
可以有多个-v参数挂载多个数据卷
需要挂载多个目录时:使用数据卷容器
配置本地yum源:
创建新的repo文件,设置baseurl指向挂载光盘镜像的目录
创建用于挂载镜像的目录如:mkdir -p /var/ftp/centos7
挂载镜像:mount -o loop 镜像名.iso /var/ftp/centos7
镜像制作
docker commit 容器id/名字 name/os:v1 制作镜像
容器内服务自启动
dockerfile // 文件名必须问dockerfile
# Centos7
FROM 镜像名:tag/镜像名@id //第一行非注释行
RUN shell命令 // 创建容器时执行的命令
EXPOSE port //对外暴露容器内端口
EXPOSE port
CMD ["命令","参数"] // 使用镜像启动容器时运行的命令
COPY // 拷贝宿主机文件到容器中,需要和dockerfile文件同目录,如果拷贝目录,则只会拷贝目录下子文件和子目录
ADD // 功能类似COPY,但可以上传并解压gz,bzip2,tar文件,还可以上传一个url对应文件,但不会自动解压
VOLUME //共享数据卷
ENTRYPOINT ["/bin/bash","/init.sh"] // 在启动容器时,第一进程被手工输入的命令替换掉,防止秒起秒关
ENV //设置环境变量
docker image build -t "容器名" dockerfile
构建过程中会生成临时镜像,并可以启动镜像进行调试
构建私有docker registry
docker run -d -p 5000:5000 --restart=always --name regisrty -v /opt/registry:/var/lib/registry registry
编辑修改/etc/docker/daemon.json文件,添加一行
"insecure-registries": ["registry服务器ip:端口"]
"live-restore":true // 关闭docker daemon而不关闭容器
重启docker服务
docker push registry容器ip:端口/项目名/服务名:v1 必须以这种方式上传镜像,否则会报错
docker tag nginx:latest registry容器ip:端口/项目名/服务名:v1 更改tag
在其他机器上,同样需要修改/etc/docker/daemon.json,修改insecure-registries选项
docker pull 镜像服务器ip:端口/项目名/服务名:tag
本地仓库加安全认证:
生成密码:yum install httpd-tools -y
mkdir /opt/registry-auth/ -p
htpasswd -Bbn username passsword > /opt/registry-auth/htpasswd
重新启动带有秘钥功能的registry容器
docker rm -f `docker ps -qa`
docker run -d -p 5000:5000 -v /opt/registry-auth/:/auth -v /opt/registry:/var/lib/registry --name=register-auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Reaml" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry
需要登录后才能进行镜像push操作
harbor图形化管理容器
安装docker-compose pip3 install docker-compose
下载harbor-offline-installer解压并修改配置文件,执行install.sh
docker-compose 控制停止和启动,进入harbor安装目录:docker-compose stop / docker-compose start
新建项目,选择公开,拉取镜像可以不用用户名密码
docker push 镜像
docker login ip:port
项目中有镜像时无法直接删除项目
docker本地网络类型和跨主机网络类型
docker network ls
要实现外部访问容器服务,需要暴露端口并配置端口转发规则
none:无网络模式
bridge:默认模式,相当于NAT
host: 公用宿主机Network NameSpace
container: 与其他容器公用Network Namespace
docker跨主机访问-macvlan实现
docker network create --driver macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parnet=eth- macvlan_1
ip link set eth0 promsic on (ubuntu或者其他版本需要)
docker run -it --network macvlan_1 centos:7 /bin/bash
to be continued...
posted on 2021-03-02 14:07 hostage-killer 阅读(48) 评论(0) 收藏 举报
浙公网安备 33010602011771号