docker常用命令
镜像仓库
docker login
docker search centos
docker pull centos
docker push centos
镜像
docker images //列出镜像 docker rmi //删除镜像
docker tag centos mycentos //标记本地镜像,将其归入某一仓库。
//保存镜像&载入镜像
docker save -o /root/tomcat.tar mytomcat
docker load -i /root/tomcat.tar
//使用 Dockerfile 创建镜像
docker build -t xxx:latest -f xxx-Dockerfile .
容器
docker ps //running docker ps -a //all docker ps -l //latest docker start p1 docker stop p1
docker rm p1
docker inspect p1 //查看容器信息
docker commit mycentos mytomcat //从容器创建一个新的镜像。
//将文件系统作为一个tar归档文件导出到STDOUT
docker export -o /root/t1.tar t1
//从归档文件中创建镜像。
docker import t1.tar mytomcat:latest
容器相关其他指令
docker run -itd --name c2(容器名字) centos(这是镜像名) /bin/bash //创建容器并运行bash(守护模式) docker exec -it c2 /bin/bash //进入容器交互式窗口并运行bash
docker exec c2 /usr/local/startup.sh //在宿主机执行容器内的脚本 //挂载 -v 宿主机:容器 docker run -itd --name c2 -v /opt:/usr/local/myhtml centos /bin/bash
//查看日志
docker logs c2
# 重启容器
docker restart containerName
//文件拷贝
docker cp 1.txt c2:/root //宿主机-容器
docker cp c2:/root/2.txt /root //容器-宿主机
更多docker命令 https://www.runoob.com/docker/docker-command-manual.html
以下内容转载于 https://www.lenggirl.com/
Docker Hub安装
VMware公司开源的企业级的Docker Registry管理项目:harbor。
有了仓库,我们可以直接push镜像上去,然后从其他地方拉,不用借助U盘。
环境依赖较新的docker1.10+
和docker-compose1.60+
和python2.7
,我们选择离线安装方式:
wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.0-rc3.tgz tar xvf harbor-offline-installer-v1.6.0-rc3.tgz cd harbor
编辑docker-compose.yml
:
proxy:
image: goharbor/nginx-photon:v1.6.0
container_name: nginx
restart: always
volumes:
- ./common/config/nginx:/etc/nginx:z
networks:
- harbor
ports:
- 8888:80
- 1443:443
- 4443:4443
修改common/templates/registry/config.yml
文件加入8888
端口:
vim common/templates/registry/config.yml auth: token: issuer: harbor-token-issuer realm: $public_url:8888/service/token rootcertbundle: /etc/registry/root.crt service: harbor-registry
编辑harbor.cfg
:
hostname = 192.168.152.12 harbor_admin_password = admin
启动并登陆:
sudo su ufw allow 8888 ./prepare docker-compose up -d
打开:http://192.168.152.12:8888,账号|密码:admin
上传镜像到私有仓库
#cd到DockerFile所在目录 docker build -t yourApp:appVersion . docker tag yourApp:appVersion hubIP:8888/lib/yourApp:appVersion docker login hubIP:8888 docker push hubIP/yourApp:appVersion
docker-compose工具安装
curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose --version
docker-compose使用
# cd到docker-compose.yaml目录 docker-compose pull docker-compose up -d # 查看详情 docker-compose ps
docker-compose.yaml示例
version: '2'
services:
your-service-name:
container_name: "my-container-name"
image: yourIP:8888/lib/yourImageName:1.0.0
restart: always
ports:
- "172.17.0.1:hostIP:dockerIP"
environment:
RUN_OPTS: "-conf=/root/cfg/yourApp.ini -logdir=/root/log -logdebug=0"
volumes:
- /opt/server/cfg/yourApp.ini:/root/cfg/yourApp.ini
- /opt/server/api/log:/root/log
关于windows创建镜像的问题
在windows下操作的,所以导致scripts目录下两个sh脚本包含了windows的换行符,从而出现错误$’\r’: command not found 错误。
解决方法: 修改Dockerfile文件
- 1、安装dos2unix*
在安装脚本里面添加安装dos2unix*
RUN yum install -y dos2unix* java-1.8.0-openjdk-devel.x86_64 unzip gettext nmap-ncat openssl, which gnupg, telnet \ && yum clean all -y
- 2、对两个脚本进行转码
在添加脚本后的操作后面添加RUN dos2unix ${}.sh
语句,如下:
# add scripts COPY scripts/ ${ROCKETMQ_HOME}/bin/ RUN chown -R ${uid}:${gid} ${ROCKETMQ_HOME}/bin/ RUN dos2unix ${ROCKETMQ_HOME}/bin/runserver-customize.sh RUN dos2unix ${ROCKETMQ_HOME}/bin/runbroker-customize.sh