Docker于2013年开源,为应用打包、部署平台,而非单纯的虚拟化技术。
Docker之父Solomon Hykes:Docker就好比传统的货运集装箱
Docker是管理容器的引擎
VM VS Container
传统虚拟化与容器技术对比
完全隔离、笨重|安全隔离(做不到完全隔离)、轻量
宿主机上运行虚拟机OS
共享宿主机OS,做不到完全隔离
GuestOS彼此隔离
运行密度:
一般几十个|单机支持上千容器
Docker的优势
把开发者放在第一位:
对于开发人员:构建一次,在任何地方都可以运行。
对于运维人员:配置一次,可以运行任何东西。
容器是如何工作的
客户端
Docker主机、Docker宿主机
通过镜像创建多个容器
Registry仓库
性能:rhel>oel>centos
rpm包
ce是社区版,ee是企业版
镜像的分层结构:
共享宿主的kernel
base镜像提供的是最小的Linux发行版
同一docker主机支持运行多种Linux发行版
采用分层结构的最大好处是:共享资源
CentOS 7上安装docker
https://www.cnblogs.com/yufeng218/p/8370670.html
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@localhost ~]# uname -r
3.10.0-862.el7.x86_64
[root@localhost ~]# sudo yum update
[root@localhost ~]# docker version
-bash: docker: command not found
[root@localhost ~]# sudo yum remove docker docker-common docker-selinux docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-common
No Match for argument: docker-selinux
No Match for argument: docker-engine
No Packages marked for removal
[root@localhost ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-
ce.repo
[root@localhost ~]# yum list docker-ce --showduplicates | sort -r
[root@localhost ~]# sudo yum install docker-ce
Installed:
docker-ce.x86_64 3:19.03.2-3.el7
[root@localhost ~]# sudo systemctl start docker
[root@localhost ~]# sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost ~]# docker version
Client: Docker Engine - Community
Version: 19.03.2
API version: 1.40
Go version: go1.12.8
Git commit: 6a30dfc
Built: Thu Aug 29 05:28:55 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.2
API version: 1.40 (minimum version 1.12)
Go version: go1.12.8
Git commit: 6a30dfc
Built: Thu Aug 29 05:27:34 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
CentOS 7修改默认yum源为阿里云yum源
[root@localhost docker]# yum install -y wget
[root@localhost docker]# vi /etc/yum.repos.d/CentOS-Base.repo
[root@localhost docker]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@localhost docker]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-
7.repo
[root@localhost docker]# yum clean all
[root@localhost docker]# yum makecache
从docker镜像源搜索包含指定关键字的docker镜像
[root@localhost ~]# docker search java
[root@localhost ~]# docker search nginx
[root@localhost ~]# docker search redis
[root@localhost ~]# docker search mongodb
修改默认yum源之前会超时:
[root@localhost ~]# docker search java
Error response from daemon: Get https://index.docker.io/v1/search?q=java&n=25: dial tcp: lookup
index.docker.io on 192.168.199.1:53: read udp 192.168.199.104:52947->192.168.199.1:53: i/o timeout
[root@localhost ~]# docker search nginx
Error response from daemon: Get https://index.docker.io/v1/search?q=nginx&n=25: dial tcp: lookup
index.docker.io on 192.168.199.1:53: read udp 192.168.199.104:37764->192.168.199.1:53: i/o timeout
[root@localhost ~]# docker search redis
Error response from daemon: Get https://index.docker.io/v1/search?q=redis&n=25: dial tcp: lookup
index.docker.io on 192.168.199.1:53: read udp 192.168.199.104:50010->192.168.199.1:53: i/o timeout
[root@localhost ~]# docker search mongodb
Error response from daemon: Get https://index.docker.io/v1/search?q=mongodb&n=25: dial tcp: lookup
index.docker.io on 192.168.199.1:53: read udp 192.168.199.104:58556->192.168.199.1:53: i/o timeout
[root@localhost ~]# docker pull java:8
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting
for connection (Client.Timeout exceeded while awaiting headers)
Ubuntu 18.04.3 LTS安装docker
15 apt-get install apt-transport-https
16 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
17 apt-get install apt-transport-https
18 apt-get install ca-certificates
19 apt-get install curl
20 apt-get install software-properties-common
21 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
22 add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
23 apt-get update
24 apt-get install docker-ce
25 docker version
docker-ce is already the newest version (5:19.03.2~3-0~ubuntu-bionic).
以docker容器方式部署mysql5.7数据库
docker pull mysql:5.7
docker run -p 3306:3306 --name mysqlv57 -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
yiyou@yiyouserver:~$ docker start e0da48dc5e52
e0da48dc5e52
yiyou@yiyouserver:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e0da48dc5e52 mongo "docker-entrypoint.s…" 2 months ago Up 14 seconds 0.0.0.0:27017->27017/tcp mongodb
yiyou@yiyouserver:~$ docker stop e0da48dc5e52
e0da48dc5e52
yiyou@yiyouserver:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
yiyou@yiyouserver:~$
根据NAMES或者CONTAINER ID删除容器
docker rm mysqlv57
docker stop gmtool
gmtool
docker rm gmtool
gmtool
docker start mysqlv2
mysqlv2
docker start mongodb
mongodb
20190912添加:
查看磁盘剩余空间
root@yiyouserver:/home/yiyou/docker# df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 393M 1.5M 391M 1% /run
/dev/sda2 49G 47G 0 100% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/loop0 89M 89M 0 100% /snap/core/7396
/dev/loop1 90M 90M 0 100% /snap/core/7713
tmpfs 393M 0 393M 0% /run/user/1000
启动docker容器失败
root@yiyouserver:/home/yiyou/docker# docker run -it --name yymongodb -p 27017:27017 -v /home/yiyou/docker/mongo/data:/var/lib/mongodb -v /home/yiyou/docker/mongo/log:/var/log/mongodb/mongod.log -v /home/yiyou/docker/mongo/conf:/etc/mongod.conf mongo
2019-09-12T08:30:41.411+0000 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-09-12T08:30:41.420+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=dc3855422607
2019-09-12T08:30:41.420+0000 I CONTROL [initandlisten] db version v4.0.10
2019-09-12T08:30:41.420+0000 I CONTROL [initandlisten] git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766
2019-09-12T08:30:41.420+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
2019-09-12T08:30:41.420+0000 I CONTROL [initandlisten] allocator: tcmalloc
2019-09-12T08:30:41.420+0000 I CONTROL [initandlisten] modules: none
2019-09-12T08:30:41.420+0000 I CONTROL [initandlisten] build environment:
2019-09-12T08:30:41.420+0000 I CONTROL [initandlisten] distmod: ubuntu1604
2019-09-12T08:30:41.420+0000 I CONTROL [initandlisten] distarch: x86_64
2019-09-12T08:30:41.420+0000 I CONTROL [initandlisten] target_arch: x86_64
2019-09-12T08:30:41.420+0000 I CONTROL [initandlisten] options: { net: { bindIpAll: true } }
2019-09-12T08:30:41.422+0000 I STORAGE [initandlisten]
2019-09-12T08:30:41.422+0000 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2019-09-12T08:30:41.422+0000 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2019-09-12T08:30:41.423+0000 I STORAGE [initandlisten] error creating journal dir /data/db/journal boost::filesystem::create_directory: No space left on device: "/data/db/journal"
2019-09-12T08:30:41.424+0000 I STORAGE [initandlisten] exception in initAndListen std::exception: boost::filesystem::create_directory: No space left on device: "/data/db/journal", terminating
2019-09-12T08:30:41.425+0000 I NETWORK [initandlisten] shutdown: going to close listening sockets...
2019-09-12T08:30:41.425+0000 I NETWORK [initandlisten] removing socket file: /tmp/mongodb-27017.sock
2019-09-12T08:30:41.425+0000 I CONTROL [initandlisten] now exiting
2019-09-12T08:30:41.425+0000 I CONTROL [initandlisten] shutting down with code:100
root@yiyouserver:/home/yiyou/docker# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
删除日志后:
root@yiyouserver:/home/yiyou/docker# df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 393M 1.5M 391M 1% /run
/dev/sda2 49G 15G 33G 32% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/loop0 89M 89M 0 100% /snap/core/7396
/dev/loop1 90M 90M 0 100% /snap/core/7713
tmpfs 393M 0 393M 0% /run/user/1000
root@yiyouserver:/home/yiyou/docker# docker rm dc3855422607
dc3855422607
root@yiyouserver:/home/yiyou/docker# docker start bd05293a5145
bd05293a5145
root@yiyouserver:/home/yiyou/docker# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd05293a5145 mongo "docker-entrypoint.s…" 7 minutes ago Up 3 seconds 0.0.0.0:27018->27017/tcp mongobak
e0da48dc5e52 mongo "docker-entrypoint.s…" 2 months ago Up 13 minutes 0.0.0.0:27017->27017/tcp mongodb
20191104:
docker安装redis
拉取镜像
docker pull redis
创建redis容器
docker run -d --name redis --restart always -p 6379:6379 -v /etc/redis/redis.conf:/etc/redis.conf -v /usr/local/redis/data:/data redis --requirepass "123456" #映射配置文件、映射数据目录
docker安装并运行redis
https://www.cnblogs.com/wuxun1997/p/11769867.html
docker pull redis:3.2
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -d redis:3.2 redis-server --appendonly yes
docker exec -it redis redis-cli
127.0.0.1:6379> INFO
127.0.0.1:6379> exit
docker安装并运行memcached
docker pull memcached
docker run -p 11211:11211 --name memcached -d memcached
linux上部署svn服务器:
259 root 2019/11/10 12:00:42 docker pull garethflowers/svn-server
260 root 2019/11/10 12:01:21 docker images
261 root 2019/11/10 12:02:22 docker run --name svn-server -d -v $(pwd)/svndata:/var/opt/svn -p 3690:3690 garethflowers/svn-server
262 root 2019/11/10 12:03:42 docker ps
263 root 2019/11/10 12:30:04 docker exec -it svn-server /bin/sh
svnadmin create whry_hy_server
svn checkout svn://127.0.0.1:3690/whry_hy_server/ --username hanxiaohua
docker exec -it svn-server svn co svn://127.0.0.1/whry_hy_server
/var/opt/svn # svnserve --version
svnserve, version 1.12.2 (r1863366)
compiled Aug 6 2019, 10:07:41 on x86_64-alpine-linux-musl
docker方式部署svn服务
svnserve.conf
[general]
anon-access=none
auth-access=write
password-db=passwd
authz-db=authz
realm = /var/opt/svn/whry_hy_server
passwd
[users]
admin=123456
authz
[groups]
users=admin
[/]
admin = rw
[whry_hy_server:/]
@users = rw
SVN提交之后补写或改写log信息的方法:
chmod 777 pre-revprop-change
或者
chmod 755 pre-revprop-change
:set ff=unix
:wq
vi pre-revprop-change
dos2unix pre-revprop-change
vi pre-revprop-change
容器之间使用scp命令拷贝文件(scp使用大写的-P指定ssh端口号):
root@447a9affcdf5:/home/cpptest# scp -P32022 -r cstest/sql1.cs [email protected]:/home/cpptest/cstest
或者
root@447a9affcdf5:/home/cpptest# scp -P 32022 -r cstest/sql1.cs [email protected]:/home/cpptest/cstest