Docker基本使用

Docker支持在主流的操作系统平台上使用,包括Ubuntu、CentOS、Windows以及MacOS系统。

Docker支持Centos6及以上的版本

 

安装Docker

对于CentOS6.x系统,使用如下安装命令(对系统的内核有要求至少2.6以上才行,推荐 centos7.0以上):

yum install -y http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm

yum install -y docker-io

对于CentOS7.0以上系统,通过yum安装:yum install -y docker

默认从Docker Hub下载最新镜像命令:

下载最新的版本:docker pull centos 

指定下载版本:docker pull centos:7.1

 

搜寻镜像

搜寻一个jenkins镜像:docker search jenkins

删除镜像:docker rmi id

强制删除镜像:docker rmi -f id

 

创建镜像

创建镜像的方法有三种:基于已有的镜像容器创建、基于本地模板导入、基于Dockerfile创建。

基于已有的镜像容器创建:docker commit -m "info" -a "Author" id repository:tag

基于本地模板导入:cat xxxxxxxxxxxx.tar.gz | docker import - repository:tag   #可在http://openvz.org寻找需要的模板下载到本地

Dockerfile创建:略

 

存出和载入镜像

将某个现有镜像centos:7.1存出:docker save -o centos_7.1.tar centos:7.1

将镜像包导入本地镜像列表:docker load < centos7.1.tar

 

上传镜像

在DockerHub官方注册用户后,默认上传到官方仓库: docker push test:latest

 

创建容器

直接创建容器:docker create -it centos:latest

新建并启动容器:docker run centos -i -t centos:latest /bin/bash   #-t:分配一个伪终端并绑定到容器的标准输入上,-i:让容器标准输入保持打开

例如:docker run -it -d -p 0.0.0.0:33061:3306 --restart=always --name mysql_5.6 -v /dbdata:/dbdata mysql:v5.6 /bin/bash

docker run -it -d -p 8086:8080 --env-file=./env_jdk1.8_tomcat7.list --restart=always --name tomcat_8086 -v /home/sambashare/Tools:/dbdata tomcat:v6.0-v7.0 /bin/bash

docker run -it -d -p 33062:3306 --restart=always --name mysql_33062 -v /home/sambashare/Tools:/dbdata mysql:v5.6_1606018 /bin/bash

docker run -it -p 8080:8080 --env-file=/env_jdk1.8_tomcat8.list --restart=always --name jenkins_8080 -v /home/sambashare/Tools:/dbdata jenkins:v2.7.1 /bin/bash

docker run -it -p 8080:8080 --env-file=/env_jdk1.8_tomcat8.list --restart=always --name jenkins_8080 -v /home/uftp:/dbdata tomcat:v8.0 /bin/bash

docker run -it -d -p 9001:80   -v /etc/localtime:/etc/localtime:ro --restart=always --name nginx_9001 -v /home/uftp/share_nginx_9001:/etc/nginx/nginx.conf nginx:latest /bin/bash

docker run -it -p 80:80 -v `pwd`/www:/www -v `pwd`/config:/etc/nginx/sites-enabled -v `pwd`/logs:/var/log/nginx dockerfile/nginx

 

开启和终止容器

开启容器:docker start id

终止容器:docker stop id  

终止并重启:docker restart id

 

进入容器

docker attach id/name #多个用户同时attach到同一个容器的时候,当某个发生堵塞,其它都用户都无法操作

docker exec -i -t  id /bin/bash #推荐使用

 

删除容器

docker rm id   #-f::强行删除,-l:删除容器的链接,-v:删除容器挂载的数据卷

 

导出和导入容器

导出容器:docker export id > xxxxxx.tar

导入容器:cat xxxxxx.tar | docker import - repository:tag

例如:cat testlink.tar | docker import - testlink:v1.9.14

 

创建和上传私有仓库

创建仓库:docker run -d -p 5000:5000 registry   #若未指定,默认仓库路径在容器/tmp/registry目录下

第一步,创建仓库并指定挂在本地卷:docker run -d -p 5000:5000 -v /dbdata/registry:/tmp/registry registry

查看镜像是否已存在:curl 127.0.0.1:5000/v1/search

第二步,命名本地镜像名称:docker tag docker.io/centos 127.0.0.1:5000/centos

上传私私有仓库:docker push 127.0.0.1:5000/centos

第三步,查看已上传本地库的镜像,ls /dbdata/registry

 

挂载数据卷

挂载一个本地主机文件或目录到容器中作为数据卷:docker run -d -p --name /opt/data:/opt/data centos /bin/bash

数据容器提供其它容器挂载:

第一步,创建一个数据容器:

docker run -it -v /dbdata --name dbdata centos   #-v:在容器中使用该地址若没有自动创建

第二步,开启一个或多个容器并使用数据容器作为数据卷:

docker run -it --volumes-from dbdata --name db1 centos

 

容器互联

开启新的容器,连接到已有的容器:docker run - d -p --name web --link name:alias centos /bin/bash   #--link:参数格式为name:alias,name是指要链接的容器名称,alias是这个连接的别名,可自行定义,链接后会在被链接的容器中 name显示被允许链接的容器名称,例如:web容器要链接db,创建web容器时指定db,被链接容器的name显示为:web/db,表示接受web 容器进来。

 

查看环境信息

docker info

docker version

 

查看镜像或容器详细信息

查看容器IP:docker inspect --format='{{.NetworkSettings.IPAddress}}'  ee36 

查看容器挂载的宿主机目录:docker inspect --format "{{.Volumes}}" o8df

 

容器的4种网络模式:

1.bridge模式

2.host模式

3.container模式

4.none模式

 

容器时间配置

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

其它补充:

从国内镜像库下载:docker pull dl.dockerpool.com:5000/centos

镜像命名别名:docker tag test:latest centos:latest

获取镜像详细信息:docker inspect id

获取镜像详细信息中某个值:docker inspect -f {{".Author"}} id

手动添加防火墙可供外部访问的端口:vi /etc/sysconfig/iptables 添加:-A INPUT -p tcp -m state --state NEW -m tcp --dport 33061 -j ACCEPT

防火墙查看NAT链:iptables -t nat -nL或iptables -t nat -S

Docker创建容器时自动会给防火墙添加一条nat规则:iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 4223 -j DNAT --to-destination 172.17.0.5:80 ! -i docker0

 

firewalld防火网设置类似如下:

新建文件/usr/lib/firewalld/services/jenkins.xml

<?xml version="1.0" encoding="utf-8"?><service>
        <short>Nexus</short>
        <description>Nexus OSS</description>
        <portprotocol="tcp"port="9083"/></service>

修改防火墙设定

firewall-cmd --permanent --add-service=nexus
firewall-cmd --reload

 

容器SSH

容器SSH中运行如下

yum  -y install openssh openssh-clients openssh-server

mkdir -p /var/run/sshd

/usr/sbin/sshd -D &

cp id_rsa.pub authorized_keys

chmod 600 authorized_keys

/etc/ssh/sshd_config RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile      .ssh/authorized_keys 

在当前主机cat id_rsa.pub >> .ssh/authorized_keys

移动authorized_keys到远程主机/root/.ssh/下

ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key

ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

 

强制杀掉tomcat进程脚本

app_key="txncore-connector"

pidlist=`ps -ef|grep tomcat | grep -v "grep"|awk '{print $2}'`

#ps -u $USER|grep "java"|grep -v "grep"

echo "tomcat Id list :$pidlist"

if [ "$pidlist" = "" ]

then

  echo "no tomcat pid alive"

else

  for pid in ${pidlist}

 {

   kill -9 $pid

 echo "KILL $pid:"

 echo "service stop success"

  }

fi

rm -rf /usr/local/tomcat/webapps/$app_key*

 

scp /root/.jenkins/workspace/txncore-connector_8081/target/txncore-connector.war @172.17.0.10:/usr/local/tomcat/webapps

 

ssh 172.17.0.10 -p 22

netstat -tunlp

scp /root/.jenkins/workspace/txncore-connector_8081/target/txncore-connector.war @172.17.0.10:/usr/local/apache-tomcat-6.0.45/webapps

 

ifconfig

cd /usr/local/apache-tomcat-6.0.45/bin

source /etc/profile

./startup.sh

私服启动脚本:

gunicorn --access-logfile /var/log/docker-registry/access.log --error-logfile /var/log/docker-registry/server.log -k gevent --max-requests 100 --graceful-timeout 3600 -b 127.0.0.1:5000 -w 1 docker_registry.wsgi:application

 

gunicorn --access-logfile /var/log/docker-registry/access.log --error-logfile /var/log/docker-registry/server.log -k gevent --max-requests 100 --graceful-timeout 3600 -t 3600 -b localhost:15000 -w 8 docker_registry.wsgi:application

 

创建私服配置文件:

vi /etc/init/docker-registry.conf

description "Docker Registry"

start on runlevel [2345]

stop on runlevel [016]

respawn

respawn limit 10 5

 

script

exec gunicorn --access-logfile /var/log/docker-registry/access.log --error-logfile /var/log/docker-registry/server.log -k gevent --max-requests 100 --graceful-timeout 3600 -t 3600 -b localhost:15000 -w 8 docker_registry.wsgi:application

end script

 

下载私服镜像,启动容器脚本:

docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry --restart=always --name hna-registry registry

问题:上传镜像HTTPS失败

root@Docker-Master:~# docker push 10.3.2.210:5000/redis:1.0

FATA[0000] Error response from daemon: v1 ping attempt failed with error: Get https://10.3.2.210:5000/v1/_ping: tls: oversized record received with length 20527. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 10.3.2.210:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/10.3.2.210:5000/ca.crt

解决办法:

开发客户端执行vi /etc/default/docker 添加 DOCKER_OPTS="--insecure-registry 10.3.2.210:5000"
 

转载于:https://my.oschina.net/jimmylee216/blog/827145

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值